Gwolle Guestbook - Version 2.3.0

Version Description

  • 2017-08-28
  • Add Stop Forum Spam service for anti-spam.
  • GET parameter entry_id with single view is back (back from the dead).
  • Set admin styling to off by default.
  • Remove "display:inline" for span elements, it is default.
  • Don't use 'strip_tags' anymore.
  • Add Metabox on frontend for more action links.
  • Move Edit link and add Ajax icon to metabox in new file gb-metabox.php.
  • Attach event listener to frontend metabox after posting with AJAX.
  • Add option for Admin Avatar (thanks roots84).
  • Add more filters to frontend form.
  • Add filter 'gwolle_gb_entry_read_add_content_before'.
  • Add filter 'gwolle_gb_entries_list_before'.
  • Add action 'gwolle_gb_notsaved_entry_frontend'.
  • Add filter 'gwolle_gb_get_emoji'.
  • Add function 'gwolle_gb_get_entry_ids'.
  • Add callbacks for infinite scroll and AJAX post.
  • Set border between entries to solid instead of dotted.
  • Fix counters on entries.php page.
  • Admin Editor.php uses less globals now.
  • Use esc_html functions for translatable strings.
  • Store entry total for frontend pagination in a transient.
  • Store counter for admin menu in a transient.
  • Add gwolle_gb_is_author function.
  • Small refactor of AJAX JS code.
  • Move functions for settings, user/author, cache and shortcake to their own files.
Download this release

Release Info

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

Version 2.3.0

Files changed (180) hide show
  1. admin/css/gwolle-gb-admin.css +322 -0
  2. admin/css/index.html +0 -0
  3. admin/gb-ajax-management.php +470 -0
  4. admin/gb-dashboard-widget.php +169 -0
  5. admin/gb-page-editor.php +752 -0
  6. admin/gb-page-entries.php +715 -0
  7. admin/gb-page-export.php +218 -0
  8. admin/gb-page-gwolle-gb.php +397 -0
  9. admin/gb-page-import.php +617 -0
  10. admin/gb-page-settings.php +535 -0
  11. admin/gb-pagination.php +117 -0
  12. admin/gb-upgrade.php +496 -0
  13. admin/gfx/entry-admin_reply.png +0 -0
  14. admin/gfx/entry-blue.png +0 -0
  15. admin/gfx/entry-checked.png +0 -0
  16. admin/gfx/entry-spam.png +0 -0
  17. admin/gfx/entry-trash.png +0 -0
  18. admin/gfx/entry-unchecked.png +0 -0
  19. admin/gfx/icon-45x45.png +0 -0
  20. admin/gfx/index.html +0 -0
  21. admin/gfx/loading.gif +0 -0
  22. admin/index.html +0 -0
  23. admin/js/gwolle-gb-admin.js +228 -0
  24. admin/js/index.html +0 -0
  25. admin/tabs/gb-admintab.php +75 -0
  26. admin/tabs/gb-antispamtab.php +241 -0
  27. admin/tabs/gb-debugtab.php +94 -0
  28. admin/tabs/gb-emailtab.php +271 -0
  29. admin/tabs/gb-formtab.php +283 -0
  30. admin/tabs/gb-readingtab.php +286 -0
  31. admin/tabs/gb-uninstalltab.php +90 -0
  32. admin/tabs/index.html +0 -0
  33. changelog-v0.txt +146 -0
  34. changelog-v1.txt +664 -0
  35. docs/actions/gwolle_gb_notsaved_entry_frontend.txt +29 -0
  36. docs/actions/gwolle_gb_save_entry_admin.txt +34 -0
  37. docs/actions/gwolle_gb_save_entry_frontend.txt +28 -0
  38. docs/actions/index.html +0 -0
  39. docs/filters/gwolle_gb_admin_reply_header.txt +25 -0
  40. docs/filters/gwolle_gb_antispam_label.txt +25 -0
  41. docs/filters/gwolle_gb_author_email_label.txt +25 -0
  42. docs/filters/gwolle_gb_author_email_prefill.txt +25 -0
  43. docs/filters/gwolle_gb_author_link_rel.txt +24 -0
  44. docs/filters/gwolle_gb_author_link_to_buddypress.txt +25 -0
  45. docs/filters/gwolle_gb_author_name_html.txt +43 -0
  46. docs/filters/gwolle_gb_author_name_label.txt +25 -0
  47. docs/filters/gwolle_gb_author_name_prefill.txt +25 -0
  48. docs/filters/gwolle_gb_author_origin_label.txt +25 -0
  49. docs/filters/gwolle_gb_author_website_label.txt +25 -0
  50. docs/filters/gwolle_gb_author_website_prefill.txt +25 -0
  51. docs/filters/gwolle_gb_bbode_link_rel.txt +24 -0
  52. docs/filters/gwolle_gb_button.txt +29 -0
  53. docs/filters/gwolle_gb_content_label.txt +25 -0
  54. docs/filters/gwolle_gb_entries_list_before.txt +25 -0
  55. docs/filters/gwolle_gb_entries_list_class.txt +25 -0
  56. docs/filters/gwolle_gb_entries_read.txt +27 -0
  57. docs/filters/gwolle_gb_entry_class.txt +25 -0
  58. docs/filters/gwolle_gb_entry_metabox_lines.txt +32 -0
  59. docs/filters/gwolle_gb_entry_read.txt +27 -0
  60. docs/filters/gwolle_gb_entry_read_add_after.txt +24 -0
  61. docs/filters/gwolle_gb_entry_read_add_before.txt +24 -0
  62. docs/filters/gwolle_gb_entry_read_add_content.txt +24 -0
  63. docs/filters/gwolle_gb_entry_read_add_content_before.txt +24 -0
  64. docs/filters/gwolle_gb_entry_save.txt +26 -0
  65. docs/filters/gwolle_gb_entry_widget_add_after.txt +24 -0
  66. docs/filters/gwolle_gb_entry_widget_add_before.txt +24 -0
  67. docs/filters/gwolle_gb_entry_widget_add_content.txt +24 -0
  68. docs/filters/gwolle_gb_error_fields.txt +25 -0
  69. docs/filters/gwolle_gb_errors.txt +24 -0
  70. docs/filters/gwolle_gb_formdata.txt +25 -0
  71. docs/filters/gwolle_gb_get_emoji.txt +33 -0
  72. docs/filters/gwolle_gb_get_entries_sql.txt +27 -0
  73. docs/filters/gwolle_gb_get_moderators_role__in.txt +25 -0
  74. docs/filters/gwolle_gb_mail_author_on_admin_reply_subject.txt +25 -0
  75. docs/filters/gwolle_gb_mail_author_subject.txt +25 -0
  76. docs/filters/gwolle_gb_mail_moderator_subject.txt +25 -0
  77. docs/filters/gwolle_gb_messages.txt +25 -0
  78. docs/filters/gwolle_gb_multisite_uninstall.txt +27 -0
  79. docs/filters/gwolle_gb_read_no_entries.txt +25 -0
  80. docs/filters/gwolle_gb_read_num_entries.txt +25 -0
  81. docs/filters/gwolle_gb_rss_nr_entries.txt +24 -0
  82. docs/filters/gwolle_gb_set_author_ip.txt +24 -0
  83. docs/filters/gwolle_gb_widget.txt +27 -0
  84. docs/filters/gwolle_gb_widget_item_class.txt +25 -0
  85. docs/filters/gwolle_gb_widget_list_class.txt +25 -0
  86. docs/filters/gwolle_gb_wpadmin_url.txt +25 -0
  87. docs/filters/gwolle_gb_write.txt +27 -0
  88. docs/filters/gwolle_gb_write_add_after.txt +24 -0
  89. docs/filters/gwolle_gb_write_add_after_antispam.txt +24 -0
  90. docs/filters/gwolle_gb_write_add_after_captcha.txt +24 -0
  91. docs/filters/gwolle_gb_write_add_after_content.txt +24 -0
  92. docs/filters/gwolle_gb_write_add_after_email.txt +24 -0
  93. docs/filters/gwolle_gb_write_add_after_name.txt +24 -0
  94. docs/filters/gwolle_gb_write_add_after_origin.txt +24 -0
  95. docs/filters/gwolle_gb_write_add_after_submit.txt +24 -0
  96. docs/filters/gwolle_gb_write_add_after_website.txt +24 -0
  97. docs/filters/gwolle_gb_write_add_before.txt +24 -0
  98. docs/filters/gwolle_gb_write_add_form.txt +24 -0
  99. docs/filters/index.html +0 -0
  100. docs/import_example/gwolle_gb_export_1.6.9_2016-05-06_20-38.csv +3 -0
  101. docs/import_example/index.html +0 -0
  102. docs/index.html +0 -0
  103. frontend/css/gwolle-gb-frontend.css +377 -0
  104. frontend/css/index.html +0 -0
  105. frontend/gb-ajax-captcha.php +45 -0
  106. frontend/gb-ajax-infinite_scroll.php +97 -0
  107. frontend/gb-form-ajax.php +47 -0
  108. frontend/gb-form-posthandling.php +441 -0
  109. frontend/gb-form.php +502 -0
  110. frontend/gb-pagination.php +103 -0
  111. frontend/gb-read.php +201 -0
  112. frontend/gb-rss.php +151 -0
  113. frontend/gb-shortcode-widget.php +130 -0
  114. frontend/gb-shortcodes.php +148 -0
  115. frontend/gb-widget.php +447 -0
  116. frontend/gwolle_gb-entry.php +239 -0
  117. frontend/images/index.html +0 -0
  118. frontend/images/loading.gif +0 -0
  119. frontend/index.html +0 -0
  120. frontend/js/captcha.js +32 -0
  121. frontend/js/gwolle-gb-frontend.js +262 -0
  122. frontend/js/index.html +0 -0
  123. frontend/js/sss/license.txt +14 -0
  124. frontend/js/sss/sss.js +120 -0
  125. frontend/markitup/images/bold.png +0 -0
  126. frontend/markitup/images/clean.png +0 -0
  127. frontend/markitup/images/emoji.png +0 -0
  128. frontend/markitup/images/handle.png +0 -0
  129. frontend/markitup/images/image.png +0 -0
  130. frontend/markitup/images/index.html +0 -0
  131. frontend/markitup/images/italic.png +0 -0
  132. frontend/markitup/images/link.png +0 -0
  133. frontend/markitup/images/list-bullet.png +0 -0
  134. frontend/markitup/images/list-numeric.png +0 -0
  135. frontend/markitup/images/picture.png +0 -0
  136. frontend/markitup/index.html +0 -0
  137. frontend/markitup/jquery.markitup.js +665 -0
  138. frontend/markitup/set.js +67 -0
  139. frontend/markitup/style.css +182 -0
  140. functions/gb-akismet.php +142 -0
  141. functions/gb-bbcode_emoji.php +190 -0
  142. functions/gb-cache.php +59 -0
  143. functions/gb-class-entry.php +656 -0
  144. functions/gb-debug.php +151 -0
  145. functions/gb-formatting.php +89 -0
  146. functions/gb-get_entries.php +454 -0
  147. functions/gb-get_entry_count.php +119 -0
  148. functions/gb-log.php +250 -0
  149. functions/gb-mail.php +276 -0
  150. functions/gb-messages.php +156 -0
  151. functions/gb-metabox.php +45 -0
  152. functions/gb-misc.php +99 -0
  153. functions/gb-post-meta.php +95 -0
  154. functions/gb-settings.php +124 -0
  155. functions/gb-shortcake.php +37 -0
  156. functions/gb-single-view.php +48 -0
  157. functions/gb-stop-forum-spam.php +77 -0
  158. functions/gb-user.php +168 -0
  159. functions/index.html +0 -0
  160. gwolle-gb-hooks.php +245 -0
  161. gwolle-gb.php +168 -0
  162. index.html +0 -0
  163. lang/gwolle-gb-bg_BG.mo +0 -0
  164. lang/gwolle-gb-bg_BG.po +2017 -0
  165. lang/gwolle-gb-cs_CZ.mo +0 -0
  166. lang/gwolle-gb-cs_CZ.po +1784 -0
  167. lang/gwolle-gb-da_DK.mo +0 -0
  168. lang/gwolle-gb-da_DK.po +1997 -0
  169. lang/gwolle-gb-el.mo +0 -0
  170. lang/gwolle-gb-el.po +2069 -0
  171. lang/gwolle-gb-es_ES.mo +0 -0
  172. lang/gwolle-gb-es_ES.po +717 -0
  173. lang/gwolle-gb-nb_NO.mo +0 -0
  174. lang/gwolle-gb-nb_NO.po +2283 -0
  175. lang/gwolle-gb-pt_BR.mo +0 -0
  176. lang/gwolle-gb-pt_BR.po +2431 -0
  177. lang/gwolle-gb-pt_PT.mo +0 -0
  178. lang/gwolle-gb-pt_PT.po +1896 -0
  179. lang/gwolle-gb-sk_SK.mo +0 -0
  180. lang/gwolle-gb-sk_SK.po +449 -0
admin/css/gwolle-gb-admin.css ADDED
@@ -0,0 +1,322 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /*
3
+ * CSS for the admin part of Gwolle GB Guestbook.
4
+ */
5
+
6
+
7
+ .gwolle-gb {
8
+ clear: both;
9
+ }
10
+
11
+ .gwolle_gb_hide {
12
+ display: none;
13
+ }
14
+
15
+ /* Menu Icon */
16
+ #icon-gwolle-gb {
17
+ background-image: url('../gfx/icon-45x45.png');
18
+ background-repeat: no-repeat;
19
+ margin: 0 10px;
20
+ float: left;
21
+ width: 45px;
22
+ height: 42px;
23
+ }
24
+
25
+
26
+ /* Welcome page */
27
+
28
+ body #dashboard-widgets .postbox#gwolle_gb_notification form p.submit {
29
+ margin: 1em 0;
30
+ }
31
+ body #dashboard-widgets .postbox#gwolle_gb_notification ul {
32
+ font-size: 84%;
33
+ font-style: italic;
34
+ list-style-type: disc;
35
+ padding-left: 14px;
36
+ }
37
+
38
+
39
+ /* Editor.php */
40
+
41
+ #gwolle_gb_editor #normal-sortables .postbox input[type="text"],
42
+ #gwolle_gb_editor #normal-sortables .postbox input[type="url"],
43
+ #gwolle_gb_editor #normal-sortables .postbox textarea {
44
+ width: 100%;
45
+ max-width: 500px;
46
+ clear: both;
47
+ }
48
+ #gwolle_gb_editor .postbox textarea {
49
+ display: block;
50
+ }
51
+
52
+ .gwolle_gb_emoji,
53
+ .gwolle_gb_admin_reply_emoji {
54
+ width: 100%;
55
+ max-width: 500px;
56
+ clear: both;
57
+ }
58
+
59
+ #gwolle_gb_editor .postbox #gwolle_gb_frontend {
60
+ margin-bottom: 1em;
61
+ }
62
+ #gwolle_gb_editor .postbox #publishing-action {
63
+ margin-top: 1em;
64
+ }
65
+
66
+ #gwolle_gb_editor .gwolle_gb_edit_meta_inputs {
67
+ display: none;
68
+ }
69
+
70
+ /* Editor Log */
71
+ #gwolle_gb_editor #gwolle_gb_editor_postbox_logs {
72
+ max-height: 400px;
73
+ overflow: auto;
74
+ }
75
+
76
+ /* Preview */
77
+ #gwolle_gb_editor_postbox_preview .gb-entry.gb-entry-count_0 {
78
+ border-width: 0px;
79
+ }
80
+ #gwolle_gb_editor_postbox_preview .gb-metabox {
81
+ border-top: 1px #ddd solid;
82
+ }
83
+
84
+
85
+ /* Entries.php */
86
+
87
+ /* Page Navigation */
88
+ .gwolle_gb .tablenav .tablenav-pages a {
89
+ display: inline;
90
+ padding: 4px 6px 4px;
91
+ margin-left: 4px;
92
+ }
93
+ .gwolle_gb .tablenav .tablenav-pages span.current {
94
+ display: inline;
95
+ padding: 4px 6px 4px;
96
+ margin-left: 4px;
97
+ border: 1px solid #ccc;
98
+ font-size: 16px;
99
+ line-height: 1;
100
+ }
101
+ .gwolle_gb .tablenav .tablenav-pages span.dots {
102
+ margin-left: 4px;
103
+ }
104
+ /* Table */
105
+ #gwolle_gb_entries th {
106
+ white-space: nowrap;
107
+ }
108
+ .gwolle_gb .id,
109
+ .gwolle_gb .check {
110
+ min-width: 12px;
111
+ }
112
+ .gwolle_gb .entry-date,
113
+ .gwolle_gb .entry-author-name {
114
+ min-width: 92px;
115
+ }
116
+ .gwolle_gb td.entry-author-name{
117
+ word-break: break-word;
118
+ }
119
+ .gwolle_gb td.entry-content {
120
+ word-break: break-all;
121
+ word-wrap: break-word;
122
+ }
123
+
124
+ .gwolle_gb .entry-checked,
125
+ .gwolle_gb .entry-unchecked,
126
+ .gwolle_gb .entry-loading {
127
+ background-repeat: no-repeat;
128
+ background-position: 0px 6px;
129
+ width: 10px;
130
+ cursor: move;
131
+ }
132
+
133
+ .gwolle_gb #gwolle_gb_entries .admin-entry {
134
+ color: #333;
135
+ background-color: #e6e6e6;
136
+ background-repeat: repeat-x;
137
+ background-image: -moz-linear-gradient(top, #f4f4f4, #e6e6e6);
138
+ background-image: -ms-linear-gradient(top, #f4f4f4, #e6e6e6);
139
+ background-image: -webkit-linear-gradient(top, #f4f4f4, #e6e6e6);
140
+ background-image: -o-linear-gradient(top, #f4f4f4, #e6e6e6);
141
+ background-image: linear-gradient(top, #f4f4f4, #e6e6e6);
142
+ }
143
+
144
+ /* Entries actions */
145
+ td.gwolle_gb_actions {
146
+ min-width: 130px;
147
+ }
148
+
149
+ span.book-icon a {
150
+ padding: 0 10px; /* Make it clickable */
151
+ }
152
+
153
+
154
+ /* Icons on entries.php and editor.php */
155
+ .gwolle_gb td.entry-icons {
156
+ min-width: 50px;
157
+ }
158
+ .gwolle_gb .visible-icon,
159
+ .gwolle_gb .invisible-icon,
160
+ .gwolle_gb .spam-icon,
161
+ .gwolle_gb .trash-icon,
162
+ .gwolle_gb .entry-icons .gwolle_gb_ajax {
163
+ display: none;
164
+ width: 16px;
165
+ height: 16px;
166
+ margin-right: 5px;
167
+ }
168
+ .gwolle_gb .visible .visible-icon {
169
+ display: inline-block;
170
+ background-image: url('../gfx/entry-checked.png');
171
+ }
172
+ .gwolle_gb .invisible .invisible-icon {
173
+ display: inline-block;
174
+ background-image: url('../gfx/entry-unchecked.png');
175
+ }
176
+ .gwolle_gb .spam .spam-icon {
177
+ display: inline-block;
178
+ background-image: url('../gfx/entry-spam.png');
179
+ }
180
+ .gwolle_gb .trash .trash-icon {
181
+ display: inline-block;
182
+ background-image: url('../gfx/entry-trash.png');
183
+ }
184
+ .gwolle_gb .admin_reply-icon {
185
+ display: inline-block;
186
+ width: 16px;
187
+ height: 16px;
188
+ margin-right: 5px;
189
+ background-image: url('../gfx/entry-admin_reply.png');
190
+ }
191
+
192
+ /* AJAX */
193
+ .gwolle_gb .entry-icons .gwolle_gb_ajax {
194
+ background-image: url('../gfx/loading.gif'); /* Small icon for entries list */
195
+ }
196
+
197
+ .gwolle_gb tr.entry td span {
198
+ vertical-align: middle;
199
+ }
200
+
201
+ /* Overwrite CSS rules from other plugins */
202
+ .gwolle_gb .invisible {
203
+ visibility: visible !important;
204
+ }
205
+
206
+
207
+ /* Settings page */
208
+
209
+ /* Tabs */
210
+ form.gwolle_gb_options {
211
+ display: none;
212
+ }
213
+ form.gwolle_gb_options.active {
214
+ display: block;
215
+ }
216
+
217
+
218
+ /* Forms tab */
219
+ .gwolle_gb_options th.narrow,
220
+ .gwolle_gb_options td.narrow {
221
+ width: 100px;
222
+ }
223
+
224
+
225
+ /* Dashboard Widget */
226
+
227
+ #gwolle_gb_dashboard .inside {
228
+ margin-top: 4px;
229
+ }
230
+ #gwolle_gb_dashboard .comment {
231
+ padding-top: 3px;
232
+ }
233
+ #gwolle_gb_dashboard .date {
234
+ font-size: 82%;
235
+ }
236
+ #gwolle_gb_dashboard blockquote.excerpt {
237
+ margin: 0;
238
+ }
239
+ #gwolle_gb_dashboard .excerpt p {
240
+ margin: 4px 0;
241
+ }
242
+
243
+ #gwolle_gb_dashboard p.row-actions {
244
+ margin: 0;
245
+ padding-bottom: 4px;
246
+ }
247
+
248
+ #gwolle_gb_dashboard .admin-entry {
249
+ color: #333;
250
+ background-color: #e6e6e6;
251
+ background-repeat: repeat-x;
252
+ background-image: -moz-linear-gradient(top, #f4f4f4, #e6e6e6);
253
+ background-image: -ms-linear-gradient(top, #f4f4f4, #e6e6e6);
254
+ background-image: -webkit-linear-gradient(top, #f4f4f4, #e6e6e6);
255
+ background-image: -o-linear-gradient(top, #f4f4f4, #e6e6e6);
256
+ background-image: linear-gradient(top, #f4f4f4, #e6e6e6);
257
+ }
258
+
259
+
260
+ /* AJAX on Entries Page and on Dashboard Widget */
261
+ span.gwolle_gb_check,
262
+ span.gwolle_gb_uncheck,
263
+ span.gwolle_gb_spam,
264
+ span.gwolle_gb_unspam,
265
+ span.gwolle_gb_trash,
266
+ span.gwolle_gb_untrash,
267
+ span.gwolle_gb_ajax {
268
+ display: none;
269
+ }
270
+ .unchecked span.gwolle_gb_check {
271
+ display: inline;
272
+ }
273
+ .checked span.gwolle_gb_uncheck {
274
+ display: inline;
275
+ }
276
+ .nospam span.gwolle_gb_spam {
277
+ display: inline;
278
+ }
279
+ .spam span.gwolle_gb_unspam {
280
+ display: inline;
281
+ }
282
+ .notrash span.gwolle_gb_trash {
283
+ display: inline;
284
+ }
285
+ .trash span.gwolle_gb_untrash {
286
+ display: inline;
287
+ }
288
+
289
+ /* Admin Bar */
290
+ /* Remember, the icon gets only loaded on our own admin pages... */
291
+ #wpadminbar #wp-admin-bar-gwolle-gb .ab-icon::before {
292
+ content: "";
293
+ top: 3px;
294
+ }
295
+
296
+
297
+ /* Export page */
298
+ #gwolle_gb_export .gwolle_gb_export_gif_container {
299
+ position: relative;
300
+ }
301
+ #gwolle_gb_export .gwolle_gb_export_gif {
302
+ display: inline-block;
303
+ visibility: hidden;
304
+ background-image: url("../../frontend/images/loading.gif"); /* Big icon like the frontend */
305
+ background-repeat: no-repeat;
306
+ width: 32px;
307
+ height: 32px;
308
+ line-height: 32px;
309
+ position: absolute;
310
+ bottom: 0;
311
+ left: 150px;
312
+
313
+ }
314
+
315
+
316
+ /* Add-On */
317
+ form.gwolle_gb_options.gwolle_gb_social img {
318
+ margin-bottom: -8px;
319
+ }
320
+ form.gwolle_gb_options.gwolle_gb_strings td {
321
+ padding-left: 0px;
322
+ }
admin/css/index.html ADDED
File without changes
admin/gb-ajax-management.php ADDED
@@ -0,0 +1,470 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * ajax.php
4
+ * Processes AJAX requests.
5
+ */
6
+
7
+
8
+ // No direct calls to this script
9
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
10
+ die('No direct calls allowed!');
11
+ }
12
+
13
+
14
+ /*
15
+ * Add JavaScript to the admin Footer so we can do Ajax.
16
+ */
17
+ add_action( 'admin_footer', 'gwolle_gb_ajax_javascript' );
18
+ function gwolle_gb_ajax_javascript() {
19
+ if ( function_exists('current_user_can') && ! current_user_can('moderate_comments') ) {
20
+ return;
21
+ }
22
+
23
+ // Set Your Nonce
24
+ $ajax_nonce = wp_create_nonce( 'gwolle_gb_ajax' ); ?>
25
+
26
+ <script>
27
+ jQuery( document ).ready( function( $ ) {
28
+
29
+ // Page-entries.php Admin page Click events
30
+ jQuery( '#gwolle_gb_entries .gwolle_gb_actions a' ).click(function(event) {
31
+
32
+ // Do not do anything here...
33
+ var parent_class = jQuery(this).parent().hasClass('gwolle_gb_edit');
34
+ if (parent_class) {
35
+ //console.log('gwolle_gb_edit');
36
+ return;
37
+ }
38
+ var parent_class = jQuery(this).parent().hasClass('gwolle_gb_ajax');
39
+ if (parent_class) {
40
+ //console.log('gwolle_gb_ajax');
41
+ return;
42
+ }
43
+
44
+
45
+ // Set up data to send
46
+ var a_el_id = jQuery(this).attr('id');
47
+ var entry_id = a_el_id;
48
+ entry_id = entry_id.replace(/uncheck_/,'');
49
+ entry_id = entry_id.replace(/check_/,'');
50
+ entry_id = entry_id.replace(/unspam_/,'');
51
+ entry_id = entry_id.replace(/spam_/,'');
52
+ entry_id = entry_id.replace(/untrash_/,'');
53
+ entry_id = entry_id.replace(/trash_/,'');
54
+ var setter = a_el_id.replace(new RegExp( "_" + entry_id, "g"), '');
55
+
56
+ var data = {
57
+ action: 'gwolle_gb_ajax',
58
+ security: '<?php echo $ajax_nonce; ?>',
59
+ id: entry_id,
60
+ setter: setter
61
+ };
62
+
63
+
64
+ // Set Ajax icon on visible
65
+ jQuery( 'tr#entry_' + entry_id + ' .gwolle_gb_ajax' ).css('display', 'inline-block');
66
+
67
+
68
+ // Do the actual request
69
+ $.post( ajaxurl, data, function( response ) {
70
+ response = jQuery.trim( response );
71
+
72
+ // Set classes accordingly
73
+ if ( response == setter ) { // We got what we wanted
74
+
75
+ // Countdown counter in admin menu, toolbar and top menu
76
+ if ( jQuery( 'tr#entry_' + entry_id ).hasClass('unchecked') && jQuery( 'tr#entry_' + entry_id ).hasClass('nospam') && jQuery( 'tr#entry_' + entry_id ).hasClass('notrash') ) {
77
+ var gwolle_gb_menu_counter = jQuery('li#toplevel_page_gwolle-gb-gwolle-gb a.menu-top span.theme-count').text();
78
+ var old_gwolle_gb_menu_counter = new Number( gwolle_gb_menu_counter );
79
+ var new_gwolle_gb_menu_counter = old_gwolle_gb_menu_counter - 1;
80
+ var new_gwolle_gb_menu_counter_str = new_gwolle_gb_menu_counter.toString();
81
+
82
+ jQuery('li#toplevel_page_gwolle-gb-gwolle-gb span.theme-count').text( new_gwolle_gb_menu_counter );
83
+ jQuery('li#wp-admin-bar-gwolle-gb span.awaiting-mod.pending-count').text( new_gwolle_gb_menu_counter );
84
+ jQuery('ul.subsubsub span.count.gwolle_gb_new').text( '(' + new_gwolle_gb_menu_counter_str + ')' );
85
+ }
86
+
87
+ switch ( response ) {
88
+ // Possible classes: nospam notrash checked visible spam trash unchecked invisible
89
+ case 'uncheck':
90
+ jQuery( 'tr#entry_' + entry_id ).addClass('unchecked').removeClass('checked');
91
+ break;
92
+ case 'check':
93
+ jQuery( 'tr#entry_' + entry_id ).addClass('checked').removeClass('unchecked');
94
+ break;
95
+ case 'unspam':
96
+ jQuery( 'tr#entry_' + entry_id ).addClass('nospam').removeClass('spam');
97
+ break;
98
+ case 'spam':
99
+ jQuery( 'tr#entry_' + entry_id ).addClass('spam').removeClass('nospam');
100
+ break;
101
+ case 'untrash':
102
+ jQuery( 'tr#entry_' + entry_id ).addClass('notrash').removeClass('trash');
103
+ break;
104
+ case 'trash':
105
+ jQuery( 'tr#entry_' + entry_id ).addClass('trash').removeClass('notrash');
106
+ break;
107
+ }
108
+
109
+ // Set to visible or invisible respectively
110
+ if ( jQuery( 'tr#entry_' + entry_id ).hasClass('checked') && jQuery( 'tr#entry_' + entry_id ).hasClass('nospam') && jQuery( 'tr#entry_' + entry_id ).hasClass('notrash') ) {
111
+ jQuery( 'tr#entry_' + entry_id ).addClass('visible').removeClass('invisible');
112
+ } else {
113
+ jQuery( 'tr#entry_' + entry_id ).addClass('invisible').removeClass('visible');
114
+ }
115
+
116
+ // Countup counter in admin menu, toolbar and top menu
117
+ if ( jQuery( 'tr#entry_' + entry_id ).hasClass('unchecked') && jQuery( 'tr#entry_' + entry_id ).hasClass('nospam') && jQuery( 'tr#entry_' + entry_id ).hasClass('notrash') ) {
118
+ var gwolle_gb_menu_counter = jQuery('li#toplevel_page_gwolle-gb-gwolle-gb a.menu-top span.theme-count').text();
119
+ var old_gwolle_gb_menu_counter = new Number( gwolle_gb_menu_counter );
120
+ var new_gwolle_gb_menu_counter = old_gwolle_gb_menu_counter + 1;
121
+ var new_gwolle_gb_menu_counter_str = new_gwolle_gb_menu_counter.toString();
122
+
123
+ jQuery('li#toplevel_page_gwolle-gb-gwolle-gb span.theme-count').text( new_gwolle_gb_menu_counter );
124
+ jQuery('li#wp-admin-bar-gwolle-gb span.awaiting-mod.pending-count').text( new_gwolle_gb_menu_counter );
125
+ jQuery('ul.subsubsub span.count.gwolle_gb_new').text( '(' + new_gwolle_gb_menu_counter_str + ')' );
126
+ }
127
+
128
+ } else {
129
+ // Error or unexpected answer...
130
+ jQuery( 'tr#entry_' + entry_id + ' .gwolle_gb_ajax a' ).append(' (error)');
131
+ event.preventDefault();
132
+ return;
133
+ }
134
+
135
+ // Hide Ajax icon again
136
+ jQuery( 'tr#entry_' + entry_id + ' .gwolle_gb_ajax' ).css('display', 'none');
137
+ });
138
+
139
+ event.preventDefault();
140
+ });
141
+
142
+
143
+ // Page-editor.php Admin page Click events
144
+ jQuery( '#gwolle_gb_editor .gwolle_gb_actions a' ).click(function(event) {
145
+
146
+ // Do not do anything here...
147
+ var parent_class = jQuery(this).parent().hasClass('gwolle_gb_ajax');
148
+ if (parent_class) {
149
+ //console.log('gwolle_gb_ajax');
150
+ return;
151
+ }
152
+
153
+
154
+ // Set up data to send
155
+ var a_el_id = jQuery(this).attr('id');
156
+ var entry_id = a_el_id;
157
+ entry_id = entry_id.replace(/uncheck_/,'');
158
+ entry_id = entry_id.replace(/check_/,'');
159
+ entry_id = entry_id.replace(/unspam_/,'');
160
+ entry_id = entry_id.replace(/spam_/,'');
161
+ entry_id = entry_id.replace(/untrash_/,'');
162
+ entry_id = entry_id.replace(/trash_/,'');
163
+ var setter = a_el_id.replace(new RegExp( "_" + entry_id, "g"), '');
164
+
165
+ var data = {
166
+ action: 'gwolle_gb_ajax',
167
+ security: '<?php echo $ajax_nonce; ?>',
168
+ id: entry_id,
169
+ setter: setter
170
+ };
171
+
172
+
173
+ // Set Ajax icon on visible
174
+ jQuery( '.gwolle_gb_ajax' ).css('display', 'inline-block');
175
+
176
+
177
+ // Do the actual request
178
+ $.post( ajaxurl, data, function( response ) {
179
+ response = jQuery.trim( response );
180
+
181
+ // Set classes accordingly
182
+ if ( response == setter ) { // We got what we wanted
183
+
184
+ // Countdown counter in admin menu, toolbar
185
+ if ( jQuery( '.gwolle_gb_actions' ).hasClass('unchecked') && jQuery( '.gwolle_gb_actions' ).hasClass('nospam') && jQuery( '.gwolle_gb_actions' ).hasClass('notrash') ) {
186
+ var gwolle_gb_menu_counter = jQuery('li#toplevel_page_gwolle-gb-gwolle-gb a.menu-top span.theme-count').text();
187
+ var old_gwolle_gb_menu_counter = new Number( gwolle_gb_menu_counter );
188
+ var new_gwolle_gb_menu_counter = old_gwolle_gb_menu_counter - 1;
189
+
190
+ jQuery('li#toplevel_page_gwolle-gb-gwolle-gb span.theme-count').text( new_gwolle_gb_menu_counter );
191
+ jQuery('li#wp-admin-bar-gwolle-gb span.awaiting-mod.pending-count').text( new_gwolle_gb_menu_counter );
192
+ }
193
+
194
+ switch ( response ) {
195
+ // Possible classes: nospam notrash checked visible spam trash unchecked invisible
196
+ case 'uncheck':
197
+ jQuery( '.entry-icons' ).addClass('unchecked').removeClass('checked');
198
+ jQuery( '.gwolle_gb_actions' ).addClass('unchecked').removeClass('checked');
199
+ jQuery( 'input#ischecked' ).prop('checked', false);
200
+ break;
201
+ case 'check':
202
+ jQuery( '.entry-icons' ).addClass('checked').removeClass('unchecked');
203
+ jQuery( '.gwolle_gb_actions' ).addClass('checked').removeClass('unchecked');
204
+ jQuery( 'input#ischecked' ).prop('checked', true);
205
+ break;
206
+ case 'unspam':
207
+ jQuery( '.entry-icons' ).addClass('nospam').removeClass('spam');
208
+ jQuery( '.gwolle_gb_actions' ).addClass('nospam').removeClass('spam');
209
+ jQuery( 'input#isspam' ).prop('checked', false);
210
+ break;
211
+ case 'spam':
212
+ jQuery( '.entry-icons' ).addClass('spam').removeClass('nospam');
213
+ jQuery( '.gwolle_gb_actions' ).addClass('spam').removeClass('nospam');
214
+ jQuery( 'input#isspam' ).prop('checked', true);
215
+ break;
216
+ case 'untrash':
217
+ jQuery( '.entry-icons' ).addClass('notrash').removeClass('trash');
218
+ jQuery( '.gwolle_gb_actions' ).addClass('notrash').removeClass('trash');
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
+
233
+ // Set to visible or invisible respectively
234
+ if ( jQuery( '.gwolle_gb_actions' ).hasClass('checked') && jQuery( '.gwolle_gb_actions' ).hasClass('nospam') && jQuery( '.gwolle_gb_actions' ).hasClass('notrash') ) {
235
+ jQuery( '.entry-icons' ).addClass('visible').removeClass('invisible');
236
+ jQuery( '.gwolle_gb_actions' ).addClass('visible').removeClass('invisible');
237
+ jQuery( '.h3_invisible' ).css('display', 'none');
238
+ jQuery( '.h3_visible' ).css('display', 'block');
239
+ } else {
240
+ jQuery( '.entry-icons' ).addClass('invisible').removeClass('visible');
241
+ jQuery( '.gwolle_gb_actions' ).addClass('invisible').removeClass('visible');
242
+ jQuery( '.h3_visible' ).css('display', 'none');
243
+ jQuery( '.h3_invisible' ).css('display', 'block');
244
+ }
245
+
246
+ // Countup counter in admin menu, toolbar
247
+ if ( jQuery( '.gwolle_gb_actions' ).hasClass('unchecked') && jQuery( '.gwolle_gb_actions' ).hasClass('nospam') && jQuery( '.gwolle_gb_actions' ).hasClass('notrash') ) {
248
+ var gwolle_gb_menu_counter = jQuery('li#toplevel_page_gwolle-gb-gwolle-gb a.menu-top span.theme-count').text();
249
+ var old_gwolle_gb_menu_counter = new Number( gwolle_gb_menu_counter );
250
+ var new_gwolle_gb_menu_counter = old_gwolle_gb_menu_counter + 1;
251
+
252
+ jQuery('li#toplevel_page_gwolle-gb-gwolle-gb span.theme-count').text( new_gwolle_gb_menu_counter );
253
+ jQuery('li#wp-admin-bar-gwolle-gb span.awaiting-mod.pending-count').text( new_gwolle_gb_menu_counter );
254
+ }
255
+
256
+ } else {
257
+ // Error or unexpected answer...
258
+ jQuery( '.gwolle_gb_ajax a' ).append(' (error)');
259
+ event.preventDefault();
260
+ return;
261
+ }
262
+
263
+ // Hide Ajax icon again
264
+ jQuery( '.gwolle_gb_ajax' ).css('display', 'none');
265
+ });
266
+
267
+ event.preventDefault();
268
+ });
269
+
270
+
271
+ // Dashboard Widget Click events
272
+ jQuery( '#gwolle_gb_dashboard .row-actions a' ).click(function(event) {
273
+
274
+ // Do not do anything here...
275
+ var parent_class = jQuery(this).parent().hasClass('gwolle_gb_edit');
276
+ if (parent_class) {
277
+ //console.log('gwolle_gb_edit');
278
+ return;
279
+ }
280
+ var parent_class = jQuery(this).parent().hasClass('gwolle_gb_ajax');
281
+ if (parent_class) {
282
+ //console.log('gwolle_gb_ajax');
283
+ return;
284
+ }
285
+
286
+
287
+ // Set up data to send
288
+ var a_el_id = jQuery(this).attr('id');
289
+ var entry_id = a_el_id;
290
+ entry_id = entry_id.replace(/check_/,'');
291
+ entry_id = entry_id.replace(/spam_/,'');
292
+ entry_id = entry_id.replace(/trash_/,'');
293
+ var setter = a_el_id.replace(new RegExp( "_" + entry_id, "g"), '');
294
+
295
+ var data = {
296
+ action: 'gwolle_gb_ajax',
297
+ security: '<?php echo $ajax_nonce; ?>',
298
+ id: entry_id,
299
+ setter: setter
300
+ };
301
+
302
+
303
+ // Set Ajax icon on visible
304
+ jQuery( '.gwolle-gb-dashboard div#entry_' + entry_id + ' .gwolle_gb_ajax' ).css('display', 'inline-block');
305
+
306
+
307
+ // Do the actual request
308
+ $.post( ajaxurl, data, function( response ) {
309
+ response = jQuery.trim( response );
310
+
311
+ if ( response == setter ) { // We got what we wanted
312
+ // Remove entry from widget
313
+ jQuery( '.gwolle-gb-dashboard div#entry_' + entry_id ).slideUp();
314
+ } else {
315
+ // Error or unexpected answer...
316
+ jQuery( '.gwolle-gb-dashboard div#entry_' + entry_id + ' .gwolle_gb_ajax a' ).append(' (error)');
317
+ }
318
+ });
319
+
320
+ event.preventDefault();
321
+ });
322
+
323
+ });
324
+ </script>
325
+ <?php
326
+ }
327
+
328
+
329
+ /*
330
+ * Callback function for handling the Ajax requests that are generated from the JavaScript above in gwolle_gb_ajax_javascript
331
+ */
332
+ add_action( 'wp_ajax_gwolle_gb_ajax', 'gwolle_gb_ajax_callback' );
333
+ function gwolle_gb_ajax_callback() {
334
+
335
+ if ( function_exists('current_user_can') && ! current_user_can('moderate_comments') ) {
336
+ echo 'error';
337
+ die();
338
+ }
339
+
340
+ check_ajax_referer( 'gwolle_gb_ajax', 'security' );
341
+
342
+ /* Check Nonce */
343
+ $verified = false;
344
+ if ( isset($_POST['security']) ) {
345
+ $verified = wp_verify_nonce( $_POST['security'], 'gwolle_gb_ajax' );
346
+ }
347
+ if ( $verified == false ) {
348
+ // Nonce is invalid.
349
+ _e('Nonce check failed. Please go back and try again.', 'gwolle-gb');
350
+ die();
351
+ }
352
+
353
+ if (isset($_POST['id'])) {
354
+ $id = intval( $_POST['id'] );
355
+ }
356
+ if (isset($_POST['setter'])) {
357
+ $setter = strval( $_POST['setter'] );
358
+ }
359
+
360
+
361
+ if ( isset($id) && $id > 0 && isset($setter) && strlen($setter) > 0) {
362
+ $entry = new gwolle_gb_entry();
363
+ $result = $entry->load( $id );
364
+ if ( !$result ) {
365
+ echo 'error, no such entry.';
366
+ die();
367
+ }
368
+
369
+
370
+ switch ($setter) {
371
+ case 'uncheck':
372
+ if ( $entry->get_ischecked() == 1 ) {
373
+ $entry->set_ischecked( false );
374
+ $result = $entry->save();
375
+ if ($result ) {
376
+ $response = 'uncheck';
377
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-unchecked' );
378
+ } else {
379
+ $response = 'error';
380
+ }
381
+ } else {
382
+ $response = 'nochange';
383
+ }
384
+ break;
385
+ case 'check':
386
+ if ( $entry->get_ischecked() == 0 ) {
387
+ $entry->set_ischecked( true );
388
+ $user_id = get_current_user_id(); // returns 0 if no current user
389
+ $entry->set_checkedby( $user_id );
390
+ $result = $entry->save();
391
+ if ($result ) {
392
+ $response = 'check';
393
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-checked' );
394
+ } else {
395
+ $response = 'error';
396
+ }
397
+ } else {
398
+ $response = 'nochange';
399
+ }
400
+ break;
401
+ case 'unspam':
402
+ if ( $entry->get_isspam() == 1 ) {
403
+ $entry->set_isspam( false );
404
+ $result = $entry->save();
405
+ if ($result ) {
406
+ $response = 'unspam';
407
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-not-spam' );
408
+ gwolle_gb_akismet( $entry, 'submit-ham' );
409
+ } else {
410
+ $response = 'error';
411
+ }
412
+ } else {
413
+ $response = 'nochange';
414
+ }
415
+ break;
416
+ case 'spam':
417
+ if ( $entry->get_isspam() == 0 ) {
418
+ $entry->set_isspam( true );
419
+ $result = $entry->save();
420
+ if ($result ) {
421
+ $response = 'spam';
422
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-spam' );
423
+ gwolle_gb_akismet( $entry, 'submit-spam' );
424
+ } else {
425
+ $response = 'error';
426
+ }
427
+ } else {
428
+ $response = 'nochange';
429
+ }
430
+ break;
431
+ case 'untrash':
432
+ if ( $entry->get_istrash() == 1 ) {
433
+ $entry->set_istrash( false );
434
+ $result = $entry->save();
435
+ if ($result ) {
436
+ $response = 'untrash';
437
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-untrashed' );
438
+ } else {
439
+ $response = 'error';
440
+ }
441
+ } else {
442
+ $response = 'nochange';
443
+ }
444
+ break;
445
+ case 'trash':
446
+ if ( $entry->get_istrash() == 0 ) {
447
+ $entry->set_istrash( true );
448
+ $result = $entry->save();
449
+ if ($result ) {
450
+ $response = 'trash';
451
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-trashed' );
452
+ } else {
453
+ $response = 'error';
454
+ }
455
+ } else {
456
+ $response = 'nochange';
457
+ }
458
+ break;
459
+ }
460
+
461
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
462
+
463
+ } else {
464
+ $response = 'error';
465
+ }
466
+
467
+ echo $response;
468
+ die(); // this is required to return a proper result
469
+
470
+ }
admin/gb-dashboard-widget.php ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Adds a dashboard widget to show the latest entries.
12
+ */
13
+ function gwolle_gb_dashboard() {
14
+
15
+ if ( function_exists('current_user_can') && !current_user_can('moderate_comments') ) {
16
+ return;
17
+ }
18
+
19
+ gwolle_gb_admin_enqueue();
20
+
21
+ // Only get new and unchecked entries
22
+ $entries = gwolle_gb_get_entries(array(
23
+ 'num_entries' => 5,
24
+ 'checked' => 'unchecked',
25
+ 'trash' => 'notrash',
26
+ 'spam' => 'nospam'
27
+ ));
28
+
29
+ if ( is_array($entries) && !empty($entries) ) {
30
+
31
+ // List of guestbook entries
32
+ echo '<div class="gwolle-gb-dashboard gwolle-gb">';
33
+ $rowOdd = false;
34
+ foreach ( $entries as $entry ) {
35
+ $class = '';
36
+ // rows have a different color.
37
+ if ($rowOdd) {
38
+ $rowOdd = false;
39
+ $class = ' alternate';
40
+ } else {
41
+ $rowOdd = true;
42
+ $class = '';
43
+ }
44
+
45
+ // Attach 'spam' to class if the entry is spam
46
+ if ( $entry->get_isspam() === 1 ) {
47
+ $class .= ' spam';
48
+ } else {
49
+ $class .= ' nospam';
50
+ }
51
+
52
+ // Attach 'trash' to class if the entry is in trash
53
+ if ( $entry->get_istrash() === 1 ) {
54
+ $class .= ' trash';
55
+ } else {
56
+ $class .= ' notrash';
57
+ }
58
+
59
+ // Attach 'checked/unchecked' to class
60
+ if ( $entry->get_ischecked() === 1 ) {
61
+ $class .= ' checked';
62
+ } else {
63
+ $class .= ' unchecked';
64
+ }
65
+
66
+ // Attach 'visible/invisible' to class
67
+ if ( $entry->get_isspam() === 1 || $entry->get_istrash() === 1 || $entry->get_ischecked() === 0 ) {
68
+ $class .= ' invisible';
69
+ } else {
70
+ $class .= ' visible';
71
+ }
72
+
73
+ // Add admin-entry class to an entry from an admin
74
+ $author_id = $entry->get_author_id();
75
+ $is_moderator = gwolle_gb_is_moderator( $author_id );
76
+ if ( $is_moderator ) {
77
+ $class .= ' admin-entry';
78
+ } ?>
79
+
80
+
81
+ <div id="entry_<?php echo $entry->get_id(); ?>" class="comment depth-1 comment-item <?php echo $class; ?>">
82
+ <div class="dashboard-comment-wrap">
83
+ <h4 class="comment-meta">
84
+ <?php // Author info ?>
85
+ <cite class="comment-author"><?php echo gwolle_gb_get_author_name_html($entry); ?></cite>
86
+ </h4>
87
+
88
+ <?php
89
+ // Date column
90
+ echo '
91
+ <div class="date">' . date_i18n( get_option('date_format'), $entry->get_datetime() ) . ', ' .
92
+ date_i18n( get_option('time_format'), $entry->get_datetime() ) .
93
+ '</div>'; ?>
94
+
95
+ <blockquote class="excerpt">
96
+ <p>
97
+ <?php
98
+ // Content / Excerpt
99
+ $entry_content = gwolle_gb_get_excerpt( gwolle_gb_bbcode_strip($entry->get_content()), 16 );
100
+ if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
101
+ $entry_content = convert_smilies($entry_content);
102
+ }
103
+ echo $entry_content; ?>
104
+ </p>
105
+ </blockquote><?php
106
+
107
+ // Actions with AJAX
108
+ ?>
109
+ <p class="row-actions" id="entry-actions-<?php echo $entry->get_id(); ?>">
110
+ <span class="gwolle_gb_edit">
111
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/editor.php&entry_id=<?php echo $entry->get_id(); ?>" title="<?php esc_attr_e('Edit entry', 'gwolle-gb'); ?>"><?php esc_html_e('Edit', 'gwolle-gb'); ?></a>
112
+ </span>
113
+ <span class="gwolle_gb_check">
114
+ &nbsp;|&nbsp;
115
+ <a id="check_<?php echo $entry->get_id(); ?>" href="#" class="vim-a" title="<?php esc_attr_e('Check entry', 'gwolle-gb'); ?>"><?php esc_html_e('Check', 'gwolle-gb'); ?></a>
116
+ </span>
117
+ <span class="gwolle_gb_uncheck">
118
+ &nbsp;|&nbsp;
119
+ <a id="uncheck_<?php echo $entry->get_id(); ?>" href="#" class="vim-u" title="<?php esc_attr_e('Uncheck entry', 'gwolle-gb'); ?>"><?php esc_html_e('Uncheck', 'gwolle-gb'); ?></a>
120
+ </span>
121
+ <span class="gwolle_gb_spam">
122
+ &nbsp;|&nbsp;
123
+ <a id="spam_<?php echo $entry->get_id(); ?>" href="#" class="vim-s vim-destructive" title="<?php esc_attr_e('Mark entry as spam.', 'gwolle-gb'); ?>"><?php esc_html_e('Spam', 'gwolle-gb'); ?></a>
124
+ </span>
125
+ <span class="gwolle_gb_unspam">
126
+ &nbsp;|&nbsp;
127
+ <a id="unspam_<?php echo $entry->get_id(); ?>" href="#" class="vim-a" title="<?php esc_attr_e('Mark entry as not-spam.', 'gwolle-gb'); ?>"><?php esc_html_e('Not spam', 'gwolle-gb'); ?></a>
128
+ </span>
129
+ <span class="gwolle_gb_trash">
130
+ &nbsp;|&nbsp;
131
+ <a id="trash_<?php echo $entry->get_id(); ?>" href="#" class="vim-d vim-destructive" title="<?php esc_attr_e('Move entry to trash.', 'gwolle-gb'); ?>"><?php /* translators: Move to Trashcan */ esc_html_e('Trash', 'gwolle-gb'); ?></a>
132
+ </span>
133
+ <span class="gwolle_gb_untrash">
134
+ &nbsp;|&nbsp;
135
+ <a id="untrash_<?php echo $entry->get_id(); ?>" href="#" class="vim-d" title="<?php esc_attr_e('Recover entry from trash.', 'gwolle-gb'); ?>"><?php esc_html_e('Untrash', 'gwolle-gb'); ?></a>
136
+ </span>
137
+ <span class="gwolle_gb_ajax">
138
+ &nbsp;|&nbsp;
139
+ <a id="ajax_<?php echo $entry->get_id(); ?>" href="#" class="ajax vim-d vim-destructive" title="<?php esc_attr_e('Please wait...', 'gwolle-gb'); ?>"><?php esc_html_e('Wait...', 'gwolle-gb'); ?></a>
140
+ </span>
141
+ </p>
142
+ </div>
143
+ </div>
144
+ <?php
145
+
146
+ } ?>
147
+
148
+ </div>
149
+ <p class="textright">
150
+ <a href="<?php echo $_SERVER['PHP_SELF']; ?>" class="button"><?php _e('Refresh', 'gwolle-gb'); ?></a>
151
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=all" class="button button-primary"><?php esc_html_e('View all', 'gwolle-gb'); ?></a>
152
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=unchecked" class="button button-primary"><?php esc_html_e('View new', 'gwolle-gb'); ?></a>
153
+ </p><?php
154
+ } else {
155
+ echo '<p>' . esc_html__('No new and unchecked guestbook entries.', 'gwolle-gb') . '</p>';
156
+ }
157
+ }
158
+
159
+
160
+ // Add the widget
161
+ function gwolle_gb_dashboard_setup() {
162
+
163
+ if ( function_exists('current_user_can') && ! current_user_can('moderate_comments') ) {
164
+ return;
165
+ }
166
+
167
+ wp_add_dashboard_widget('gwolle_gb_dashboard', esc_html__('Guestbook (new entries)', 'gwolle-gb'), 'gwolle_gb_dashboard');
168
+ }
169
+ add_action('wp_dashboard_setup', 'gwolle_gb_dashboard_setup');
admin/gb-page-editor.php ADDED
@@ -0,0 +1,752 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Editor for editing entries and writing admin entries.
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ function gwolle_gb_page_editor() {
13
+ global $entry;
14
+
15
+ if ( function_exists('current_user_can') && !current_user_can('moderate_comments') ) {
16
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
17
+ }
18
+
19
+ gwolle_gb_admin_enqueue();
20
+
21
+ $gwolle_gb_errors = '';
22
+ $gwolle_gb_messages = '';
23
+
24
+ $sectionHeading = esc_html__('Edit guestbook entry', 'gwolle-gb');
25
+
26
+ // Always fetch the requested entry, so we can compare the $entry and the $_POST.
27
+ $entry = new gwolle_gb_entry();
28
+
29
+ if ( isset($_POST['entry_id']) ) { // _POST has preference over _GET
30
+ $entry_id = intval($_POST['entry_id']);
31
+ } else if ( isset($_GET['entry_id']) ) {
32
+ $entry_id = intval($_GET['entry_id']);
33
+ }
34
+ if ( isset($entry_id) && $entry_id > 0 ) {
35
+ $result = $entry->load( $entry_id );
36
+ if ( !$result ) {
37
+ $gwolle_gb_messages .= '<p class="error">' . esc_html__('Entry could not be found.', 'gwolle-gb') . '</p>';
38
+ $gwolle_gb_errors = 'error';
39
+ $sectionHeading = esc_html__('Guestbook entry (error)', 'gwolle-gb');
40
+ }
41
+ } else {
42
+ $sectionHeading = esc_html__('New guestbook entry', 'gwolle-gb');
43
+ }
44
+
45
+
46
+ /*
47
+ * Handle the $_POST
48
+ */
49
+ if ( isset($_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'editor' && $gwolle_gb_errors == '' ) {
50
+
51
+ /* Check Nonce */
52
+ $continue_on_nonce_checked = false;
53
+ if ( isset($_POST['gwolle_gb_wpnonce']) ) {
54
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_wpnonce'], 'gwolle_gb_page_editor' );
55
+ if ( $verified == true ) {
56
+ $continue_on_nonce_checked = true;
57
+ } else {
58
+ // Nonce is invalid, so considered spam
59
+ $gwolle_gb_messages .= '<p>' . esc_html__('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
60
+ $gwolle_gb_errors = 'error';
61
+ }
62
+ }
63
+
64
+ if ( !isset($_POST['entry_id']) || $_POST['entry_id'] != $entry->get_id() ) {
65
+ $gwolle_gb_messages .= '<p class="error">' . esc_html__('Something strange happened.', 'gwolle-gb') . '</p>';
66
+ $gwolle_gb_errors = 'error';
67
+ } else if ( $_POST['entry_id'] > 0 && $entry->get_id() > 0 && $continue_on_nonce_checked ) {
68
+
69
+ /*
70
+ * Check for changes, and update accordingly. This is on an Existing Entry!
71
+ */
72
+
73
+ $changed = false;
74
+
75
+ /* Set as checked or unchecked, and by whom */
76
+ if ( isset($_POST['ischecked']) && $_POST['ischecked'] == 'on' ) {
77
+ if ( $_POST['ischecked'] == 'on' && $entry->get_ischecked() == 0 ) {
78
+ $entry->set_ischecked( true );
79
+ $user_id = get_current_user_id(); // returns 0 if no current user
80
+ $entry->set_checkedby( $user_id );
81
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-checked' );
82
+ gwolle_gb_clear_cache( $entry );
83
+ $changed = true;
84
+ }
85
+ } else if ( $entry->get_ischecked() == 1 ) {
86
+ $entry->set_ischecked( false );
87
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-unchecked' );
88
+ $changed = true;
89
+ }
90
+
91
+ /* Set as spam or not, and submit as ham or spam to Akismet service */
92
+ if ( isset($_POST['isspam']) && $_POST['isspam'] == 'on' ) {
93
+ if ( $_POST['isspam'] == 'on' && $entry->get_isspam() == 0 ) {
94
+ $entry->set_isspam( true );
95
+ $result = gwolle_gb_akismet( $entry, 'submit-spam' );
96
+ if ( $result ) {
97
+ $gwolle_gb_messages .= '<p>' . esc_html__('Submitted as Spam to the Akismet service.', 'gwolle-gb') . '</p>';
98
+ }
99
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-spam' );
100
+ $changed = true;
101
+ }
102
+ } else if ( $entry->get_isspam() == 1 ) {
103
+ $entry->set_isspam( false );
104
+ $result = gwolle_gb_akismet( $entry, 'submit-ham' );
105
+ if ( $result ) {
106
+ $gwolle_gb_messages .= '<p>' . esc_html__('Submitted as Ham to the Akismet service.', 'gwolle-gb') . '</p>';
107
+ }
108
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-not-spam' );
109
+ $changed = true;
110
+ }
111
+
112
+ /* Set as trash or not */
113
+ if ( isset($_POST['istrash']) && $_POST['istrash'] == 'on' ) {
114
+ if ( $_POST['istrash'] == 'on' && $entry->get_istrash() == 0 ) {
115
+ $entry->set_istrash( true );
116
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-trashed' );
117
+ $changed = true;
118
+ }
119
+ } else if ( $entry->get_istrash() == 1 ) {
120
+ $entry->set_istrash( false );
121
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-untrashed' );
122
+ $changed = true;
123
+ }
124
+
125
+ /* Check if the content changed, and update accordingly */
126
+ if ( isset($_POST['gwolle_gb_content']) && $_POST['gwolle_gb_content'] != '' ) {
127
+ if ( trim($_POST['gwolle_gb_content']) != $entry->get_content() ) {
128
+ $entry_content = gwolle_gb_maybe_encode_emoji( $_POST['gwolle_gb_content'], 'content' );
129
+ $entry->set_content( $entry_content );
130
+ $changed = true;
131
+ }
132
+ }
133
+
134
+ /* Check if the website changed, and update accordingly */
135
+ if ( isset( $_POST['gwolle_gb_author_website'] ) ) {
136
+ $website = trim( $_POST['gwolle_gb_author_website'] );
137
+ } else {
138
+ $website = '';
139
+ }
140
+ if ( $website != $entry->get_author_website() ) {
141
+ $entry->set_author_website( $website );
142
+ $changed = true;
143
+ }
144
+
145
+ /* Check if the author_origin changed, and update accordingly */
146
+ if ( isset($_POST['gwolle_gb_author_origin']) ) {
147
+ if ( $_POST['gwolle_gb_author_origin'] != $entry->get_author_origin() ) {
148
+ $entry_origin = gwolle_gb_maybe_encode_emoji( $_POST['gwolle_gb_author_origin'], 'author_origin' );
149
+ $entry->set_author_origin( $entry_origin );
150
+ $changed = true;
151
+ }
152
+ }
153
+
154
+ /* Check if the admin_reply changed, and update and log accordingly */
155
+ if ( isset($_POST['gwolle_gb_admin_reply']) ) {
156
+ if ( trim($_POST['gwolle_gb_admin_reply']) != $entry->get_admin_reply() ) {
157
+ $gwolle_gb_admin_reply = gwolle_gb_maybe_encode_emoji( $_POST['gwolle_gb_admin_reply'], 'admin_reply' );
158
+ if ( $gwolle_gb_admin_reply != '' && $entry->get_admin_reply() == '' ) {
159
+ $entry->set_admin_reply_uid( get_current_user_id() );
160
+ gwolle_gb_add_log_entry( $entry->get_id(), 'admin-reply-added' );
161
+ } else if ( $gwolle_gb_admin_reply == '' && $entry->get_admin_reply() != '' ) {
162
+ $entry->set_admin_reply_uid( 0 );
163
+ gwolle_gb_add_log_entry( $entry->get_id(), 'admin-reply-removed' );
164
+ } else if ( $gwolle_gb_admin_reply != '' && $entry->get_admin_reply() != '' ) {
165
+ gwolle_gb_add_log_entry( $entry->get_id(), 'admin-reply-updated' );
166
+ }
167
+ $entry->set_admin_reply( $gwolle_gb_admin_reply );
168
+ $changed = true;
169
+ }
170
+ }
171
+
172
+ /* Mail the author about the Admin Reply, if so requested */
173
+ if ( isset($_POST['gwolle_gb_admin_reply_mail_author']) ) {
174
+ if ( $_POST['gwolle_gb_admin_reply_mail_author'] == 'on' ) {
175
+ gwolle_gb_mail_author_on_admin_reply( $entry );
176
+ }
177
+ }
178
+
179
+ /* Check if the author_name changed, and update accordingly */
180
+ if ( isset($_POST['gwolle_gb_author_name']) ) {
181
+ if ( $_POST['gwolle_gb_author_name'] != $entry->get_author_name() ) {
182
+ $entry_name = gwolle_gb_maybe_encode_emoji( $_POST['gwolle_gb_author_name'], 'author_name' );
183
+ $entry->set_author_name( $entry_name );
184
+ $changed = true;
185
+ }
186
+ }
187
+
188
+ /* Check if the datetime changed, and update accordingly */
189
+ if ( isset($_POST['gwolle_gb_timestamp']) && is_numeric($_POST['gwolle_gb_timestamp']) ) {
190
+ if ( $_POST['gwolle_gb_timestamp'] != $entry->get_datetime() ) {
191
+ $entry->set_datetime( (int) $_POST['gwolle_gb_timestamp'] );
192
+ $changed = true;
193
+ }
194
+ }
195
+
196
+ /* Check if the book_id changed, and update accordingly */
197
+ if ( isset($_POST['gwolle_gb_book_id']) && is_numeric($_POST['gwolle_gb_book_id']) ) {
198
+ if ( $_POST['gwolle_gb_book_id'] != $entry->get_book_id() ) {
199
+ $entry->set_book_id( (int) $_POST['gwolle_gb_book_id'] );
200
+ $changed = true;
201
+ }
202
+ }
203
+
204
+ /* Save the entry */
205
+ if ( $changed ) {
206
+ $result = $entry->save();
207
+ if ($result ) {
208
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-edited' );
209
+ $gwolle_gb_messages .= '<p>' . esc_html__('Changes saved.', 'gwolle-gb') . '</p>';
210
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
211
+ } else {
212
+ $gwolle_gb_messages .= '<p>' . esc_html__('Error happened during saving.', 'gwolle-gb') . '</p>';
213
+ $gwolle_gb_errors = 'error';
214
+ }
215
+ } else {
216
+ $gwolle_gb_messages .= '<p>' . esc_html__('Entry was not changed.', 'gwolle-gb') . '</p>';
217
+ }
218
+
219
+ /* Remove permanently */
220
+ if ( isset($_POST['istrash']) && $_POST['istrash'] == 'on' && isset($_POST['remove']) && $_POST['remove'] == 'on' ) {
221
+ if ( $entry->get_istrash() == 1 ) {
222
+ $entry->delete();
223
+ $entry->set_id(0);
224
+ $changed = true;
225
+ // Overwrite any other message, only removal is relevant.
226
+ $gwolle_gb_messages = '<p>' . esc_html__('Entry removed.', 'gwolle-gb') . '</p>';
227
+ $entry = new gwolle_gb_entry();
228
+ }
229
+ }
230
+
231
+ } else if ( $_POST['entry_id'] == 0 && $entry->get_id() == 0 && $continue_on_nonce_checked ) {
232
+
233
+ /*
234
+ * Check for input, and save accordingly. This is on a New Entry! (So no logging)
235
+ */
236
+
237
+ $saved = false;
238
+ $data = Array();
239
+
240
+ /* Set as checked anyway, new entry is always by an admin */
241
+ $data['ischecked'] = true;
242
+ $user_id = get_current_user_id(); // returns 0 if no current user
243
+ $data['checkedby'] = $user_id;
244
+ $data['author_id'] = $user_id;
245
+
246
+ /* Set metadata of the admin */
247
+ $userdata = get_userdata( $user_id );
248
+
249
+ if (is_object($userdata)) {
250
+ if ( isset( $userdata->display_name ) ) {
251
+ $author_name = $userdata->display_name;
252
+ } else {
253
+ $author_name = $userdata->user_login;
254
+ }
255
+ $author_email = $userdata->user_email;
256
+ }
257
+ $data['author_name'] = $author_name;
258
+ $data['author_name'] = gwolle_gb_maybe_encode_emoji( $data['author_name'], 'author_name' );
259
+ $data['author_email'] = $author_email;
260
+
261
+ /* Set as Not Spam */
262
+ $data['isspam'] = false;
263
+
264
+ /* Do not set as trash */
265
+ $data['istrash'] = false;
266
+
267
+ /* Check if the content is filled in, and save accordingly */
268
+ if ( isset($_POST['gwolle_gb_content']) && $_POST['gwolle_gb_content'] != '' ) {
269
+ $data['content'] = $_POST['gwolle_gb_content'];
270
+ $data['content'] = gwolle_gb_maybe_encode_emoji( $data['content'], 'content' );
271
+ $saved = true;
272
+ } else {
273
+ $form_setting = gwolle_gb_get_setting( 'form' );
274
+ if ( isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true' && isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) {
275
+ $gwolle_gb_messages .= '<p>' . esc_html__('Entry has no content, even though that is mandatory.', 'gwolle-gb') . '</p>';
276
+ $gwolle_gb_errors = 'error';
277
+ } else {
278
+ $data['content'] = '';
279
+ $saved = true;
280
+ }
281
+ }
282
+
283
+ /* Check if the website is set, and save accordingly */
284
+ if ( isset($_POST['gwolle_gb_author_website']) ) {
285
+ if ( $_POST['gwolle_gb_author_website'] != '' ) {
286
+ $data['author_website'] = $_POST['gwolle_gb_author_website'];
287
+ } else {
288
+ $data['author_website'] = home_url();
289
+ }
290
+ }
291
+
292
+ /* Check if the author_origin is set, and save accordingly */
293
+ if ( isset($_POST['gwolle_gb_author_origin']) ) {
294
+ if ( $_POST['gwolle_gb_author_origin'] != '' ) {
295
+ $data['author_origin'] = $_POST['gwolle_gb_author_origin'];
296
+ $data['author_origin'] = gwolle_gb_maybe_encode_emoji( $data['author_origin'], 'author_origin' );
297
+ }
298
+ }
299
+
300
+ /* Check if the admin_reply is set, and save accordingly */
301
+ if ( isset($_POST['gwolle_gb_admin_reply']) ) {
302
+ if ( $_POST['gwolle_gb_admin_reply'] != '' ) {
303
+ $data['admin_reply'] = gwolle_gb_maybe_encode_emoji( $_POST['gwolle_gb_admin_reply'], 'admin_reply' );
304
+ $data['admin_reply_uid'] = get_current_user_id();
305
+ gwolle_gb_add_log_entry( $entry->get_id(), 'admin-reply-added' );
306
+ }
307
+ }
308
+
309
+ /* Check if the book_id is set, and save accordingly */
310
+ if ( isset($_POST['gwolle_gb_book_id']) && is_numeric($_POST['gwolle_gb_book_id']) ) {
311
+ $entry->set_book_id( (int) $_POST['gwolle_gb_book_id'] );
312
+ }
313
+
314
+ /* Network Information */
315
+ $set_author_ip = apply_filters( 'gwolle_gb_set_author_ip', true );
316
+ if ( $set_author_ip ) {
317
+ $entry->set_author_ip( $_SERVER['REMOTE_ADDR'] );
318
+ $entry->set_author_host( gethostbyaddr( $_SERVER['REMOTE_ADDR'] ) );
319
+ }
320
+
321
+ $result1 = $entry->set_data( $data );
322
+ if ( $saved ) {
323
+ $result2 = $entry->save();
324
+ if ( $result1 && $result2 ) {
325
+ $gwolle_gb_messages .= '<p>' . esc_html__('Entry saved.', 'gwolle-gb') . '</p>';
326
+ gwolle_gb_clear_cache( $entry );
327
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
328
+ } else {
329
+ $gwolle_gb_messages .= '<p>' . esc_html__('Error happened during saving.', 'gwolle-gb') . '</p>';
330
+ $gwolle_gb_errors = 'error';
331
+ }
332
+ } else {
333
+ $gwolle_gb_messages .= '<p>' . esc_html__('Entry was not saved.', 'gwolle-gb') . '</p>';
334
+ }
335
+
336
+ }
337
+ }
338
+
339
+
340
+ /*
341
+ * Build the Page and the Form
342
+ */
343
+ ?>
344
+ <div class="wrap gwolle_gb">
345
+ <div id="icon-gwolle-gb"><br /></div>
346
+ <h1><?php echo $sectionHeading; ?></h1>
347
+
348
+ <?php
349
+ if ( $gwolle_gb_messages ) {
350
+ echo '
351
+ <div id="message" class="updated fade notice is-dismissible ' . $gwolle_gb_errors . ' ">' .
352
+ $gwolle_gb_messages .
353
+ '</div>';
354
+ }
355
+ ?>
356
+
357
+ <form name="gwolle_gb_editor" id="gwolle_gb_editor" method="POST" action="" accept-charset="UTF-8">
358
+ <input type="hidden" name="gwolle_gb_page" value="editor" />
359
+ <input type="hidden" name="entry_id" value="<?php echo $entry->get_id(); ?>" />
360
+
361
+ <?php
362
+ /* Nonce */
363
+ $nonce = wp_create_nonce( 'gwolle_gb_page_editor' );
364
+ echo '<input type="hidden" id="gwolle_gb_wpnonce" name="gwolle_gb_wpnonce" value="' . $nonce . '" />';
365
+ ?>
366
+
367
+ <div id="poststuff" class="gwolle_gb_editor">
368
+ <div id="post-body" class="metabox-holder columns-2">
369
+ <div id="post-body-content">
370
+ <?php
371
+ add_meta_box('gwolle_gb_editor_postbox_content', esc_html__('Guestbook entry','gwolle-gb'), 'gwolle_gb_editor_postbox_content', 'gwolle_gb_editor', 'normal');
372
+ add_meta_box('gwolle_gb_editor_postbox_website', esc_html__('Website', 'gwolle-gb'), 'gwolle_gb_editor_postbox_website', 'gwolle_gb_editor', 'normal');
373
+ add_meta_box('gwolle_gb_editor_postbox_author', esc_html__('Author', 'gwolle-gb'), 'gwolle_gb_editor_postbox_author', 'gwolle_gb_editor', 'normal');
374
+ add_meta_box('gwolle_gb_editor_postbox_admin_reply', esc_html__('Admin Reply', 'gwolle-gb'), 'gwolle_gb_editor_postbox_admin_reply', 'gwolle_gb_editor', 'normal');
375
+
376
+ $active = is_plugin_active( 'gwolle-gb-addon/gwolle-gb-addon.php' ); // true or false
377
+ if ( $active && function_exists( 'gwolle_gb_addon_editor_postbox_preview' ) ) {
378
+ add_meta_box('gwolle_gb_editor_postbox_preview', esc_html__('Preview','gwolle-gb'), 'gwolle_gb_addon_editor_postbox_preview', 'gwolle_gb_editor', 'normal');
379
+ }
380
+ if ( $active && function_exists( 'gwolle_gb_addon_editor_metabox_meta' ) ) {
381
+ add_meta_box('gwolle_gb_addon_editor_metabox_meta', esc_html__('Meta Fields','gwolle-gb'), 'gwolle_gb_addon_editor_metabox_meta', 'gwolle_gb_editor', 'normal');
382
+ }
383
+
384
+ do_meta_boxes( 'gwolle_gb_editor', 'normal', $entry );
385
+ ?>
386
+ </div>
387
+ <div id="postbox-container-1" class="postbox-container">
388
+ <?php
389
+ add_meta_box('gwolle_gb_editor_postbox_icons', esc_html__('Visibility', 'gwolle-gb'), 'gwolle_gb_editor_postbox_icons', 'gwolle_gb_editor', 'side');
390
+ add_meta_box('gwolle_gb_editor_postbox_actions', esc_html__('Actions', 'gwolle-gb'), 'gwolle_gb_editor_postbox_actions', 'gwolle_gb_editor', 'side');
391
+ add_meta_box('gwolle_gb_editor_postbox_details', esc_html__('Details','gwolle-gb'), 'gwolle_gb_editor_postbox_details', 'gwolle_gb_editor', 'side');
392
+ add_meta_box('gwolle_gb_editor_postbox_logs', esc_html__('Log','gwolle-gb'), 'gwolle_gb_editor_postbox_logs', 'gwolle_gb_editor', 'side');
393
+
394
+ do_meta_boxes( 'gwolle_gb_editor', 'side', $entry );
395
+ ?>
396
+ </div>
397
+ </div>
398
+ </div>
399
+ </form>
400
+ </div><!-- .wrap -->
401
+ <?php
402
+ }
403
+
404
+
405
+ function gwolle_gb_editor_postbox_content( $entry ) {
406
+ ?>
407
+ <textarea rows="10" name="gwolle_gb_content" id="gwolle_gb_content" class="wp-exclude-emoji" tabindex="1" placeholder="<?php esc_html_e('Message', 'gwolle-gb'); ?>"><?php echo gwolle_gb_sanitize_output( $entry->get_content(), 'content' ); ?></textarea>
408
+ <?php
409
+ if (get_option('gwolle_gb-showLineBreaks', 'false') == 'false') {
410
+ echo '<p>' . sprintf( __('Line breaks will not be visible to the visitors due to your <a href="%s">settings</a>.', 'gwolle-gb'), 'admin.php?page=' . GWOLLE_GB_FOLDER . '/settings.php' ) . '</p>';
411
+ }
412
+ $form_setting = gwolle_gb_get_setting( 'form' );
413
+
414
+ if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
415
+ wp_enqueue_script( 'markitup', plugins_url('../frontend/markitup/jquery.markitup.js', __FILE__), 'jquery', GWOLLE_GB_VER, false );
416
+ wp_enqueue_script( 'markitup_set', plugins_url('../frontend/markitup/set.js', __FILE__), 'jquery', GWOLLE_GB_VER, false );
417
+ wp_enqueue_style('gwolle_gb_markitup_css', plugins_url('../frontend/markitup/style.css', __FILE__), false, GWOLLE_GB_VER, 'screen');
418
+
419
+ $dataToBePassed = array(
420
+ 'bold' => /* translators: MarkItUp menu item */ esc_html__('Bold', 'gwolle-gb' ),
421
+ 'italic' => /* translators: MarkItUp menu item */ esc_html__('Italic', 'gwolle-gb' ),
422
+ 'bullet' => /* translators: MarkItUp menu item */ esc_html__('Bulleted List', 'gwolle-gb' ),
423
+ 'numeric' => /* translators: MarkItUp menu item */ esc_html__('Numeric List', 'gwolle-gb' ),
424
+ 'picture' => /* translators: MarkItUp menu item */ esc_html__('Picture', 'gwolle-gb' ),
425
+ 'source' => /* translators: MarkItUp menu item */ esc_html__('Source', 'gwolle-gb' ),
426
+ 'link' => /* translators: MarkItUp menu item */ esc_html__('Link', 'gwolle-gb' ),
427
+ 'linktext' => /* translators: MarkItUp menu item */ esc_html__('Your text to link...', 'gwolle-gb' ),
428
+ 'clean' => /* translators: MarkItUp menu item */ esc_html__('Clean', 'gwolle-gb' ),
429
+ 'emoji' => /* translators: MarkItUp menu item */ esc_html__('Emoji', 'gwolle-gb' )
430
+ );
431
+ wp_localize_script( 'markitup_set', 'gwolle_gb_localize', $dataToBePassed );
432
+
433
+ // Emoji symbols
434
+ echo '<div class="gwolle_gb_emoji gwolle_gb_hide">';
435
+ $emoji = gwolle_gb_get_emoji();
436
+ // make it into images for nice colors.
437
+ if ( function_exists('wp_staticize_emoji') ) {
438
+ $emoji = wp_staticize_emoji( $emoji );
439
+ }
440
+ echo $emoji;
441
+ echo '</div>';
442
+ }
443
+ }
444
+
445
+
446
+ function gwolle_gb_editor_postbox_website( $entry ) {
447
+ ?>
448
+ <input type="url" name="gwolle_gb_author_website" tabindex="2" value="<?php echo gwolle_gb_sanitize_output( $entry->get_author_website() ); ?>" id="author_website" placeholder="<?php esc_attr_e('Website', 'gwolle-gb'); ?>" />
449
+ <p><?php _e("Example: <code>http://www.example.com/</code>", 'gwolle-gb'); ?></p>
450
+ <?php
451
+ }
452
+
453
+
454
+ function gwolle_gb_editor_postbox_author( $entry ) {
455
+ ?>
456
+ <input type="text" name="gwolle_gb_author_origin" tabindex="3" class="wp-exclude-emoji" placeholder="<?php esc_attr_e('City', 'gwolle-gb'); ?>" value="<?php echo gwolle_gb_sanitize_output( $entry->get_author_origin() ); ?>" id="author_origin" />
457
+ <?php
458
+ }
459
+
460
+
461
+ function gwolle_gb_editor_postbox_admin_reply( $entry ) {
462
+ $form_setting = gwolle_gb_get_setting( 'form' );
463
+ ?>
464
+
465
+ <textarea rows="10" name="gwolle_gb_admin_reply" id="gwolle_gb_admin_reply" class="wp-exclude-emoji" tabindex="4" placeholder="<?php esc_attr_e('Admin Reply', 'gwolle-gb'); ?>"><?php echo gwolle_gb_sanitize_output( $entry->get_admin_reply(), 'admin_reply' ); ?></textarea>
466
+
467
+ <?php
468
+ if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
469
+ echo '<div class="gwolle_gb_admin_reply_emoji gwolle_gb_hide">';
470
+ // Emoji symbols
471
+ $emoji = gwolle_gb_get_emoji();
472
+ // make it into images for nice colors.
473
+ if ( function_exists('wp_staticize_emoji') ) {
474
+ $emoji = wp_staticize_emoji( $emoji );
475
+ }
476
+ echo $emoji;
477
+ echo '</div>';
478
+ }
479
+
480
+ /* Admin Reply Author */
481
+ $admin_reply_name = gwolle_gb_is_moderator( $entry->get_admin_reply_uid() );
482
+ if ( $admin_reply_name ) { ?>
483
+ <p class="gb-admin_reply_uid"><?php
484
+ $admin_reply_header = '<em>' . esc_html__('Admin Reply by:', 'gwolle-gb') . ' ' . $admin_reply_name . '</em>';
485
+ echo apply_filters( 'gwolle_gb_admin_reply_header', $admin_reply_header, $entry );
486
+ ?>
487
+ </p><?php
488
+ } ?>
489
+
490
+ <p>
491
+ <input type="checkbox" name="gwolle_gb_admin_reply_mail_author" id="gwolle_gb_admin_reply_mail_author">
492
+ <label for="gwolle_gb_admin_reply_mail_author">
493
+ <?php esc_html_e('Mail the author a notification about this reply.', 'gwolle-gb'); ?>
494
+ </label>
495
+ </p>
496
+
497
+ <?php
498
+ if (get_option('gwolle_gb-showLineBreaks', 'false') == 'false') {
499
+ echo '<p>' . sprintf( __('Line breaks will not be visible to the visitors due to your <a href="%s">settings</a>.', 'gwolle-gb'), 'admin.php?page=' . GWOLLE_GB_FOLDER . '/settings.php' ) . '</p>';
500
+ }
501
+ }
502
+
503
+
504
+ function gwolle_gb_editor_postbox_icons( $entry ) {
505
+ global $class;
506
+
507
+ $class = '';
508
+ // Attach 'spam' to class if the entry is spam
509
+ if ( $entry->get_isspam() === 1 ) {
510
+ $class .= ' spam';
511
+ } else {
512
+ $class .= ' nospam';
513
+ }
514
+
515
+ // Attach 'trash' to class if the entry is in trash
516
+ if ( $entry->get_istrash() === 1 ) {
517
+ $class .= ' trash';
518
+ } else {
519
+ $class .= ' notrash';
520
+ }
521
+
522
+ // Attach 'checked/unchecked' to class
523
+ if ( $entry->get_ischecked() === 1 ) {
524
+ $class .= ' checked';
525
+ } else {
526
+ $class .= ' unchecked';
527
+ }
528
+
529
+ // Attach 'visible/invisible' to class
530
+ if ( $entry->get_isspam() === 1 || $entry->get_istrash() === 1 || $entry->get_ischecked() === 0 ) {
531
+ $class .= ' invisible';
532
+ } else {
533
+ $class .= ' visible';
534
+ }
535
+
536
+ // Add admin-entry class to an entry from an admin
537
+ $author_id = $entry->get_author_id();
538
+ $is_moderator = gwolle_gb_is_moderator( $author_id );
539
+ if ( $is_moderator ) {
540
+ $class .= ' admin-entry';
541
+ }
542
+
543
+ $postid = gwolle_gb_get_postid( (int) $entry->get_book_id() );
544
+ if ( $postid ) {
545
+ $permalink = get_permalink( $postid );
546
+ ?>
547
+ <div id="gwolle_gb_frontend">
548
+ <a class="button rbutton button" href="<?php echo $permalink; ?>"><?php esc_attr_e('View Guestbook','gwolle-gb'); ?></a>
549
+ </div>
550
+ <?php
551
+ }
552
+
553
+ // Optional Icon column where CSS is being used to show them or not
554
+ if ( get_option('gwolle_gb-showEntryIcons', 'true') === 'true' ) { ?>
555
+ <span class="entry-icons <?php echo $class; ?>">
556
+ <span class="visible-icon" title="<?php esc_attr_e('Visible', 'gwolle-gb'); ?>"></span>
557
+ <span class="invisible-icon" title="<?php esc_attr_e('Invisible', 'gwolle-gb'); ?>"></span>
558
+ <span class="spam-icon" title="<?php esc_attr_e('Spam', 'gwolle-gb'); ?>"></span>
559
+ <span class="trash-icon" title="<?php /* translators: Is in Trashcan */ esc_attr_e('In Trash', 'gwolle-gb'); ?>"></span>
560
+ <?php
561
+ $admin_reply = gwolle_gb_sanitize_output( $entry->get_admin_reply(), 'admin_reply' );
562
+ if ( strlen( trim($admin_reply) ) > 0 ) { ?>
563
+ <span class="admin_reply-icon" title="<?php esc_attr_e('Admin Replied', 'gwolle-gb'); ?>"></span><?php
564
+ } ?>
565
+ <span class="gwolle_gb_ajax" title="<?php esc_attr_e('Wait...', 'gwolle-gb'); ?>"></span>
566
+ </span>
567
+ <?php
568
+ }
569
+
570
+ if ( $entry->get_id() == 0 ) {
571
+ echo '<h3 class="h3_invisible">' . esc_html__('This entry is not yet visible.', 'gwolle-gb') . '</h3>';
572
+ } else {
573
+ if ($entry->get_ischecked() == 1 && $entry->get_isspam() == 0 && $entry->get_istrash() == 0 ) {
574
+ echo '
575
+ <h3 class="h3_visible">' . esc_html__('This entry is Visible.', 'gwolle-gb') . '</h3>
576
+ <h3 class="h3_invisible" style="display:none;">' . esc_html__('This entry is Not Visible.', 'gwolle-gb') . '</h3>
577
+ ';
578
+ } else {
579
+ echo '
580
+ <h3 class="h3_visible" style="display:none;">' . esc_html__('This entry is Visible.', 'gwolle-gb') . '</h3>
581
+ <h3 class="h3_invisible">' . esc_html__('This entry is Not Visible.', 'gwolle-gb') . '</h3>
582
+ ';
583
+ } ?>
584
+
585
+ <label for="ischecked" class="selectit">
586
+ <input id="ischecked" name="ischecked" type="checkbox" <?php
587
+ if ($entry->get_ischecked() == '1' || $entry->get_id() == 0) {
588
+ echo 'checked="checked"';
589
+ }
590
+ ?> />
591
+ <?php esc_html_e('Checked', 'gwolle-gb'); ?>
592
+ </label>
593
+
594
+ <br />
595
+ <label for="isspam" class="selectit">
596
+ <input id="isspam" name="isspam" type="checkbox" <?php
597
+ if ($entry->get_isspam() == '1') {
598
+ echo 'checked="checked"';
599
+ }
600
+ ?> />
601
+ <?php esc_html_e('Spam', 'gwolle-gb'); ?>
602
+ </label>
603
+
604
+ <br />
605
+ <label for="istrash" class="selectit">
606
+ <input id="istrash" name="istrash" type="checkbox" <?php
607
+ if ($entry->get_istrash() == '1') {
608
+ echo 'checked="checked"';
609
+ }
610
+ ?> />
611
+ <?php /* translators: Is in Trashcan */ esc_html_e('In Trash', 'gwolle-gb'); ?>
612
+ </label>
613
+
614
+ <?php
615
+ $trashclass = '';
616
+ if ( $entry->get_istrash() == '0' ) { $trashclass = 'gwolle_gb_hide'; } ?>
617
+ <br />
618
+ <label for="remove" class="selectit gwolle_gb_remove <?php echo $trashclass; ?>">
619
+ <input id="remove" name="remove" type="checkbox" />
620
+ <?php esc_html_e('Remove this entry Permanently.', 'gwolle-gb'); ?>
621
+ </label>
622
+ <?php
623
+ } ?>
624
+
625
+ <div id="publishing-action">
626
+ <input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php esc_attr_e('Save', 'gwolle-gb'); ?>" />
627
+ </div> <!-- .publishing-action -->
628
+ <div class="clear"></div>
629
+ <?php
630
+ }
631
+
632
+
633
+ function gwolle_gb_editor_postbox_actions( $entry ) {
634
+ global $class;
635
+ if ( $entry->get_id() > 0 ) {
636
+ echo '
637
+ <p class="gwolle_gb_actions ' . $class . '">
638
+ <span class="gwolle_gb_check">
639
+ <a id="check_' . $entry->get_id() . '" href="#" class="vim-a" title="' . esc_attr__('Check entry', 'gwolle-gb') . '">' . esc_html__('Check', 'gwolle-gb') . '</a>
640
+ </span>
641
+ <span class="gwolle_gb_uncheck">
642
+ <a id="uncheck_' . $entry->get_id() . '" href="#" class="vim-u" title="' . esc_attr__('Uncheck entry', 'gwolle-gb') . '">' . esc_html__('Uncheck', 'gwolle-gb') . '</a>
643
+ </span>
644
+ <span class="gwolle_gb_spam">&nbsp;|&nbsp;
645
+ <a id="spam_' . $entry->get_id() . '" href="#" class="vim-s vim-destructive" title="' . esc_attr__('Mark entry as spam.', 'gwolle-gb') . '">' . esc_html__('Spam', 'gwolle-gb') . '</a>
646
+ </span>
647
+ <span class="gwolle_gb_unspam">&nbsp;|&nbsp;
648
+ <a id="unspam_' . $entry->get_id() . '" href="#" class="vim-a" title="' . esc_attr__('Mark entry as not-spam.', 'gwolle-gb') . '">' . esc_html__('Not spam', 'gwolle-gb') . '</a>
649
+ </span>
650
+ <span class="gwolle_gb_trash">&nbsp;|&nbsp;
651
+ <a id="trash_' . $entry->get_id() . '" href="#" class="vim-d vim-destructive" title="' . esc_attr__('Move entry to trash.', 'gwolle-gb') . '">' . /* translators: Move to Trashcan */ esc_html__('Trash', 'gwolle-gb') . '</a>
652
+ </span>
653
+ <span class="gwolle_gb_untrash">&nbsp;|&nbsp;
654
+ <a id="untrash_' . $entry->get_id() . '" href="#" class="vim-d" title="' . esc_attr__('Recover entry from trash.', 'gwolle-gb') . '">' . esc_html__('Untrash', 'gwolle-gb') . '</a>
655
+ </span><br />
656
+ <span class="gwolle_gb_ajax">
657
+ <a id="ajax_' . $entry->get_id() . '" href="#" class="ajax vim-d vim-destructive" title="' . esc_attr__('Please wait...', 'gwolle-gb') . '">' . esc_html__('Wait...', 'gwolle-gb') . '</a>
658
+ </span><br />
659
+ </p>
660
+ ';
661
+ }
662
+ }
663
+
664
+
665
+ function gwolle_gb_editor_postbox_details( $entry ) {
666
+ ?>
667
+ <p>
668
+ <?php _e('Author', 'gwolle-gb'); ?>: <span><?php
669
+ if ( $entry->get_author_name() ) {
670
+ echo gwolle_gb_sanitize_output( $entry->get_author_name() );
671
+ } else {
672
+ echo '<i>(' . esc_html__('Unknown', 'gwolle-gb') . ')</i>';
673
+ } ?>
674
+ </span><br />
675
+ <?php _e('Email', 'gwolle-gb'); ?>: <span><?php
676
+ if (strlen(str_replace( ' ', '', $entry->get_author_email() )) > 0) {
677
+ echo gwolle_gb_sanitize_output( $entry->get_author_email() );
678
+ } else {
679
+ echo '<i>(' . esc_html__('Unknown', 'gwolle-gb') . ')</i>';
680
+ } ?>
681
+ </span><br />
682
+ <?php _e('Date and time', 'gwolle-gb'); ?>: <span><?php
683
+ if ( $entry->get_datetime() > 0 ) {
684
+ echo date_i18n( get_option('date_format'), $entry->get_datetime() ) . ', ';
685
+ echo date_i18n( get_option('time_format'), $entry->get_datetime() );
686
+ } else {
687
+ echo '(' . esc_html__('Not yet', 'gwolle-gb') . ')';
688
+ } ?>
689
+ </span><br />
690
+ <?php _e("Author's IP-address", 'gwolle-gb'); ?>: <span><?php
691
+ if (strlen( $entry->get_author_ip() ) > 0) {
692
+ echo '<a href="http://www.db.ripe.net/whois?form_type=simple&searchtext=' . $entry->get_author_ip() . '"
693
+ title="' . esc_attr__('Whois search for this IP', 'gwolle-gb') . '" target="_blank">
694
+ ' . $entry->get_author_ip() . '
695
+ </a>';
696
+ } else {
697
+ echo '<i>(' . esc_html__('Unknown', 'gwolle-gb') . ')</i>';
698
+ } ?>
699
+ </span><br />
700
+ <?php _e('Host', 'gwolle-gb'); ?>: <span><?php
701
+ if (strlen( $entry->get_author_host() ) > 0) {
702
+ echo $entry->get_author_host();
703
+ } else {
704
+ echo '<i>(' . esc_html__('Unknown', 'gwolle-gb') . ')</i>';
705
+ } ?>
706
+ </span><br />
707
+ <?php _e('Book', 'gwolle-gb'); ?>: <span><?php echo $entry->get_book_id(); ?>
708
+ </span><br />
709
+ <span class="gwolle_gb_edit_meta">
710
+ <a href="#" title="<?php esc_attr_e('Edit metadata', 'gwolle-gb'); ?>"><?php esc_html_e('Edit', 'gwolle-gb'); ?></a>
711
+ </span>
712
+ </p>
713
+
714
+ <div class="gwolle_gb_edit_meta_inputs">
715
+ <label for="gwolle_gb_author_name"><?php esc_html_e('Author', 'gwolle-gb'); ?>: </label><br />
716
+ <input type="text" name="gwolle_gb_author_name" size="24" value="<?php echo gwolle_gb_sanitize_output( $entry->get_author_name() ); ?>" id="gwolle_gb_author_name" class="wp-exclude-emoji" /><br />
717
+
718
+ <span><?php esc_html_e('Date and time', 'gwolle-gb'); ?>: </span><br />
719
+ <div class="gwolle_gb_date"><?php
720
+ gwolle_gb_touch_time( $entry ); ?>
721
+ </div>
722
+
723
+ <label for="gwolle_gb_book_id"><?php esc_html_e('Book ID', 'gwolle-gb'); ?>: </label><br />
724
+ <input type="text" name="gwolle_gb_book_id" size="4" value="<?php echo (int) $entry->get_book_id(); ?>" id="gwolle_gb_book_id" />
725
+ </div>
726
+
727
+ <?php
728
+ }
729
+
730
+ function gwolle_gb_editor_postbox_logs( $entry ) {
731
+ ?>
732
+ <ul>
733
+ <?php
734
+ if ($entry->get_datetime() > 0) {
735
+ echo '<li>';
736
+ echo date_i18n( get_option('date_format'), $entry->get_datetime() ) . ', ';
737
+ echo date_i18n( get_option('time_format'), $entry->get_datetime() );
738
+ echo ': ' . /* translators: Log on Editor */ esc_html__('Written', 'gwolle-gb') . '</li>';
739
+
740
+ $log_entries = gwolle_gb_get_log_entries( $entry->get_id() );
741
+ if ( is_array($log_entries) && !empty($log_entries) ) {
742
+ foreach ($log_entries as $log_entry) {
743
+ echo '<li class="log_id_' . $log_entry['id'] . '">' . $log_entry['msg_html'] . '</li>';
744
+ }
745
+ }
746
+ } else {
747
+ echo '<li>(' . esc_html__('No log yet.', 'gwolle-gb') . ')</li>';
748
+ }
749
+ ?>
750
+ </ul>
751
+ <?php
752
+ }
admin/gb-page-entries.php ADDED
@@ -0,0 +1,715 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * entries.php
4
+ * Displays the guestbook entries in a list.
5
+ */
6
+
7
+ // No direct calls to this script
8
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
9
+ die('No direct calls allowed!');
10
+ }
11
+
12
+
13
+ function gwolle_gb_page_entries() {
14
+
15
+ if ( function_exists('current_user_can') && !current_user_can('moderate_comments') ) {
16
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
17
+ }
18
+
19
+ gwolle_gb_admin_enqueue();
20
+
21
+ $gwolle_gb_errors = '';
22
+ $gwolle_gb_messages = '';
23
+
24
+ if ( isset($_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'entries' ) {
25
+ $action = '';
26
+ if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'check' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'check' ) ) {
27
+ $action = 'check';
28
+ } else if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'uncheck' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'uncheck' ) ) {
29
+ $action = 'uncheck';
30
+ } else if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'spam' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'spam' ) ) {
31
+ $action = 'spam';
32
+ } else if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'no-spam' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'no-spam' ) ) {
33
+ $action = 'no-spam';
34
+ } else if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'akismet' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'akismet' ) ) {
35
+ $action = 'akismet';
36
+ } else if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'trash' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'trash' ) ) {
37
+ $action = 'trash';
38
+ } else if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'untrash' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'untrash' ) ) {
39
+ $action = 'untrash';
40
+ } else if ( ( isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'remove' ) || ( isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'remove' ) ) {
41
+ $action = 'remove';
42
+ }
43
+
44
+
45
+ /* Check if we are not sending in more entries than were even listed... */
46
+ $continue_on_entries_checked = false;
47
+ $entries_checked = 0;
48
+ $num_entries = get_option('gwolle_gb-entries_per_page', 20);
49
+ foreach( array_keys($_POST) as $postElementName ) {
50
+ if (strpos($postElementName, 'check') > -1 && !strpos($postElementName, '-all-') && $_POST[$postElementName] == 'on') {
51
+ $entries_checked++;
52
+ }
53
+ }
54
+ if ( $entries_checked < ( $num_entries + 1 ) ) {
55
+ $continue_on_entries_checked = true;
56
+ } else {
57
+ $gwolle_gb_messages .= '<p>' . /* translators: Someone seems to be abusing the website in strange ways. */ esc_html__('It seems you checked more entries then were even listed on the page.', 'gwolle-gb') . '</p>';
58
+ $gwolle_gb_errors = 'error';
59
+ }
60
+
61
+ /* Check Nonce */
62
+ $continue_on_nonce_checked = false;
63
+ if ( isset($_POST['gwolle_gb_wpnonce']) ) {
64
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_wpnonce'], 'gwolle_gb_page_entries' );
65
+ if ( $verified == true ) {
66
+ $continue_on_nonce_checked = true;
67
+ } else {
68
+ // Nonce is invalid, so considered spam
69
+ $gwolle_gb_messages .= '<p>' . esc_html__('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
70
+ $gwolle_gb_errors = 'error';
71
+ }
72
+ }
73
+ /* End of security checks. */
74
+
75
+
76
+ if ( $action != '' && $continue_on_entries_checked && $continue_on_nonce_checked ) {
77
+ // Initialize variables to generate messages with
78
+ $entries_handled = 0;
79
+ $entries_not_handled = 0;
80
+ $akismet_spam = 0;
81
+ $akismet_not_spam = 0;
82
+ $akismet_already_spam = 0;
83
+ $akismet_already_not_spam = 0;
84
+
85
+ /* Handle the $_POST entries */
86
+ foreach( array_keys($_POST) as $postElementName ) {
87
+ if (strpos($postElementName, 'check') > -1 && !strpos($postElementName, '-all-') && $_POST[$postElementName] == 'on') {
88
+ $entry_id = str_replace('check-','',$postElementName);
89
+ $entry_id = intval($entry_id);
90
+ if ( isset($entry_id) && $entry_id > 0 ) {
91
+ $entry = new gwolle_gb_entry();
92
+ $result = $entry->load( $entry_id );
93
+ if ( $result ) {
94
+
95
+ if ( $action == 'check' ) {
96
+ if ( $entry->get_ischecked() == 0 ) {
97
+ $entry->set_ischecked( true );
98
+ $user_id = get_current_user_id(); // returns 0 if no current user
99
+ $entry->set_checkedby( $user_id );
100
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-checked' );
101
+ $result = $entry->save();
102
+ if ( $result ) {
103
+ $entries_handled++;
104
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
105
+ } else {
106
+ $entries_not_handled++;
107
+ }
108
+ } else {
109
+ $entries_not_handled++;
110
+ }
111
+ } else if ( $action == 'uncheck' ) {
112
+ if ( $entry->get_ischecked() == 1 ) {
113
+ $entry->set_ischecked( false );
114
+ $user_id = get_current_user_id(); // returns 0 if no current user
115
+ $entry->set_checkedby( $user_id );
116
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-unchecked' );
117
+ $result = $entry->save();
118
+ if ( $result ) {
119
+ $entries_handled++;
120
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
121
+ } else {
122
+ $entries_not_handled++;
123
+ }
124
+ } else {
125
+ $entries_not_handled++;
126
+ }
127
+ } else if ( $action == 'spam' ) {
128
+
129
+ if ( $entry->get_isspam() == 0 ) {
130
+ $entry->set_isspam( true );
131
+ if ( get_option('gwolle_gb-akismet-active', 'false') == 'true' ) {
132
+ gwolle_gb_akismet( $entry, 'submit-spam' );
133
+ }
134
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-spam' );
135
+ $result = $entry->save();
136
+ if ( $result ) {
137
+ $entries_handled++;
138
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
139
+ } else {
140
+ $entries_not_handled++;
141
+ }
142
+ } else {
143
+ $entries_not_handled++;
144
+ }
145
+ } else if ( $action == 'no-spam' ) {
146
+ if ( $entry->get_isspam() == 1 ) {
147
+ $entry->set_isspam( false );
148
+ if ( get_option('gwolle_gb-akismet-active', 'false') == 'true' ) {
149
+ gwolle_gb_akismet( $entry, 'submit-ham' );
150
+ }
151
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-not-spam' );
152
+ $result = $entry->save();
153
+ if ( $result ) {
154
+ $entries_handled++;
155
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
156
+ } else {
157
+ $entries_not_handled++;
158
+ }
159
+ } else {
160
+ $entries_not_handled++;
161
+ }
162
+ } else if ( $action == 'akismet' ) {
163
+ /* Check for spam and set accordingly */
164
+ if ( get_option('gwolle_gb-akismet-active', 'false') == 'true' ) {
165
+ $isspam = gwolle_gb_akismet( $entry, 'comment-check' );
166
+ if ( $isspam ) {
167
+ // Returned true, so considered spam
168
+ if ( $entry->get_isspam() == 0 ) {
169
+ $entry->set_isspam( true );
170
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-spam' );
171
+ $result = $entry->save();
172
+ if ( $result ) {
173
+ $akismet_spam++;
174
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
175
+ } else {
176
+ $akismet_not_spam++;
177
+ }
178
+ } else {
179
+ $akismet_already_spam++;
180
+ }
181
+ } else {
182
+ if ( $entry->get_isspam() == 1 ) {
183
+ $entry->set_isspam( false );
184
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-as-not-spam' );
185
+ $result = $entry->save();
186
+ if ( $result ) {
187
+ $akismet_not_spam++;
188
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
189
+ } else {
190
+ $akismet_spam++;
191
+ }
192
+ } else {
193
+ $akismet_already_not_spam++;
194
+ }
195
+ }
196
+ }
197
+ } else if ( $action == 'trash' ) {
198
+ if ( $entry->get_istrash() == 0 ) {
199
+ $entry->set_istrash( true );
200
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-trashed' );
201
+ $result = $entry->save();
202
+ if ( $result ) {
203
+ $entries_handled++;
204
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
205
+ } else {
206
+ $entries_not_handled++;
207
+ }
208
+ } else {
209
+ $entries_not_handled++;
210
+ }
211
+ } else if ( $action == 'untrash' ) {
212
+ if ( $entry->get_istrash() == 1 ) {
213
+ $entry->set_istrash( false );
214
+ gwolle_gb_add_log_entry( $entry->get_id(), 'entry-untrashed' );
215
+ $result = $entry->save();
216
+ if ( $result ) {
217
+ $entries_handled++;
218
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
219
+ } else {
220
+ $entries_not_handled++;
221
+ }
222
+ } else {
223
+ $entries_not_handled++;
224
+ }
225
+ } else if ( $action == 'remove' ) {
226
+ $result = $entry->delete();
227
+ if ( $result ) {
228
+ $entries_handled++;
229
+ do_action( 'gwolle_gb_save_entry_admin', $entry );
230
+ } else {
231
+ $entries_not_handled++;
232
+ }
233
+ }
234
+ } else { // no result on load()
235
+ $entries_not_handled++;
236
+ }
237
+ } else { // entry_id is not set or not > 0
238
+ $entries_not_handled++;
239
+ }
240
+ } // no entry with the check-'entry_id' input, continue
241
+ } // foreach
242
+
243
+
244
+ /* Construct Message */
245
+ if ( $action == 'check' ) {
246
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry checked.','%s entries checked.', $entries_handled, 'gwolle-gb'), $entries_handled ). '</p>';
247
+ } else if ( $action == 'uncheck' ) {
248
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry unchecked.','%s entries unchecked.', $entries_handled, 'gwolle-gb'), $entries_handled ). '</p>';
249
+ } else if ( $action == 'spam' ) {
250
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry marked as spam and submitted to Akismet as spam (if Akismet was enabled).','%s entries marked as spam and submitted to Akismet as spam (if Akismet was enabled).', $entries_handled, 'gwolle-gb'), $entries_handled ). '</p>';
251
+ } else if ( $action == 'no-spam' ) {
252
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry marked as not spam and submitted to Akismet as ham (if Akismet was enabled).','%s entries marked as not spam and submitted to Akismet as ham (if Akismet was enabled).', $entries_handled, 'gwolle-gb'), $entries_handled ). '</p>';
253
+ } else if ( $action == 'akismet' ) {
254
+ if ( $akismet_spam > 0 ) {
255
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry considered spam and marked as such.','%s entries considered spam and marked as such.', $akismet_spam, 'gwolle-gb'), $akismet_spam ). '</p>';
256
+ }
257
+ if ( $akismet_not_spam > 0 ) {
258
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry considered not spam and marked as such.','%s entries considered not spam and marked as such.', $akismet_not_spam, 'gwolle-gb'), $akismet_not_spam ). '</p>';
259
+ }
260
+ if ( $akismet_already_spam > 0 ) {
261
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry already considered spam and not changed.','%s entries already considered spam and not changed.', $akismet_already_spam, 'gwolle-gb'), $akismet_already_spam ). '</p>';
262
+ }
263
+ if ( $akismet_already_not_spam > 0 ) {
264
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry already considered not spam and not changed.','%s entries already considered not spam and not changed.', $akismet_already_not_spam, 'gwolle-gb'), $akismet_already_not_spam ). '</p>';
265
+ }
266
+ } else if ( $action == 'trash' ) {
267
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry moved to trash.','%s entries moved to trash.', $entries_handled, 'gwolle-gb'), $entries_handled ). '</p>';
268
+ } else if ( $action == 'untrash' ) {
269
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry recovered from trash.','%s entries recovered from trash.', $entries_handled, 'gwolle-gb'), $entries_handled ). '</p>';
270
+ } else if ( $action == 'remove' ) {
271
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry removed permanently.','%s entries removed permanently.', $entries_handled, 'gwolle-gb'), $entries_handled ). '</p>';
272
+ }
273
+ }
274
+
275
+ if ( isset( $_POST['delete_all'] ) || isset( $_POST['delete_all2'] ) ) {
276
+ if ( $continue_on_nonce_checked ) {
277
+ // Delete all entries in spam or trash
278
+ if ( isset($_POST['show']) && in_array($_POST['show'], array('spam', 'trash')) ) {
279
+ $delstatus = $_POST['show'];
280
+ $deleted = gwolle_gb_del_entries( $delstatus );
281
+ $gwolle_gb_messages .= '<p>' . sprintf( _n('%s entry removed permanently.','%s entries removed permanently.', $deleted, 'gwolle-gb'), $deleted ). '</p>';
282
+ }
283
+ }
284
+ }
285
+ }
286
+
287
+
288
+ // Get entry counts
289
+ $count = Array();
290
+ $count['checked'] = gwolle_gb_get_entry_count(array(
291
+ 'checked' => 'checked',
292
+ 'trash' => 'notrash',
293
+ 'spam' => 'nospam'
294
+ ));
295
+ $count['unchecked'] = gwolle_gb_get_entry_count(array(
296
+ 'checked' => 'unchecked',
297
+ 'trash' => 'notrash',
298
+ 'spam' => 'nospam'
299
+ ));
300
+ $count['spam'] = gwolle_gb_get_entry_count(array( 'spam' => 'spam' ));
301
+ $count['trash'] = gwolle_gb_get_entry_count(array( 'trash'=> 'trash' ));
302
+ $count['all'] = gwolle_gb_get_entry_count(array( 'all' => 'all' ));
303
+
304
+
305
+ $show = (isset($_REQUEST['show']) && in_array($_REQUEST['show'], array('checked', 'unchecked', 'spam', 'trash'))) ? $_REQUEST['show'] : 'all';
306
+
307
+ $num_entries = get_option('gwolle_gb-entries_per_page', 20);
308
+
309
+ // Check if the requested page number is an integer > 0
310
+ $pageNum = (isset($_REQUEST['pageNum']) && $_REQUEST['pageNum'] && (int) $_REQUEST['pageNum'] > 0) ? (int) $_REQUEST['pageNum'] : 1;
311
+
312
+ $pages_total = ceil( $count[$show] / $num_entries );
313
+ if ($pageNum > $pages_total) {
314
+ $pageNum = 1; // page doesnot exist, return to first page
315
+ }
316
+
317
+ // Calculate Query
318
+ if ($pageNum == 1 && $count[$show] > 0) {
319
+ $offset = 0;
320
+ } elseif ($count[$show] == 0) {
321
+ $offset = 0;
322
+ } else {
323
+ $offset = ($pageNum - 1) * $num_entries;
324
+ }
325
+
326
+ $book_id = 0;
327
+ if ( isset( $_GET['book_id'] ) ) {
328
+ $book_id = (int) $_GET['book_id'];
329
+ }
330
+
331
+ // Get the entries
332
+ if ( $show == 'checked' ) {
333
+ $entries = gwolle_gb_get_entries(array(
334
+ 'num_entries' => $num_entries,
335
+ 'offset' => $offset,
336
+ 'checked' => 'checked',
337
+ 'trash' => 'notrash',
338
+ 'spam' => 'nospam',
339
+ 'book_id' => $book_id
340
+ ));
341
+ $count_entries = gwolle_gb_get_entry_count(array(
342
+ 'checked' => 'checked',
343
+ 'trash' => 'notrash',
344
+ 'spam' => 'nospam',
345
+ 'book_id' => $book_id
346
+ ));
347
+ } else if ( $show == 'unchecked' ) {
348
+ $entries = gwolle_gb_get_entries(array(
349
+ 'num_entries' => $num_entries,
350
+ 'offset' => $offset,
351
+ 'checked' => 'unchecked',
352
+ 'trash' => 'notrash',
353
+ 'spam' => 'nospam',
354
+ 'book_id' => $book_id
355
+ ));
356
+ $count_entries = gwolle_gb_get_entry_count(array(
357
+ 'checked' => 'unchecked',
358
+ 'trash' => 'notrash',
359
+ 'spam' => 'nospam',
360
+ 'book_id' => $book_id
361
+ ));
362
+ } else if ( $show == 'spam' ) {
363
+ $entries = gwolle_gb_get_entries(array(
364
+ 'num_entries' => $num_entries,
365
+ 'offset' => $offset,
366
+ 'spam' => 'spam',
367
+ 'book_id' => $book_id
368
+ ));
369
+ $count_entries = gwolle_gb_get_entry_count(array(
370
+ 'spam' => 'spam',
371
+ 'book_id' => $book_id
372
+ ));
373
+ } else if ( $show == 'trash' ) {
374
+ $entries = gwolle_gb_get_entries(array(
375
+ 'num_entries' => $num_entries,
376
+ 'offset' => $offset,
377
+ 'trash' => 'trash',
378
+ 'book_id' => $book_id
379
+ ));
380
+ $count_entries = gwolle_gb_get_entry_count(array(
381
+ 'trash' => 'trash',
382
+ 'book_id' => $book_id
383
+ ));
384
+ } else {
385
+ $entries = gwolle_gb_get_entries(array(
386
+ 'num_entries' => $num_entries,
387
+ 'offset' => $offset,
388
+ 'all' => 'all',
389
+ 'book_id' => $book_id
390
+ ));
391
+ $count_entries = gwolle_gb_get_entry_count(array(
392
+ 'all' => 'all',
393
+ 'book_id' => $book_id
394
+ ));
395
+ }
396
+ $count_entrypages = ceil( $count_entries / $num_entries );
397
+ ?>
398
+
399
+ <div class="wrap gwolle_gb">
400
+ <div id="icon-gwolle-gb"><br /></div>
401
+ <h1><?php esc_html_e('Guestbook entries', 'gwolle-gb'); ?></h1>
402
+
403
+ <?php
404
+ if ( $gwolle_gb_messages ) {
405
+ echo '
406
+ <div id="message" class="updated fade notice is-dismissible ' . $gwolle_gb_errors . ' ">' .
407
+ $gwolle_gb_messages .
408
+ '</div>';
409
+ } ?>
410
+
411
+ <form name="gwolle_gb_entries" id="gwolle_gb_entries" action="" method="POST" accept-charset="UTF-8">
412
+
413
+ <input type="hidden" name="gwolle_gb_page" value="entries" />
414
+ <!-- the following fields give us some information used for processing the mass edit -->
415
+ <input type="hidden" name="pageNum" value="<?php echo $pageNum; ?>">
416
+ <input type="hidden" name="entriesOnThisPage" value="<?php echo count($entries); ?>">
417
+ <input type="hidden" name="show" value="<?php echo $show; ?>">
418
+
419
+ <?php
420
+ /* Nonce */
421
+ $nonce = wp_create_nonce( 'gwolle_gb_page_entries' );
422
+ echo '<input type="hidden" id="gwolle_gb_wpnonce" name="gwolle_gb_wpnonce" value="' . $nonce . '" />';
423
+ ?>
424
+
425
+ <ul class="subsubsub">
426
+ <li><a href='admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php' <?php
427
+ if ($show == 'all') { echo 'class="current"'; }
428
+ ?>>
429
+ <?php esc_html_e('All', 'gwolle-gb'); ?> <span class="count gwolle_gb_all">(<?php echo $count['all']; ?>)</span></a> |
430
+ </li>
431
+ <li><a href='admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=checked' <?php
432
+ if ($show == 'checked') { echo 'class="current"'; }
433
+ ?>>
434
+ <?php esc_html_e('Unlocked', 'gwolle-gb'); ?> <span class="count gwolle_gb_unlocked">(<?php echo $count['checked']; ?>)</span></a> |
435
+ </li>
436
+ <li><a href='admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=unchecked' <?php
437
+ if ($show == 'unchecked') { echo 'class="current"'; }
438
+ ?>><?php esc_html_e('New', 'gwolle-gb'); ?> <span class="count gwolle_gb_new">(<?php echo $count['unchecked']; ?>)</span></a> |
439
+ </li>
440
+ <li><a href='admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=spam' <?php
441
+ if ($show == 'spam') { echo 'class="current"'; }
442
+ ?>><?php esc_html_e('Spam', 'gwolle-gb'); ?> <span class="count gwolle_gb_spam_">(<?php echo $count['spam']; ?>)</span></a> |
443
+ </li>
444
+ <li><a href='admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=trash' <?php
445
+ if ($show == 'trash') { echo 'class="current"'; }
446
+ ?>><?php /* translators: Is in Trashcan */ esc_html_e('In Trash', 'gwolle-gb'); ?> <span class="count gwolle_gb_trash_">(<?php echo $count['trash']; ?>)</span></a>
447
+ </li>
448
+ </ul>
449
+
450
+ <div class="tablenav">
451
+ <div class="alignleft actions">
452
+ <?php
453
+ $massEditControls_select = '<select name="massEditAction1">';
454
+ $massEditControls = '<option value="-1" selected="selected">' . esc_html__('Mass edit actions', 'gwolle-gb') . '</option>';
455
+ if ($show == 'trash') {
456
+ $massEditControls .= '
457
+ <option value="untrash">' . esc_html__('Recover from trash', 'gwolle-gb') . '</option>
458
+ <option value="remove">' . esc_html__('Remove permanently', 'gwolle-gb') . '</option>';
459
+ } else {
460
+ if ($show != 'checked') {
461
+ $massEditControls .= '<option value="check">' . esc_html__('Mark as checked', 'gwolle-gb') . '</option>';
462
+ }
463
+ if ($show != 'unchecked') {
464
+ $massEditControls .= '<option value="uncheck">' . esc_html__('Mark as not checked', 'gwolle-gb') . '</option>';
465
+ }
466
+ if ($show != 'spam') {
467
+ $massEditControls .= '<option value="spam">' . esc_html__('Mark as spam', 'gwolle-gb') . '</option>';
468
+ }
469
+ $massEditControls .= '<option value="no-spam">' . esc_html__('Mark as not spam', 'gwolle-gb') . '</option>';
470
+ if ( get_option('gwolle_gb-akismet-active', 'false') == 'true' ) {
471
+ $massEditControls .= '<option value="akismet">' . esc_html__('Check with Akismet', 'gwolle-gb') . '</option>';
472
+ }
473
+ $massEditControls .= '<option value="trash">' . esc_html__('Move to trash', 'gwolle-gb') . '</option>';
474
+ if ( $show == 'spam' ) {
475
+ $massEditControls .= '<option value="remove">' . esc_html__('Remove permanently', 'gwolle-gb') . '</option>';
476
+ }
477
+
478
+ }
479
+ $massEditControls .= '</select>';
480
+ $massEditControls .= '<input type="submit" value="' . esc_attr__('Apply', 'gwolle-gb') . '" name="doaction" id="doaction" class="button-secondary action" />';
481
+ $empty_button = '';
482
+ if ( $show == 'spam' ) {
483
+ $empty_button = '<input type="submit" name="delete_all" id="delete_all" class="button apply" value="' . esc_attr__('Empty Spam', 'gwolle-gb') . '" />';
484
+ } else if ( $show == 'trash' ) {
485
+ $empty_button = '<input type="submit" name="delete_all" id="delete_all" class="button apply" value="' . esc_attr__('Empty Trash', 'gwolle-gb') . '" />';
486
+ }
487
+
488
+ // Only show controls when there are entries
489
+ if ( is_array($entries) && ! empty($entries) ) {
490
+ echo $massEditControls_select . $massEditControls . $empty_button;
491
+ } ?>
492
+ </div>
493
+
494
+ <?php
495
+ $pagination = gwolle_gb_pagination_admin( $pageNum, $count_entrypages, $count_entries, $show );
496
+ echo $pagination;
497
+ ?>
498
+ </div>
499
+
500
+ <div>
501
+ <table class="widefat">
502
+ <thead>
503
+ <tr>
504
+ <th scope="col" class="manage-column column-cb check-column"><input name="check-all-top" id="check-all-top" type="checkbox"></th>
505
+ <th scope="col"><?php esc_html_e('Book', 'gwolle-gb'); if ($book_id > 0) { echo ' ' . $book_id; } ?></th>
506
+ <th scope="col"><?php esc_html_e('ID', 'gwolle-gb'); ?></th>
507
+ <?php
508
+ if (get_option('gwolle_gb-showEntryIcons', 'true') === 'true') { ?>
509
+ <th scope="col"><?php esc_html_e('Status', 'gwolle-gb'); ?></th><!-- this is the icon-column -->
510
+ <?php
511
+ } ?>
512
+ <th scope="col"><?php esc_html_e('Date', 'gwolle-gb'); ?></th>
513
+ <th scope="col"><?php esc_html_e('Author', 'gwolle-gb'); ?></th>
514
+ <th scope="col"><?php esc_html_e('Entry (excerpt)', 'gwolle-gb'); ?></th>
515
+ <th scope="col"><?php esc_html_e('Action', 'gwolle-gb'); ?></th>
516
+ </tr>
517
+ </thead>
518
+
519
+ <tfoot>
520
+ <tr>
521
+ <th scope="col" class="manage-column column-cb check-column"><input name="check-all-bottom" id="check-all-bottom" type="checkbox"></th>
522
+ <th scope="col"><?php esc_html_e('Book', 'gwolle-gb'); if ($book_id > 0) { echo ' ' . $book_id; } ?></th>
523
+ <th scope="col"><?php esc_html_e('ID', 'gwolle-gb'); ?></th>
524
+ <?php
525
+ if (get_option('gwolle_gb-showEntryIcons', 'true') === 'true') { ?>
526
+ <th scope="col"><?php esc_html_e('Status', 'gwolle-gb'); ?></th><!-- this is the icon-column -->
527
+ <?php
528
+ } ?>
529
+ <th scope="col"><?php esc_html_e('Date', 'gwolle-gb'); ?></th>
530
+ <th scope="col"><?php esc_html_e('Author', 'gwolle-gb'); ?></th>
531
+ <th scope="col"><?php esc_html_e('Entry (excerpt)', 'gwolle-gb'); ?></th>
532
+ <th scope="col"><?php esc_html_e('Action', 'gwolle-gb'); ?></th>
533
+ </tr>
534
+ </tfoot>
535
+
536
+
537
+ <tbody>
538
+ <?php
539
+ $request_uri = $_SERVER['REQUEST_URI'];
540
+ $rowOdd = true;
541
+ $html_output = '';
542
+ if ( !is_array($entries) || empty($entries) ) {
543
+ $colspan = (get_option('gwolle_gb-showEntryIcons', 'true') === 'true') ? 8 : 7;
544
+ $html_output .= '
545
+ <tr>
546
+ <td colspan="' . $colspan . '" align="center">
547
+ <strong>' . esc_html__('No entries found.', 'gwolle-gb') . '</strong>
548
+ </td>
549
+ </tr>';
550
+ } else {
551
+ foreach ($entries as $entry) {
552
+
553
+ // rows have a different color.
554
+ if ($rowOdd) {
555
+ $rowOdd = false;
556
+ $class = ' alternate';
557
+ } else {
558
+ $rowOdd = true;
559
+ $class = '';
560
+ }
561
+
562
+ // Attach 'spam' to class if the entry is spam
563
+ if ( $entry->get_isspam() === 1 ) {
564
+ $class .= ' spam';
565
+ } else {
566
+ $class .= ' nospam';
567
+ }
568
+
569
+ // Attach 'trash' to class if the entry is in trash
570
+ if ( $entry->get_istrash() === 1 ) {
571
+ $class .= ' trash';
572
+ } else {
573
+ $class .= ' notrash';
574
+ }
575
+
576
+ // Attach 'checked/unchecked' to class
577
+ if ( $entry->get_ischecked() === 1 ) {
578
+ $class .= ' checked';
579
+ } else {
580
+ $class .= ' unchecked';
581
+ }
582
+
583
+ // Attach 'visible/invisible' to class
584
+ if ( $entry->get_isspam() === 1 || $entry->get_istrash() === 1 || $entry->get_ischecked() === 0 ) {
585
+ $class .= ' invisible';
586
+ } else {
587
+ $class .= ' visible';
588
+ }
589
+
590
+ // Add admin-entry class to an entry from an admin
591
+ $author_id = $entry->get_author_id();
592
+ $is_moderator = gwolle_gb_is_moderator( $author_id );
593
+ if ( $is_moderator ) {
594
+ $class .= ' admin-entry';
595
+ }
596
+
597
+ // Checkbox and ID columns
598
+ $html_output .= '
599
+ <tr id="entry_' . $entry->get_id() . '" class="entry ' . $class . '">
600
+ <td class="check">
601
+ <input name="check-' . $entry->get_id() . '" id="check-' . $entry->get_id() . '" type="checkbox">
602
+ </td>
603
+ <td class="book">
604
+ <span class="book-icon" title="' . esc_html__('Book ID', 'gwolle-gb') . ' ' . $entry->get_book_id() . '">
605
+ <a href="' . add_query_arg( 'book_id', $entry->get_book_id(), $request_uri ) . '"
606
+ title="' . esc_html__('Book ID', 'gwolle-gb') . ' ' . $entry->get_book_id() . '">
607
+ ' . $entry->get_book_id() . '
608
+ </a>
609
+ </span>
610
+ </td>
611
+ <td class="id">' . $entry->get_id() . '</td>';
612
+
613
+ // Optional Icon column where CSS is being used to show them or not
614
+ if ( get_option('gwolle_gb-showEntryIcons', 'true') === 'true' ) {
615
+ $html_output .= '
616
+ <td class="entry-icons">
617
+ <span class="visible-icon" title="' . esc_html__('Visible', 'gwolle-gb') . '"></span>
618
+ <span class="invisible-icon" title="' . esc_html__('Invisible', 'gwolle-gb') . '"></span>
619
+ <span class="spam-icon" title="' . esc_html__('Spam', 'gwolle-gb') . '"></span>
620
+ <span class="trash-icon" title="' . /* translators: Is in Trashcan */ esc_html__('In Trash', 'gwolle-gb') . '""></span>';
621
+ $admin_reply = gwolle_gb_sanitize_output( $entry->get_admin_reply(), 'admin_reply' );
622
+ if ( strlen( trim($admin_reply) ) > 0 ) {
623
+ $html_output .= '
624
+ <span class="admin_reply-icon" title="' . esc_html__('Admin Replied', 'gwolle-gb') . '"></span>';
625
+ }
626
+ $html_output .= '
627
+ <span class="gwolle_gb_ajax" title="' . esc_html__('Wait...', 'gwolle-gb') . '"></span>
628
+ </td>';
629
+ }
630
+
631
+ // Date column
632
+ $html_output .= '
633
+ <td class="entry-date">' . date_i18n( get_option('date_format'), $entry->get_datetime() ) . ', ' .
634
+ date_i18n( get_option('time_format'), $entry->get_datetime() ) .
635
+ '</td>';
636
+
637
+ // Author column
638
+ $author_name_html = gwolle_gb_get_author_name_html($entry);
639
+ $html_output .= '
640
+ <td class="entry-author-name"><span class="author-name">' . $author_name_html . '</span><br />' .
641
+ '<span class="author-email">' . $entry->get_author_email() . '</span>' .
642
+ '</td>';
643
+
644
+ // Excerpt column
645
+ $html_output .= '
646
+ <td class="entry-content">
647
+ <label for="check-' . $entry->get_id() . '">';
648
+ $entry_content = gwolle_gb_get_excerpt( $entry->get_content(), 17 );
649
+ if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
650
+ $entry_content = convert_smilies($entry_content);
651
+ }
652
+ $html_output .= $entry_content . '</label>
653
+ </td>';
654
+
655
+ // Actions column
656
+ $html_output .= '
657
+ <td class="gwolle_gb_actions">
658
+ <span class="gwolle_gb_edit">
659
+ <a href="admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id() . '" title="' . esc_attr__('Edit entry', 'gwolle-gb') . '">' . esc_html__('Edit', 'gwolle-gb') . '</a>
660
+ </span>
661
+ <span class="gwolle_gb_check">&nbsp;|&nbsp;
662
+ <a id="check_' . $entry->get_id() . '" href="#" class="vim-a" title="' . esc_attr__('Check entry', 'gwolle-gb') . '">' . esc_html__('Check', 'gwolle-gb') . '</a>
663
+ </span>
664
+ <span class="gwolle_gb_uncheck">&nbsp;|&nbsp;
665
+ <a id="uncheck_' . $entry->get_id() . '" href="#" class="vim-u" title="' . esc_attr__('Uncheck entry', 'gwolle-gb') . '">' . esc_html__('Uncheck', 'gwolle-gb') . '</a>
666
+ </span>
667
+ <span class="gwolle_gb_spam">&nbsp;|&nbsp;
668
+ <a id="spam_' . $entry->get_id() . '" href="#" class="vim-s vim-destructive" title="' . esc_attr__('Mark entry as spam.', 'gwolle-gb') . '">' . esc_html__('Spam', 'gwolle-gb') . '</a>
669
+ </span>
670
+ <span class="gwolle_gb_unspam">&nbsp;|&nbsp;
671
+ <a id="unspam_' . $entry->get_id() . '" href="#" class="vim-a" title="' . esc_attr__('Mark entry as not-spam.', 'gwolle-gb') . '">' . esc_html__('Not spam', 'gwolle-gb') . '</a>
672
+ </span>
673
+ <span class="gwolle_gb_trash">&nbsp;|&nbsp;
674
+ <a id="trash_' . $entry->get_id() . '" href="#" class="vim-d vim-destructive" title="' . esc_attr__('Move entry to trash.', 'gwolle-gb') . '">' . /* translators: Move to Trashcan */ esc_html__('Trash', 'gwolle-gb') . '</a>
675
+ </span>
676
+ <span class="gwolle_gb_untrash">&nbsp;|&nbsp;
677
+ <a id="untrash_' . $entry->get_id() . '" href="#" class="vim-d" title="' . esc_attr__('Recover entry from trash.', 'gwolle-gb') . '">' . esc_html__('Untrash', 'gwolle-gb') . '</a>
678
+ </span>
679
+ <span class="gwolle_gb_ajax">&nbsp;|&nbsp;
680
+ <a id="ajax_' . $entry->get_id() . '" href="#" class="ajax vim-d vim-destructive" title="' . esc_attr__('Please wait...', 'gwolle-gb') . '">' . esc_html__('Wait...', 'gwolle-gb') . '</a>
681
+ </span>
682
+ </td>
683
+ </tr>';
684
+ }
685
+ }
686
+ echo $html_output;
687
+ ?>
688
+ </tbody>
689
+ </table>
690
+ </div>
691
+
692
+ <div class="tablenav">
693
+ <div class="alignleft actions">
694
+ <?php
695
+ $massEditControls_select = '<select name="massEditAction2">';
696
+ $empty_button = '';
697
+ if ( $show == 'spam' ) {
698
+ $empty_button = '<input type="submit" name="delete_all2" id="delete_all2" class="button apply" value="' . esc_attr__('Empty Spam', 'gwolle-gb') . '" />';
699
+ } else if ( $show == 'trash' ) {
700
+ $empty_button = '<input type="submit" name="delete_all2" id="delete_all2" class="button apply" value="' . esc_attr__('Empty Trash', 'gwolle-gb') . '" />';
701
+ }
702
+
703
+ // Only show controls when there are entries
704
+ if ( is_array($entries) && !empty($entries) ) {
705
+ echo $massEditControls_select . $massEditControls . $empty_button;
706
+ } ?>
707
+ </div>
708
+ <?php echo $pagination; ?>
709
+ </div>
710
+
711
+ </form>
712
+
713
+ </div>
714
+ <?php
715
+ }
admin/gb-page-export.php ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php /*
2
+ *
3
+ * export.php
4
+ * Lets the user export guestbook entries to a CSV file.
5
+ *
6
+ */
7
+
8
+ // No direct calls to this script
9
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
10
+ die('No direct calls allowed!');
11
+ }
12
+
13
+
14
+ function gwolle_gb_page_export() {
15
+
16
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
17
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
18
+ }
19
+
20
+ gwolle_gb_admin_enqueue();
21
+
22
+ $count = gwolle_gb_get_entry_count(array( 'all' => 'all' ));
23
+ $num_entries = 5000;
24
+ $parts = ceil( $count / $num_entries );
25
+
26
+ /*
27
+ * Build the Page and the Form
28
+ */
29
+ ?>
30
+ <div class="wrap gwolle_gb">
31
+ <div id="icon-gwolle-gb"><br /></div>
32
+ <h1><?php _e('Export guestbook entries.', 'gwolle-gb'); ?></h1>
33
+
34
+ <form name="gwolle_gb_export" id="gwolle_gb_export" method="POST" action="#" accept-charset="UTF-8">
35
+ <input type="hidden" name="gwolle_gb_page" value="gwolle_gb_export" />
36
+ <input type="hidden" name="gwolle_gb_export_part" id="gwolle_gb_export_part" value="1" />
37
+ <input type="hidden" name="gwolle_gb_export_parts" id="gwolle_gb_export_parts" value="<?php echo $parts; ?>" />
38
+
39
+ <?php
40
+ /* Nonce */
41
+ $nonce = wp_create_nonce( 'gwolle_gb_page_export' );
42
+ echo '<input type="hidden" id="gwolle_gb_wpnonce" name="gwolle_gb_wpnonce" value="' . $nonce . '" />';
43
+ ?>
44
+
45
+ <div id="poststuff" class="gwolle_gb_export metabox-holder">
46
+ <div class="postbox-container">
47
+ <?php
48
+ add_meta_box('gwolle_gb_export_postbox', esc_html__('Export guestbook entries from Gwolle-GB','gwolle-gb'), 'gwolle_gb_export_postbox', 'gwolle_gb_export', 'normal');
49
+
50
+ do_meta_boxes( 'gwolle_gb_export', 'normal', '' );
51
+ ?>
52
+ </div>
53
+ </div>
54
+
55
+ </form>
56
+ </div><?php
57
+
58
+ }
59
+
60
+
61
+ function gwolle_gb_export_postbox() {
62
+ $count = gwolle_gb_get_entry_count( array( 'all' => 'all' ) );
63
+ $num_entries = 5000;
64
+ $parts = ceil( $count / $num_entries );
65
+ if ( $count == 0 ) { ?>
66
+ <p><?php esc_html_e('No entries were found.', 'gwolle-gb'); ?></p><?php
67
+ } else {
68
+ ?>
69
+ <p>
70
+ <?php echo sprintf( _n( '%s entry was found and will be exported.', '%s entries were found and will be exported.', $count, 'gwolle-gb' ), $count ); ?>
71
+ <br />
72
+ <?php echo sprintf( _n( 'The download will happen in a CSV file in %s part.', 'The download will happen in a CSV file in %s parts.', $parts, 'gwolle-gb' ), $parts ); ?>
73
+ </p>
74
+ <p>
75
+ <?php esc_html_e('The exporter will preserve the following data per entry:', 'gwolle-gb'); ?>
76
+ </p>
77
+ <ul class="ul-disc">
78
+ <li><?php esc_html_e('Name', 'gwolle-gb'); ?></li>
79
+ <li><?php esc_html_e('E-Mail address', 'gwolle-gb'); ?></li>
80
+ <li><?php esc_html_e('URL/Website', 'gwolle-gb'); ?></li>
81
+ <li><?php esc_html_e('Origin', 'gwolle-gb'); ?></li>
82
+ <li><?php esc_html_e('Date of the entry', 'gwolle-gb'); ?></li>
83
+ <li><?php esc_html_e('IP address', 'gwolle-gb'); ?></li>
84
+ <li><?php esc_html_e('Host address', 'gwolle-gb'); ?></li>
85
+ <li><?php esc_html_e('Message', 'gwolle-gb'); ?></li>
86
+ <li><?php esc_html_e('"is checked" flag', 'gwolle-gb'); ?></li>
87
+ <li><?php esc_html_e('"is spam" flag', 'gwolle-gb'); ?></li>
88
+ <li><?php esc_html_e('"is trash" flag', 'gwolle-gb'); ?></li>
89
+ <li><?php esc_html_e('Admin Reply', 'gwolle-gb'); ?></li>
90
+ </ul>
91
+ <?php esc_html_e('The exporter does not delete any data, so your data will still be here.', 'gwolle-gb'); ?>
92
+
93
+ <p>
94
+ <label for="start_export_enable" class="selectit">
95
+ <input id="start_export_enable" name="start_export_enable" type="checkbox" />
96
+ <?php esc_html_e('Export all entries from this website.', 'gwolle-gb'); ?>
97
+ </label>
98
+ </p>
99
+ <p class="gwolle_gb_export_gif_container">
100
+ <input name="gwolle_gb_start_export" id="gwolle_gb_start_export" type="submit" class="button" disabled value="<?php esc_attr_e('Start export', 'gwolle-gb'); ?>">
101
+ <span class="gwolle_gb_export_gif"></span>
102
+ </p>
103
+ <?php
104
+ }
105
+ }
106
+
107
+
108
+ add_action('admin_init', 'gwolle_gb_export_action');
109
+ function gwolle_gb_export_action() {
110
+ if ( is_admin() ) {
111
+ if ( isset( $_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'gwolle_gb_export' ) {
112
+ gwolle_gb_export_callback();
113
+ }
114
+ }
115
+ }
116
+
117
+
118
+ /*
119
+ * Callback function for request generated from the Export page
120
+ */
121
+ function gwolle_gb_export_callback() {
122
+
123
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
124
+ echo 'error, no permission.';
125
+ die();
126
+ }
127
+
128
+ /* Check Nonce */
129
+ $verified = false;
130
+ if ( isset($_POST['gwolle_gb_wpnonce']) ) {
131
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_wpnonce'], 'gwolle_gb_page_export' );
132
+ }
133
+ if ( $verified == false ) {
134
+ // Nonce is invalid.
135
+ esc_html_e('Nonce check failed. Please go back and try again.', 'gwolle-gb');
136
+ die();
137
+ }
138
+
139
+ $count = gwolle_gb_get_entry_count(array( 'all' => 'all' ));
140
+ $num_entries = 5000;
141
+ $parts = ceil( $count / $num_entries );
142
+ if ( isset( $_POST['gwolle_gb_export_part']) && ( (int) $_POST['gwolle_gb_export_part'] < ($parts + 1) ) ) {
143
+ $part = (int) $_POST['gwolle_gb_export_part'];
144
+ } else {
145
+ echo '(Gwolle-GB) Wrong part requested.';
146
+ die();
147
+ }
148
+ $offset = ($part * 5000) - 5000;
149
+
150
+ $entries = gwolle_gb_get_entries(array(
151
+ 'num_entries' => $num_entries,
152
+ 'offset' => $offset,
153
+ 'all' => 'all'
154
+ ));
155
+
156
+ if ( is_array($entries) && !empty($entries) ) {
157
+
158
+ // Clean everything before here
159
+ ob_end_clean();
160
+
161
+ // Output headers so that the file is downloaded rather than displayed
162
+ $filename = 'gwolle_gb_export_' . GWOLLE_GB_VER . '_' . date('Y-m-d_H-i') . '-part_' . $part . '_of_' . $parts . '.csv';
163
+ header( 'Content-Type: text/csv; charset=utf-8' );
164
+ header( 'Content-Disposition: attachment; filename=' . $filename );
165
+
166
+ // Create a file pointer connected to the output stream
167
+ $output = fopen('php://output', 'w');
168
+
169
+ // Output the column headings
170
+ fputcsv($output, array(
171
+ 'id',
172
+ 'author_name',
173
+ 'author_email',
174
+ 'author_origin',
175
+ 'author_website',
176
+ 'author_ip',
177
+ 'author_host',
178
+ 'content',
179
+ 'datetime',
180
+ 'isspam',
181
+ 'ischecked',
182
+ 'istrash',
183
+ 'admin_reply'
184
+ ));
185
+
186
+ $saved = 0;
187
+ foreach ( $entries as $entry ) {
188
+
189
+ $row = Array();
190
+
191
+ $row[] = $entry->get_id();
192
+ $row[] = addslashes($entry->get_author_name());
193
+ $row[] = addslashes($entry->get_author_email());
194
+ $row[] = addslashes($entry->get_author_origin());
195
+ $row[] = addslashes($entry->get_author_website());
196
+ $row[] = $entry->get_author_ip();
197
+ $row[] = $entry->get_author_host();
198
+ $row[] = addslashes($entry->get_content());
199
+ $row[] = $entry->get_datetime();
200
+ $row[] = $entry->get_isspam();
201
+ $row[] = $entry->get_ischecked();
202
+ $row[] = $entry->get_istrash();
203
+ $row[] = $entry->get_admin_reply();
204
+
205
+ fputcsv($output, $row);
206
+
207
+ gwolle_gb_add_log_entry( $entry->get_id(), 'exported-to-csv' );
208
+ $saved++;
209
+
210
+ }
211
+
212
+ fclose($output);
213
+ die();
214
+ }
215
+
216
+ echo '(Gwolle-GB) Error, no entries.';
217
+ die();
218
+ }
admin/gb-page-gwolle-gb.php ADDED
@@ -0,0 +1,397 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Shows the overview screen with the widget-like windows.
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ /* Show the page */
13
+ function gwolle_gb_welcome() {
14
+
15
+ if ( function_exists('current_user_can') && ! current_user_can('moderate_comments') ) {
16
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
17
+ }
18
+
19
+ /* Post Handling: Save notification setting */
20
+ if ( isset( $_POST['option_page']) && $_POST['option_page'] == 'gwolle_gb_options' ) {
21
+ gwolle_gb_welcome_post();
22
+ }
23
+
24
+ gwolle_gb_admin_enqueue();
25
+
26
+ add_meta_box('gwolle_gb_right_now', esc_html__('Welcome to the Guestbook!','gwolle-gb'), 'gwolle_gb_overview', 'gwolle_gb_welcome', 'normal');
27
+ add_meta_box('gwolle_gb_visibility', esc_html__('Visibility', 'gwolle-gb'), 'gwolle_gb_overview_visibility', 'gwolle_gb_welcome', 'normal');
28
+ add_meta_box('gwolle_gb_notification', esc_html__('E-mail Notifications', 'gwolle-gb'), 'gwolle_gb_overview_notification', 'gwolle_gb_welcome', 'normal');
29
+ add_meta_box('gwolle_gb_thanks', esc_html__('Third Party','gwolle-gb'), 'gwolle_gb_overview_thanks', 'gwolle_gb_welcome', 'normal');
30
+
31
+ add_meta_box('gwolle_gb_help', esc_html__('Help', 'gwolle-gb'), 'gwolle_gb_overview_help', 'gwolle_gb_welcome', 'right');
32
+ add_meta_box('gwolle_gb_support', esc_html__('Support and Translations', 'gwolle-gb'), 'gwolle_gb_overview_support', 'gwolle_gb_welcome', 'right');
33
+ add_meta_box('gwolle_gb_donate', esc_html__('Review and Donate', 'gwolle-gb'), 'gwolle_gb_overview_donate', 'gwolle_gb_welcome', 'right');
34
+
35
+ ?>
36
+ <div class="wrap gwolle_gb">
37
+ <div id="icon-gwolle-gb"><br /></div>
38
+ <h1><?php esc_html_e('Gwolle Guestbook', 'gwolle-gb'); ?></h1>
39
+
40
+ <?php
41
+ $gwolle_gb_messages = gwolle_gb_get_messages();
42
+ $gwolle_gb_errors = gwolle_gb_get_errors();
43
+ $messageclass = '';
44
+ if ( $gwolle_gb_errors ) {
45
+ $messageclass = 'error';
46
+ }
47
+
48
+ if ( $gwolle_gb_messages ) {
49
+ echo '
50
+ <div id="message" class="updated fade notice is-dismissible ' . $messageclass . ' ">' .
51
+ $gwolle_gb_messages .
52
+ '</div>';
53
+ } ?>
54
+
55
+ <div id="dashboard-widgets-wrap" class="gwolle_gb_welcome">
56
+ <div id="dashboard-widgets" class="metabox-holder">
57
+ <div class="postbox-container">
58
+ <?php do_meta_boxes( 'gwolle_gb_welcome', 'normal', '' ); ?>
59
+ </div>
60
+ <div class="postbox-container">
61
+ <?php do_meta_boxes( 'gwolle_gb_welcome', 'right', '' ); ?>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ <?php
67
+ }
68
+
69
+
70
+
71
+ function gwolle_gb_overview(){
72
+
73
+ // Calculate the number of entries
74
+ $count = Array();
75
+ $count['checked'] = gwolle_gb_get_entry_count(array(
76
+ 'checked' => 'checked',
77
+ 'trash' => 'notrash',
78
+ 'spam' => 'nospam'
79
+ ));
80
+ $count['unchecked'] = gwolle_gb_get_entry_count(array(
81
+ 'checked' => 'unchecked',
82
+ 'trash' => 'notrash',
83
+ 'spam' => 'nospam'
84
+ ));
85
+ $count['spam'] = gwolle_gb_get_entry_count(array( 'spam' => 'spam' ));
86
+ $count['trash'] = gwolle_gb_get_entry_count(array( 'trash' => 'trash' ));
87
+ $count['all'] = gwolle_gb_get_entry_count(array( 'all' => 'all' ));
88
+ ?>
89
+
90
+ <div class="table table_content gwolle_gb">
91
+ <h3><?php _e('Overview','gwolle-gb'); ?></h3>
92
+
93
+ <table>
94
+ <tbody>
95
+ <tr class="first">
96
+ <td class="first b">
97
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php">
98
+ <?php echo $count['all']; ?>
99
+ </a>
100
+ </td>
101
+
102
+ <td class="t" style="color:#0000f0;">
103
+ <?php echo _n( 'Entry total', 'Entries total', $count['all'], 'gwolle-gb' ); ?>
104
+ </td>
105
+ <td class="b"></td>
106
+ <td class="last"></td>
107
+ </tr>
108
+
109
+ <tr>
110
+ <td class="first b">
111
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=checked">
112
+ <?php echo $count['checked']; ?>
113
+ </a></td>
114
+ <td class="t" style="color:#008000;">
115
+ <?php echo _n( 'Unlocked entry', 'Unlocked entries', $count['checked'], 'gwolle-gb' ); ?>
116
+ </td>
117
+ <td class="b"></td>
118
+ <td class="last"></td>
119
+ </tr>
120
+
121
+ <tr>
122
+ <td class="first b">
123
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=unchecked">
124
+ <?php echo $count['unchecked']; ?>
125
+ </a></td>
126
+ <td class="t" style="color:#ff6f00;">
127
+ <?php echo _n( 'New entry', 'New entries', $count['unchecked'], 'gwolle-gb' ); ?>
128
+ </td>
129
+ <td class="b"></td>
130
+ <td class="last"></td>
131
+ </tr>
132
+
133
+ <tr>
134
+ <td class="first b">
135
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=spam">
136
+ <?php echo $count['spam']; ?>
137
+ </a></td>
138
+ <td class="t" style="color:#FF0000;">
139
+ <?php echo _n( 'Spam entry', 'Spam entries', $count['spam'], 'gwolle-gb' ); ?>
140
+ </td>
141
+ <td class="b"></td>
142
+ <td class="last"></td>
143
+ </tr>
144
+
145
+ <tr>
146
+ <td class="first b">
147
+ <a href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/entries.php&amp;show=trash">
148
+ <?php echo $count['trash']; ?>
149
+ </a></td>
150
+ <td class="t" style="color:#FF0000;">
151
+ <?php echo _n( 'Trashed entry', 'Trashed entries', $count['trash'], 'gwolle-gb' ); ?>
152
+ </td>
153
+ <td class="b"></td>
154
+ <td class="last"></td>
155
+ </tr>
156
+
157
+ </tbody>
158
+ </table>
159
+ </div><!-- .table -->
160
+ <div class="versions">
161
+ <p>
162
+ <?php
163
+ $postid = gwolle_gb_get_postid();
164
+ if ( $postid ) {
165
+ $permalink = get_permalink( $postid );
166
+ ?>
167
+ <a class="button rbutton button button-primary" href="<?php echo $permalink; ?>"><?php esc_html_e('View Guestbook','gwolle-gb'); ?></a>
168
+ <?php
169
+ } ?>
170
+ <a class="button rbutton button button-primary" href="admin.php?page=<?php echo GWOLLE_GB_FOLDER; ?>/editor.php"><?php esc_html_e('Write admin entry','gwolle-gb'); ?></a>
171
+ </p>
172
+ <p>
173
+ <?php
174
+ global $wp_rewrite;
175
+ $permalinks = $wp_rewrite->permalink_structure;
176
+ if ( $permalinks ) {
177
+ ?>
178
+ <a href="<?php bloginfo('url'); ?>/feed/gwolle_gb" /><?php esc_html_e('Subscribe to RSS Feed', 'gwolle-gb'); ?></a>
179
+ <?php
180
+ } else {
181
+ ?>
182
+ <a href="<?php bloginfo('url'); ?>/?feed=gwolle_gb" /><?php esc_html_e('Subscribe to RSS Feed', 'gwolle-gb'); ?></a>
183
+ <?php
184
+ } ?>
185
+ </p>
186
+ </div>
187
+ <?php }
188
+
189
+
190
+ function gwolle_gb_overview_notification() {
191
+
192
+ // Check if function mail() exists. If not, display a hint to the user.
193
+ if ( ! function_exists('mail') ) {
194
+ echo '<p class="setting-description">' .
195
+ __('Sorry, but the function <code>mail()</code> required to notify you by mail is not enabled in your PHP configuration. You might want to install a WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can contact your hosting provider to change this.','gwolle-gb')
196
+ . '</p>';
197
+ }
198
+ $current_user_id = get_current_user_id();;
199
+ $currentUserNotification = false;
200
+ $user_ids = get_option('gwolle_gb-notifyByMail' );
201
+ if ( strlen($user_ids) > 0 ) {
202
+ $user_ids = explode( ",", $user_ids );
203
+ if ( is_array($user_ids) && !empty($user_ids) ) {
204
+ if ( in_array( $current_user_id, $user_ids ) ) {
205
+ $currentUserNotification = true;
206
+ }
207
+ }
208
+ } ?>
209
+ <p>
210
+ <form name="gwolle_gb_welcome" method="post" action="">
211
+ <?php
212
+ settings_fields( 'gwolle_gb_options' );
213
+ do_settings_sections( 'gwolle_gb_options' );
214
+
215
+ /* Nonce */
216
+ $nonce = wp_create_nonce( 'gwolle_gb_page_gwolle' );
217
+ echo '<input type="hidden" id="gwolle_gb_wpnonce" name="gwolle_gb_wpnonce" value="' . $nonce . '" />';
218
+ ?>
219
+ <input name="notify_by_mail" type="checkbox" id="notify_by_mail" <?php
220
+ if ( $currentUserNotification ) {
221
+ echo 'checked="checked"';
222
+ } ?> >
223
+ <label for="notify_by_mail" class="setting-description"><?php esc_html_e('Send me an e-mail when a new entry has been posted.', 'gwolle-gb'); ?></label>
224
+ <p class="submit">
225
+ <input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save setting', 'gwolle-gb'); ?>" />
226
+ </p>
227
+ </form>
228
+ </p>
229
+ <div>
230
+ <?php esc_html_e('The following users have subscribed to this service:', 'gwolle-gb');
231
+
232
+ if ( is_array($user_ids) && ! empty($user_ids) ) {
233
+ echo '<ul>';
234
+ foreach ( $user_ids as $user_id ) {
235
+ $user_info = get_userdata($user_id);
236
+ if ($user_info === FALSE) {
237
+ // Invalid $user_id
238
+ continue;
239
+ }
240
+ echo '<li>';
241
+ if ( $user_info->ID == get_current_user_id() ) {
242
+ echo '<strong>' . esc_html__('You', 'gwolle-gb') . '</strong>';
243
+ } else {
244
+ echo $user_info->first_name . ' ' . $user_info->last_name;
245
+ }
246
+ echo ' (' . $user_info->user_email . ')';
247
+ echo '</li>';
248
+ }
249
+ echo '</ul>';
250
+ } else {
251
+ echo '<br /><i>(' . esc_html__('No subscriber yet', 'gwolle-gb') . ')</i>';
252
+ }
253
+ ?>
254
+ </div>
255
+ <?php
256
+ }
257
+
258
+
259
+ function gwolle_gb_overview_thanks() {
260
+ echo '<h3>
261
+ ' . esc_html__('This plugin uses the following scripts and services:', 'gwolle-gb') . '</h3>
262
+ <ul class="ul-disc">
263
+ <li><a href="http://akismet.com/tos/" target="_blank">' . esc_html__( 'Akismet', 'gwolle-gb' ) . '</a></li>
264
+ <li><a href="http://markitup.jaysalvat.com/" target="_blank">' . esc_html__( 'MarkItUp', 'gwolle-gb' ) . '</a></li>
265
+ <li><a href="https://wordpress.org/plugins/really-simple-captcha/" target="_blank">' . esc_html__( 'Really Simple CAPTCHA plugin', 'gwolle-gb' ) . '</a></li>
266
+ <li><a href="http://supersimpleslider.com/" target="_blank">' . esc_html__( 'Super Simple Slider', 'gwolle-gb' ) . '</a></li>
267
+ </ul>';
268
+ }
269
+
270
+
271
+ /* Metaboxes on the right */
272
+ function gwolle_gb_overview_help() {
273
+ echo '<h3>
274
+ ' . esc_html__('This is how you can get your guestbook displayed on your website:', 'gwolle-gb') . '</h3>
275
+ <ul class="ul-disc">
276
+ <li>' . esc_html__('Create a new page.', 'gwolle-gb') . '</li>
277
+ <li>' . esc_html__('Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the content.', 'gwolle-gb') . '</li>
278
+ <li>' . esc_html__('Shortcode:', 'gwolle-gb') . ' <input type="text" name="gwolle_gb_shortcode" size="10" value="[gwolle_gb]" id="gwolle_gb_shortcode" /></li>
279
+ </ul>';
280
+ }
281
+
282
+
283
+ function gwolle_gb_overview_visibility() {
284
+ echo '<h3>
285
+ ' . esc_html__('These entries will be visible for your visitors:', 'gwolle-gb').'</h3>
286
+ <ul class="ul-disc">
287
+ <li>' . esc_html__('Marked as Checked.', 'gwolle-gb').'</li>
288
+ <li>' . esc_html__('Not marked as Spam.', 'gwolle-gb').'</li>
289
+ <li>' . esc_html__('Not marked as Trash.','gwolle-gb').'</li>
290
+ </ul>';
291
+ }
292
+
293
+
294
+ function gwolle_gb_overview_support() {
295
+ ?>
296
+ <h3><?php esc_html_e('Support.', 'gwolle-gb'); ?></h3>
297
+ <p><?php
298
+ $support = 'https://wordpress.org/support/plugin/gwolle-gb';
299
+ echo sprintf( __( 'If you have a problem or a feature request, please post it on the <a href="%s" target="_blank">support forum at wordpress.org</a>.', 'gwolle-gb' ), $support ); ?>
300
+ <?php esc_html_e('I will do my best to respond as soon as possible.', 'gwolle-gb'); ?><br />
301
+ <?php esc_html_e('If you send me an email, I will not reply. Please use the support forum.', 'gwolle-gb'); ?>
302
+ </p>
303
+
304
+ <h3><?php esc_html_e('Translations.', 'gwolle-gb'); ?></h3>
305
+ <p><?php
306
+ $link = 'https://translate.wordpress.org/projects/wp-plugins/gwolle-gb';
307
+ echo sprintf( __( 'Translations can be added very easily through <a href="%s" target="_blank">GlotPress</a>.', 'gwolle-gb' ), $link ); echo '<br />';
308
+ echo sprintf( __( "You can start translating strings there for your locale. 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 <a href='%s' target='_blank'>support forum</a>.", 'gwolle-gb' ), $support ); echo '<br />';
309
+ $make = 'https://make.wordpress.org/polyglots/';
310
+ echo sprintf( __( 'I will make a request on <a href="%s" target="_blank">make/polyglots</a> to have you added as validator for this plugin/locale.', 'gwolle-gb' ), $make ); ?>
311
+ </p>
312
+ <?php
313
+ }
314
+
315
+
316
+ function gwolle_gb_overview_donate() {
317
+ ?>
318
+ <h3><?php esc_html_e('Review this plugin.', 'gwolle-gb'); ?></h3>
319
+ <p><?php
320
+ $review = 'https://wordpress.org/support/view/plugin-reviews/gwolle-gb?rate=5#postform';
321
+ echo sprintf( __( 'If this plugin has any value to you, then please leave a review at <a href="%s" target="_blank">the plugin page at wordpress.org</a>.', 'gwolle-gb' ), $review ); ?>
322
+ </p>
323
+
324
+ <h3><?php esc_html_e('Donate to the maintainer.', 'gwolle-gb'); ?></h3>
325
+ <p><?php
326
+ $link = 'http://zenoweb.nl';
327
+ $name = 'ZenoWeb';
328
+ echo sprintf( __( 'This plugin is being maintained by Marcel Pol from <a href="%s" target="_blank">%s</a>.', 'gwolle-gb' ), $link, $name ); ?></br />
329
+ <?php
330
+ $link = '<a href="https://www.paypal.com" target="_blank">';
331
+ $link_end = '</a>';
332
+ $email = 'marcel@timelord.nl';
333
+ echo sprintf( esc_html__( 'If you want to donate to the maintainer of the plugin, you can donate through %sPayPal%s to %s.', 'gwolle-gb' ), $link, $link_end, $email ); ?>
334
+ </p>
335
+ <?php
336
+ }
337
+
338
+
339
+ function gwolle_gb_welcome_post() {
340
+
341
+ /* Check Nonce */
342
+ $verified = false;
343
+ if ( isset($_POST['gwolle_gb_wpnonce']) ) {
344
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_wpnonce'], 'gwolle_gb_page_gwolle' );
345
+ }
346
+ if ( $verified == false ) {
347
+ gwolle_gb_add_message( '<p>' . esc_html__('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>', true, false);
348
+ return;
349
+ }
350
+
351
+ /* E-mail notification option. */
352
+ if ( isset($_POST['notify_by_mail']) && $_POST['notify_by_mail'] == 'on' ) {
353
+ // Turn the notification ON for the current user.
354
+ $user_id = get_current_user_id();
355
+ $user_ids = Array();
356
+
357
+ $user_ids_old = get_option('gwolle_gb-notifyByMail' );
358
+ if ( strlen($user_ids_old) > 0 ) {
359
+ $user_ids_old = explode( ",", $user_ids_old );
360
+ foreach ( $user_ids_old as $user_id_old ) {
361
+ if ( $user_id_old == $user_id ) {
362
+ continue; // will be added again below the loop
363
+ }
364
+ if ( is_numeric($user_id_old) ) {
365
+ $user_ids[] = $user_id_old;
366
+ }
367
+ }
368
+ }
369
+ $user_ids[] = $user_id; // Really add it.
370
+
371
+ $user_ids = implode(",", $user_ids);
372
+ update_option('gwolle_gb-notifyByMail', $user_ids);
373
+
374
+ gwolle_gb_add_message( '<p>' . esc_html__('Changes saved.', 'gwolle-gb') . '</p>', false, false);
375
+ } elseif ( ! isset($_POST['notify_by_mail'] ) ) {
376
+ // Turn the notification OFF for the current user
377
+ $user_id = get_current_user_id();
378
+ $user_ids = Array();
379
+
380
+ $user_ids_old = get_option('gwolle_gb-notifyByMail' );
381
+ if ( strlen($user_ids_old) > 0 ) {
382
+ $user_ids_old = explode( ",", $user_ids_old );
383
+ foreach ( $user_ids_old as $user_id_old ) {
384
+ if ( $user_id_old == $user_id ) {
385
+ continue;
386
+ }
387
+ if ( is_numeric($user_id_old) ) {
388
+ $user_ids[] = $user_id_old;
389
+ }
390
+ }
391
+ }
392
+
393
+ $user_ids = implode(",", $user_ids);
394
+ update_option('gwolle_gb-notifyByMail', $user_ids);
395
+ gwolle_gb_add_message( '<p>' . esc_html__('Changes saved.', 'gwolle-gb') . '</p>', false, false);
396
+ }
397
+ }
admin/gb-page-import.php ADDED
@@ -0,0 +1,617 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php /*
2
+ *
3
+ * import.php
4
+ * Lets the user import guestbook entries from other plugins.
5
+ * Currently supported:
6
+ * - DMSGuestbook (http://wordpress.org/plugins/dmsguestbook/).
7
+ * - WordPress coments from a page, post or just all.
8
+ * - Gwolle-GB through a CSV-file.
9
+ */
10
+
11
+ // No direct calls to this script
12
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
13
+ die('No direct calls allowed!');
14
+ }
15
+
16
+
17
+ function gwolle_gb_page_import() {
18
+
19
+ gwolle_gb_admin_enqueue();
20
+
21
+ if ( function_exists('current_user_can') && !current_user_can('manage_options') ) {
22
+ die(esc_html__('Cheatin&#8217; uh?', 'gwolle-gb'));
23
+ }
24
+
25
+ /* $_POST handling. */
26
+ if ( isset( $_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'gwolle_gb_import' ) {
27
+ gwolle_gb_page_import_post();
28
+ }
29
+
30
+
31
+ /*
32
+ * Build the Page and the Form
33
+ */
34
+ ?>
35
+ <div class="wrap gwolle_gb">
36
+ <div id="icon-gwolle-gb"><br /></div>
37
+ <h1><?php esc_html_e('Import guestbook entries.', 'gwolle-gb'); ?></h1>
38
+
39
+ <?php
40
+ $gwolle_gb_messages = gwolle_gb_get_messages();
41
+ $gwolle_gb_errors = gwolle_gb_get_errors();
42
+ $messageclass = '';
43
+ if ( $gwolle_gb_errors ) {
44
+ $messageclass = 'error';
45
+ }
46
+
47
+ if ( $gwolle_gb_messages ) {
48
+ echo '
49
+ <div id="message" class="updated fade notice is-dismissible ' . $messageclass . ' ">' .
50
+ $gwolle_gb_messages .
51
+ '</div>';
52
+ } ?>
53
+
54
+ <div id="poststuff" class="gwolle_gb_import metabox-holder">
55
+ <div class="postbox-container">
56
+ <?php
57
+ add_meta_box('gwolle_gb_import_postbox_dms', esc_html__('Import guestbook entries from DMSGuestbook','gwolle-gb'), 'gwolle_gb_import_postbox_dms', 'gwolle_gb_import', 'normal');
58
+ add_meta_box('gwolle_gb_import_postbox_wp', esc_html__('Import guestbook entries from WordPress comments','gwolle-gb'), 'gwolle_gb_import_postbox_wp', 'gwolle_gb_import', 'normal');
59
+ add_meta_box('gwolle_gb_import_postbox_gwolle', esc_html__('Import guestbook entries from Gwolle-GB','gwolle-gb'), 'gwolle_gb_import_postbox_gwolle', 'gwolle_gb_import', 'normal');
60
+
61
+ do_meta_boxes( 'gwolle_gb_import', 'normal', '' );
62
+ ?>
63
+ </div>
64
+ </div>
65
+
66
+ </div><?php
67
+ }
68
+
69
+
70
+ function gwolle_gb_import_postbox_dms() {
71
+ global $wpdb;
72
+ ?>
73
+ <form name="gwolle_gb_import_dms" id="gwolle_gb_import_dms" method="POST" action="#" accept-charset="UTF-8">
74
+ <input type="hidden" name="gwolle_gb_page" value="gwolle_gb_import" />
75
+
76
+ <?php
77
+ /* Nonce */
78
+ $nonce = wp_create_nonce( 'gwolle_gb_page_import_dms' );
79
+ echo '<input type="hidden" id="gwolle_gb_wpnonce_dms" name="gwolle_gb_wpnonce_dms" value="' . $nonce . '" />';
80
+
81
+ // Does the table of DMSGuestbook exist?
82
+ $sql = "
83
+ SHOW
84
+ TABLES
85
+ LIKE '" . $wpdb->prefix . "dmsguestbook'";
86
+ $foundTables = $wpdb->get_results( $sql, ARRAY_A );
87
+
88
+ $count = 0;
89
+ if ( isset($foundTables[0]) && in_array( $wpdb->prefix . 'dmsguestbook', $foundTables[0] ) ) {
90
+ // Get entry count
91
+ $sql = "
92
+ SELECT
93
+ COUNT(id) AS count
94
+ FROM
95
+ " . $wpdb->prefix . "dmsguestbook";
96
+
97
+ $data = $wpdb->get_results( $sql, ARRAY_A );
98
+
99
+ $count = (int) $data[0]['count'];
100
+ }
101
+
102
+ if ( isset($foundTables[0]) && in_array( $wpdb->prefix . 'dmsguestbook', $foundTables[0] ) ) { ?>
103
+ <div>
104
+ <?php echo sprintf( _n('%s entry was found and will be imported.',' %s entries were found and will be imported.', $count, 'gwolle-gb'), $count ); ?>
105
+ </div>
106
+ <div>
107
+ <?php esc_html_e('The importer will preserve the following data per entry:', 'gwolle-gb'); ?>
108
+ <ul class="ul-disc">
109
+ <li><?php esc_html_e('Name', 'gwolle-gb'); ?></li>
110
+ <li><?php esc_html_e('E-Mail address', 'gwolle-gb'); ?></li>
111
+ <li><?php esc_html_e('URL/Website', 'gwolle-gb'); ?></li>
112
+ <li><?php esc_html_e('Date of the entry', 'gwolle-gb'); ?></li>
113
+ <li><?php esc_html_e('IP address', 'gwolle-gb'); ?></li>
114
+ <li><?php esc_html_e('Message', 'gwolle-gb'); ?></li>
115
+ <li><?php esc_html_e('"is spam" flag', 'gwolle-gb'); ?></li>
116
+ <li><?php esc_html_e('"is checked" flag', 'gwolle-gb'); ?></li>
117
+ </ul>
118
+ <?php _e('However, data such as HTML formatting is not supported by Gwolle-GB and <strong>will not</strong> be imported.', 'gwolle-gb'); ?>
119
+ <br />
120
+ <?php esc_html_e('The importer does not delete any data, so you can go back whenever you want.', 'gwolle-gb'); ?>
121
+ </div>
122
+
123
+ <p>
124
+ <label for="gwolle_gb_dmsguestbook" class="selectit">
125
+ <input id="gwolle_gb_dmsguestbook" name="gwolle_gb_dmsguestbook" type="checkbox" />
126
+ <?php esc_html_e('Import all entries from DMSGuestbook.', 'gwolle-gb'); ?>
127
+ </label>
128
+ </p>
129
+ <p>
130
+ <input name="start_import_dms" id="start_import_dms" type="submit" class="button" disabled value="<?php esc_attr_e('Start import', 'gwolle-gb'); ?>">
131
+ </p><?php
132
+ } else {
133
+ echo '<div>' . esc_html__('DMSGuestbook was not found.', 'gwolle-gb') . '</div>';
134
+ } ?>
135
+ </form>
136
+ <?php
137
+ }
138
+
139
+
140
+ function gwolle_gb_import_postbox_wp() {
141
+ ?>
142
+ <form name="gwolle_gb_import_wp" id="gwolle_gb_import_wp" method="POST" action="#" accept-charset="UTF-8">
143
+ <input type="hidden" name="gwolle_gb_page" value="gwolle_gb_import" />
144
+
145
+ <?php
146
+ /* Nonce */
147
+ $nonce = wp_create_nonce( 'gwolle_gb_page_import_wp' );
148
+ echo '<input type="hidden" id="gwolle_gb_wpnonce_wp" name="gwolle_gb_wpnonce_wp" value="' . $nonce . '" />';
149
+ ?>
150
+
151
+ <div>
152
+ <?php esc_html_e('The importer will preserve the following data per entry:', 'gwolle-gb'); ?>
153
+ <ul class="ul-disc">
154
+ <li><?php esc_html_e('Name', 'gwolle-gb'); ?></li>
155
+ <li><?php esc_html_e('User ID', 'gwolle-gb'); ?></li>
156
+ <li><?php esc_html_e('E-Mail address', 'gwolle-gb'); ?></li>
157
+ <li><?php esc_html_e('URL/Website', 'gwolle-gb'); ?></li>
158
+ <li><?php esc_html_e('Date of the entry', 'gwolle-gb'); ?></li>
159
+ <li><?php esc_html_e('IP address', 'gwolle-gb'); ?></li>
160
+ <li><?php esc_html_e('Message', 'gwolle-gb'); ?></li>
161
+ <li><?php esc_html_e('"approved" status', 'gwolle-gb'); ?></li>
162
+ </ul>
163
+ <?php _e('However, data such as HTML formatting is not supported by Gwolle-GB and <strong>will not</strong> be imported.', 'gwolle-gb'); ?>
164
+ <br />
165
+ <?php esc_html_e('Spam comments will not be imported.', 'gwolle-gb'); ?>
166
+ <br />
167
+ <?php esc_html_e('The importer does not delete any data, so you can go back whenever you want.', 'gwolle-gb'); ?>
168
+ </div>
169
+
170
+ <p><label for="gwolle_gb_pageid"><?php esc_html_e('Select a page to import the comments from:', 'gwolle-gb'); ?></label><br />
171
+ <select id="gwolle_gb_pageid" name="gwolle_gb_pageid">
172
+ <option value="0"><?php esc_html_e('Select', 'gwolle-gb'); ?></option>
173
+ <?php
174
+ $args = array(
175
+ 'post_type' => 'page',
176
+ 'posts_per_page' => 500,
177
+ 'order' => 'ASC',
178
+ 'orderby' => 'title',
179
+ 'update_post_term_cache' => false,
180
+ 'update_post_meta_cache' => false
181
+ );
182
+
183
+ $sel_query = new WP_Query( $args );
184
+ if ( $sel_query->have_posts() ) {
185
+ while ( $sel_query->have_posts() ) : $sel_query->the_post();
186
+ $args = array(
187
+ 'status' => 'all',
188
+ 'post_id' => get_the_ID(),
189
+ 'count' => true
190
+ );
191
+ $num_comments = get_comments($args);
192
+ // get_comments_number returns only approved comments, and wp_count_comments seems to list spam too?
193
+
194
+ if ( $num_comments == 0 ) {
195
+ continue;
196
+ } else {
197
+ $comments = sprintf( _n('%s Comment','%s Comments', $num_comments, 'gwolle-gb'), $num_comments );
198
+ }
199
+
200
+ echo '<option value="' . get_the_ID() . '">'. get_the_title() . ' (' . $comments . ')</option>';
201
+ endwhile;
202
+ }
203
+ wp_reset_postdata(); ?>
204
+ </select>
205
+ </p>
206
+
207
+ <p><label for="gwolle_gb_postid"><?php esc_html_e('Select a post to import the comments from:', 'gwolle-gb'); ?></label><br />
208
+ <select id="gwolle_gb_postid" name="gwolle_gb_postid">
209
+ <option value="0"><?php esc_html_e('Select', 'gwolle-gb'); ?></option>
210
+ <?php
211
+ $args = array(
212
+ 'post_type' => 'post',
213
+ 'posts_per_page' => 500,
214
+ 'order' => 'ASC',
215
+ 'orderby' => 'title',
216
+ 'update_post_term_cache' => false,
217
+ 'update_post_meta_cache' => false
218
+ );
219
+
220
+ $sel_query = new WP_Query( $args );
221
+ if ( $sel_query->have_posts() ) {
222
+ while ( $sel_query->have_posts() ) : $sel_query->the_post();
223
+ $args = array(
224
+ 'status' => 'all',
225
+ 'post_id' => get_the_ID(),
226
+ 'count' => true
227
+ );
228
+ $num_comments = get_comments($args);
229
+
230
+ if ( $num_comments == 0 ) {
231
+ continue;
232
+ } else {
233
+ $comments = sprintf( _n('%s Comment', '%s Comments', $num_comments, 'gwolle-gb'), $num_comments );
234
+ }
235
+
236
+ echo '<option value="' . get_the_ID() . '">'. get_the_title() . ' (' . $comments . ')</option>';
237
+ endwhile;
238
+ }
239
+ wp_reset_postdata(); ?>
240
+ </select>
241
+ </p>
242
+
243
+ <?php
244
+ $args = array(
245
+ 'status' => 'all',
246
+ 'count' => true
247
+ );
248
+ $num_comments = get_comments($args); ?>
249
+
250
+ <p><label for="gwolle_gb_importfrom"><?php esc_html_e('Select where to import the comments from:', 'gwolle-gb'); ?></label><br />
251
+ <label><input type="radio" name="gwolle_gb_importfrom" id="gwolle_gb_importfrom" value="page" /><?php esc_html_e('Comments from selected page.', 'gwolle-gb'); ?></label><br />
252
+ <label><input type="radio" name="gwolle_gb_importfrom" id="gwolle_gb_importfrom" value="post" /><?php esc_html_e('Comments from selected post.', 'gwolle-gb'); ?></label><br />
253
+ <label><input type="radio" name="gwolle_gb_importfrom" id="gwolle_gb_importfrom" value="all" /><?php esc_html_e('All Comments', 'gwolle-gb'); echo " (" . $num_comments . ")."; ?></label><br />
254
+ </p>
255
+
256
+ <p>
257
+ <input name="start_import_wp" id="start_import_wp" type="submit" class="button" disabled value="<?php esc_attr_e('Start import', 'gwolle-gb'); ?>">
258
+ </p>
259
+ </form>
260
+ <?php
261
+ }
262
+
263
+
264
+ function gwolle_gb_import_postbox_gwolle() {
265
+ ?>
266
+ <form name="gwolle_gb_import_gwolle" id="gwolle_gb_import_gwolle" method="POST" action="#" accept-charset="UTF-8" enctype="multipart/form-data">
267
+ <input type="hidden" name="gwolle_gb_page" value="gwolle_gb_import" />
268
+
269
+ <?php
270
+ /* Nonce */
271
+ $nonce = wp_create_nonce( 'gwolle_gb_page_import_gwolle' );
272
+ echo '<input type="hidden" id="gwolle_gb_wpnonce_gwolle" name="gwolle_gb_wpnonce_gwolle" value="' . $nonce . '" />';
273
+ ?>
274
+
275
+ <p>
276
+ <label for="start_import_gwolle_file" class="selectit"><?php esc_html_e('Select a CSV file with exported entries to import again:', 'gwolle-gb'); ?><br />
277
+ <input id="start_import_gwolle_file" name="start_import_gwolle_file" type="file" />
278
+ </label>
279
+ </p>
280
+ <p>
281
+ <input name="start_import_gwolle" id="start_import_gwolle" type="submit" class="button" disabled value="<?php esc_attr_e('Start import', 'gwolle-gb'); ?>">
282
+ </p>
283
+ </form>
284
+ <?php
285
+ }
286
+
287
+
288
+ function gwolle_gb_page_import_post() {
289
+ global $wpdb;
290
+
291
+ //if ( WP_DEBUG ) { echo "_POST: "; var_dump($_POST); }
292
+
293
+ if ( isset( $_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'gwolle_gb_import' ) {
294
+
295
+ if (isset($_POST['start_import_dms'])) {
296
+
297
+ /* Check Nonce */
298
+ $verified = false;
299
+ if ( isset($_POST['gwolle_gb_wpnonce_dms']) ) {
300
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_wpnonce_dms'], 'gwolle_gb_page_import_dms' );
301
+ }
302
+ if ( $verified == false ) {
303
+ // Nonce is invalid.
304
+ gwolle_gb_add_message( '<p>' . esc_html__('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>', true, false);
305
+ return;
306
+ }
307
+
308
+ // Import all entries from DMSGuestbook
309
+ // Does the table of DMSGuestbook exist?
310
+ $sql = "
311
+ SHOW
312
+ TABLES
313
+ LIKE '" . $wpdb->prefix . "dmsguestbook'";
314
+ $foundTables = $wpdb->get_results( $sql, ARRAY_A );
315
+
316
+ if ( isset($foundTables[0]) && in_array( $wpdb->prefix . 'dmsguestbook', $foundTables[0] ) ) {
317
+ $result = $wpdb->get_results("
318
+ SELECT
319
+ `name`,
320
+ `email`,
321
+ `url`,
322
+ `date`,
323
+ `ip`,
324
+ `message`,
325
+ `spam`,
326
+ `additional`,
327
+ `flag`
328
+ FROM
329
+ " . $wpdb->prefix . "dmsguestbook
330
+ ORDER BY
331
+ date ASC
332
+ ", ARRAY_A);
333
+
334
+ if ( is_array($result) && !empty($result) ) {
335
+
336
+ $saved = 0;
337
+ foreach ($result as $entry_data) {
338
+
339
+ /* New Instance of gwolle_gb_entry. */
340
+ $entry = new gwolle_gb_entry();
341
+
342
+ /* Set the data in the instance */
343
+ $entry->set_isspam( $entry_data["spam"] );
344
+ $entry->set_ischecked( true );
345
+ $entry->set_istrash( $entry_data["flag"] );
346
+ $entry->set_content( $entry_data["message"] );
347
+ $entry->set_datetime( $entry_data["date"] );
348
+ $entry->set_author_name( $entry_data["name"] );
349
+ $entry->set_author_email( $entry_data["email"] );
350
+ $entry->set_author_ip( $entry_data["ip"] );
351
+ $entry->set_author_website( $entry_data["url"] );
352
+
353
+ /* Save the instance */
354
+ $save = $entry->save();
355
+ if ( $save ) {
356
+ // We have been saved to the Database
357
+ gwolle_gb_add_log_entry( $entry->get_id(), 'imported-from-dmsguestbook' );
358
+ $saved++;
359
+ }
360
+ }
361
+ if ( $saved == 0 ) {
362
+ gwolle_gb_add_message( '<p>' . esc_html__("I'm sorry, but I wasn't able to import entries from DMSGuestbook successfully.", 'gwolle-gb') . '</p>', true, false);
363
+ } else if ( $saved == 1 || $saved > 1 ) {
364
+ do_action( 'gwolle_gb_save_entry_admin' );
365
+ gwolle_gb_add_message( '<p>' . sprintf( _n('%s entry imported successfully from DMSGuestbook.','%s entries imported successfully from DMSGuestbook.', $saved, 'gwolle-gb'), $saved ) . '</p>', false, false);
366
+ }
367
+ } else {
368
+ gwolle_gb_add_message( '<p>' . __("<strong>Nothing to import.</strong> The guestbook you've chosen does not contain any entries.", 'gwolle-gb') . '</p>', true, false);
369
+ }
370
+ } else {
371
+ gwolle_gb_add_message( '<p>' . esc_html__("I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook.", 'gwolle-gb') . '</p>', true, false);
372
+ }
373
+
374
+ } else if (isset($_POST['start_import_wp'])) {
375
+
376
+ /* Check Nonce */
377
+ $verified = false;
378
+ if ( isset($_POST['gwolle_gb_wpnonce_wp']) ) {
379
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_wpnonce_wp'], 'gwolle_gb_page_import_wp' );
380
+ }
381
+ if ( $verified == false ) {
382
+ // Nonce is invalid.
383
+ gwolle_gb_add_message( '<p>' . esc_html__('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>', true, false);
384
+ return;
385
+ }
386
+
387
+ $args = array();
388
+
389
+ if ( isset($_POST['gwolle_gb_importfrom']) && $_POST['gwolle_gb_importfrom'] == 'page' && isset($_POST['gwolle_gb_pageid']) && intval($_POST['gwolle_gb_pageid']) > 0 ) {
390
+ $page_id = intval($_POST['gwolle_gb_pageid']);
391
+ $args = array(
392
+ 'status' => 'all',
393
+ 'post_id' => $page_id
394
+ );
395
+ } else if ( isset($_POST['gwolle_gb_importfrom']) && $_POST['gwolle_gb_importfrom'] == 'post' && isset($_POST['gwolle_gb_postid']) && intval($_POST['gwolle_gb_postid']) > 0 ) {
396
+ $post_id = intval($_POST['gwolle_gb_postid']);
397
+ $args = array(
398
+ 'status' => 'all',
399
+ 'post_id' => $post_id
400
+ );
401
+ } else if ( isset($_POST['gwolle_gb_importfrom']) && $_POST['gwolle_gb_importfrom'] == 'all' ) {
402
+ $args = array(
403
+ 'status' => 'all',
404
+ );
405
+ } else {
406
+ gwolle_gb_add_message( '<p>' . esc_html__("You haven't chosen how to import from WordPress comments. Please choose and try again.", 'gwolle-gb') . '</p>', true, false);
407
+ }
408
+
409
+ if ( is_array($args) && !empty($args) ) {
410
+ $comments = get_comments( $args );
411
+
412
+ if ( is_array($comments) && !empty($comments) ) {
413
+
414
+ $saved = 0;
415
+ foreach ( $comments as $comment ) {
416
+
417
+ /* New Instance of gwolle_gb_entry. */
418
+ $entry = new gwolle_gb_entry();
419
+
420
+ /* Set the data in the instance */
421
+
422
+ $entry->set_ischecked( $comment->comment_approved );
423
+ $entry->set_content( $comment->comment_content );
424
+ $entry->set_datetime( strtotime( $comment->comment_date ) );
425
+ $entry->set_author_name( $comment->comment_author );
426
+ $entry->set_author_email( $comment->comment_author_email );
427
+ $entry->set_author_ip( $comment->comment_author_IP );
428
+ $entry->set_author_website( $comment->comment_author_url );
429
+ $entry->set_author_id( $comment->user_id );
430
+
431
+ /* Save the instance */
432
+ $save = $entry->save();
433
+ if ( $save ) {
434
+ // We have been saved to the Database
435
+ gwolle_gb_add_log_entry( $entry->get_id(), 'imported-from-wp' );
436
+ $saved++;
437
+ }
438
+ }
439
+ if ( $saved == 0 ) {
440
+ gwolle_gb_add_message( '<p>' . esc_html__("I'm sorry, but I wasn't able to import comments from that page successfully.", 'gwolle-gb') . '</p>', true, false);
441
+ } else if ( $saved == 1 || $saved > 1 ) {
442
+ do_action( 'gwolle_gb_save_entry_admin' );
443
+ gwolle_gb_add_message( '<p>' . sprintf( _n('%s entry imported successfully from WordPress comments.','%s entries imported successfully from WordPress comments.', $saved, 'gwolle-gb'), $saved ) . '</p>', false, false);
444
+ }
445
+ } else {
446
+ gwolle_gb_add_message( '<p>' . __('<strong>Nothing to import.</strong> There seem to be no comments on this page, post or at all.', 'gwolle-gb') . '</p>', true, false);
447
+ }
448
+ } else {
449
+ gwolle_gb_add_message( '<p>' . esc_html__('No comments found. Please try again.', 'gwolle-gb') . '</p>', true, false);
450
+ }
451
+
452
+ } else if (isset($_POST['start_import_gwolle'])) {
453
+
454
+ /* Check Nonce */
455
+ $verified = false;
456
+ if ( isset($_POST['gwolle_gb_wpnonce_gwolle']) ) {
457
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_wpnonce_gwolle'], 'gwolle_gb_page_import_gwolle' );
458
+ }
459
+ if ( $verified == false ) {
460
+ // Nonce is invalid.
461
+ gwolle_gb_add_message( '<p>' . esc_html__('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>', true, false);
462
+ return;
463
+ }
464
+
465
+ // if they DID upload a file...
466
+ if($_FILES['start_import_gwolle_file']['name']) {
467
+ if( !$_FILES['start_import_gwolle_file']['error'] ) { // if no errors...
468
+ //now is the time to modify the future file name and validate the file
469
+ // $new_file_name = strtolower( $_FILES['gwolle_gb_gwolle']['tmp_name'] ); //rename file
470
+ if( $_FILES['start_import_gwolle_file']['size'] > ( 4096000 ) ) { // Can't be larger than 4 MB
471
+ $valid_file = false;
472
+ gwolle_gb_add_message( '<p>' . esc_html__('Your file is too large.', 'gwolle-gb') . '</p>', true, false);
473
+ } else {
474
+ if ( function_exists('finfo_open') ) {
475
+ // Check MIME Type. Only PHP >= 5.3.0 with the Fileinfo extension loaded.
476
+ $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
477
+ $mimetype = trim( finfo_file( $finfo, $_FILES['start_import_gwolle_file']['tmp_name'] ) );
478
+ finfo_close($finfo);
479
+ } else {
480
+ gwolle_gb_add_message( '<p>' . esc_html__('Please check if your PHP installation has the Fileinfo extension. You can also contact your hosting provider about this and request for that extension to be installed.', 'gwolle-gb') . '</p>', false, false);
481
+ }
482
+ if ( version_compare( PHP_VERSION, '5.3', '<' ) && ( ! $mimetype ) ) {
483
+ // PHP 5.2 is insecure anyway?
484
+ $mimetype = 'text/csv';
485
+ gwolle_gb_add_message( '<p>' . esc_html__('You have a very old version of PHP. Please contact your hosting provider and request an upgrade.', 'gwolle-gb') . '</p>', false, false);
486
+ }
487
+ $mimetypes = array(
488
+ 'csv' => 'text/csv',
489
+ 'txt' => 'text/plain',
490
+ 'xls' => 'application/excel',
491
+ 'ms' => 'application/ms-excel',
492
+ 'vnd' => 'application/vnd.ms-excel',
493
+ );
494
+ if ( ! in_array( $mimetype, $mimetypes ) ) {
495
+ gwolle_gb_add_message( '<p>' . esc_html__('Invalid file format. Mime-type:', 'gwolle-gb') . ' ' . print_r($mimetype, true) . '</p>', true, false);
496
+ } else {
497
+ $handle = fopen($_FILES['start_import_gwolle_file']['tmp_name'], "r");
498
+ $row = 0;
499
+
500
+ while ( ( $data = fgetcsv( $handle, 2000, ',', '"' ) ) !== FALSE ) {
501
+ $num = count($data);
502
+ if ($row == 0) {
503
+ // Check the headerrow. $testrow_old is version 1.4.1 and older.
504
+ $testrow_1_0 = array(
505
+ 'id',
506
+ 'author_name',
507
+ 'author_email',
508
+ 'author_origin',
509
+ 'author_website',
510
+ 'author_ip',
511
+ 'author_host',
512
+ 'content',
513
+ 'date',
514
+ 'isspam',
515
+ 'ischecked',
516
+ 'istrash'
517
+ );
518
+ $testrow_1_4_1 = array(
519
+ 'id',
520
+ 'author_name',
521
+ 'author_email',
522
+ 'author_origin',
523
+ 'author_website',
524
+ 'author_ip',
525
+ 'author_host',
526
+ 'content',
527
+ 'datetime',
528
+ 'isspam',
529
+ 'ischecked',
530
+ 'istrash'
531
+ );
532
+ $testrow_1_4_8 = array(
533
+ 'id',
534
+ 'author_name',
535
+ 'author_email',
536
+ 'author_origin',
537
+ 'author_website',
538
+ 'author_ip',
539
+ 'author_host',
540
+ 'content',
541
+ 'datetime',
542
+ 'isspam',
543
+ 'ischecked',
544
+ 'istrash',
545
+ 'admin_reply'
546
+ );
547
+ if ( $data != $testrow_1_0 && $data != $testrow_1_4_1 && $data != $testrow_1_4_8 ) {
548
+ gwolle_gb_add_message( '<p>' . esc_html__('It seems your CSV file is from an export that is not compatible with this version of Gwolle-GB.', 'gwolle-gb') . '</p>', true, false);
549
+ break;
550
+ }
551
+ $row++;
552
+ continue;
553
+ }
554
+
555
+ if ( $num != 12 && $num != 13 ) {
556
+ gwolle_gb_add_message( '<p>' . esc_html__('Your data seems to be corrupt. Import failed.', 'gwolle-gb') . '</p>', true, false);
557
+ break;
558
+ }
559
+
560
+ /* New Instance of gwolle_gb_entry. */
561
+ $entry = new gwolle_gb_entry();
562
+
563
+ /* Check if the date is a timestamp, else convert */
564
+ if ( !is_numeric($data[8]) ) {
565
+ $data[8] = strtotime($data[8]);
566
+ }
567
+
568
+ /* Set the data in the instance */
569
+ // $entry->set_id( $data[0] ); // id of entry
570
+ $entry->set_author_name( $data[1] );
571
+ $entry->set_author_email( $data[2] );
572
+ $entry->set_author_origin( $data[3] );
573
+ $entry->set_author_website( $data[4] );
574
+ $entry->set_author_ip( $data[5] );
575
+ $entry->set_author_host( $data[6] );
576
+ $entry->set_content( $data[7] );
577
+ $entry->set_datetime( $data[8] );
578
+ $entry->set_isspam( $data[9] );
579
+ $entry->set_ischecked( $data[10] );
580
+ $entry->set_istrash( $data[11] );
581
+ if ( isset( $data[12] ) ) {
582
+ $entry->set_admin_reply( $data[12] ); // admin_reply is only since 1.4.8
583
+ }
584
+
585
+ /* Save the instance */
586
+ $save = $entry->save();
587
+ if ( $save ) {
588
+ // We have been saved to the Database
589
+ gwolle_gb_add_log_entry( $entry->get_id(), 'imported-from-gwolle' );
590
+ $row++;
591
+ } else {
592
+ //$gwolle_gb_messages .= '<p>' . print_r( $entry, true ) . '</p>'; // Debug
593
+ gwolle_gb_add_message( '<p>' . esc_html__('Your data seems to be corrupt. Saving failed and import failed.', 'gwolle-gb') . '</p>', true, false);
594
+ break;
595
+ }
596
+
597
+ }
598
+ $row--; // minus the header
599
+
600
+ if ( $row == 0 ) {
601
+ gwolle_gb_add_message( '<p>' . esc_html__("I'm sorry, but I wasn't able to import entries from the CSV file.", 'gwolle-gb') . '</p>', true, false);
602
+ } else if ( $row == 1 || $row > 1 ) {
603
+ do_action( 'gwolle_gb_save_entry_admin' );
604
+ gwolle_gb_add_message( '<p>' . sprintf( _n('%s entry imported successfully from the CSV file.','%s entries imported successfully from the CSV file.', $row, 'gwolle-gb'), $row ) . '</p>', false, false);
605
+ }
606
+
607
+ fclose($handle);
608
+ }
609
+ }
610
+ } else {
611
+ // Set that to be the returned message.
612
+ gwolle_gb_add_message( '<p>' . esc_html__('Your upload triggered the following error:', 'gwolle-gb') . ' ' . $_FILES['gwolle_gb_gwolle']['error'] . '</p>', true, false);
613
+ }
614
+ }
615
+ }
616
+ }
617
+ }
admin/gb-page-settings.php ADDED
@@ -0,0 +1,535 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ function gwolle_gb_page_settings() {
13
+
14
+ if ( function_exists('current_user_can') && !current_user_can('manage_options') ) {
15
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
16
+ }
17
+
18
+ gwolle_gb_admin_enqueue();
19
+
20
+ $active_tab = 'gwolle_gb_forms';
21
+ $saved = false;
22
+ $debug_test = false;
23
+ $uninstalled = false;
24
+ $gwolle_gb_messages = '';
25
+ //if ( WP_DEBUG ) { echo "_POST: "; var_dump($_POST); }
26
+
27
+ if ( isset( $_POST['option_page']) && $_POST['option_page'] == 'gwolle_gb_options' ) {
28
+ if ( isset( $_POST['gwolle_gb_tab'] ) ) {
29
+ $active_tab = $_POST['gwolle_gb_tab'];
30
+
31
+ switch ( $active_tab ) {
32
+ case 'gwolle_gb_forms':
33
+ /* Form Settings */
34
+
35
+ /* Check Nonce */
36
+ $verified = false;
37
+ if ( isset($_POST['gwolle_gb_page_settings_formtab']) ) {
38
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_page_settings_formtab'], 'gwolle_gb_page_settings_formtab' );
39
+ }
40
+ if ( $verified == false ) {
41
+ // Nonce is invalid.
42
+ $gwolle_gb_messages .= '<p>' . __('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
43
+ $gwolle_gb_errors = 'error';
44
+ break;
45
+ }
46
+
47
+ if (isset($_POST['require_login']) && $_POST['require_login'] == 'on') {
48
+ update_option('gwolle_gb-require_login', 'true');
49
+ $saved = true;
50
+ } else {
51
+ update_option('gwolle_gb-require_login', 'false');
52
+ $saved = true;
53
+ }
54
+
55
+ if (isset($_POST['labels_float']) && $_POST['labels_float'] == 'on') {
56
+ update_option('gwolle_gb-labels_float', 'true');
57
+ $saved = true;
58
+ } else {
59
+ update_option('gwolle_gb-labels_float', 'false');
60
+ $saved = true;
61
+ }
62
+
63
+ // Always save it, even when empty, for MultiLingual plugins.
64
+ $header = gwolle_gb_sanitize_input( $_POST['header'] );
65
+ update_option('gwolle_gb-header', $header);
66
+ $saved = true;
67
+
68
+ $notice = gwolle_gb_sanitize_input( $_POST['notice'], 'setting_textarea' );
69
+ update_option('gwolle_gb-notice', $notice);
70
+ $saved = true;
71
+
72
+ if (isset($_POST['form_ajax']) && $_POST['form_ajax'] == 'on') {
73
+ update_option('gwolle_gb-form_ajax', 'true');
74
+ $saved = true;
75
+ } else {
76
+ update_option('gwolle_gb-form_ajax', 'false');
77
+ $saved = true;
78
+ }
79
+
80
+ $list = Array(
81
+ 'form_name_enabled',
82
+ 'form_name_mandatory',
83
+ 'form_city_enabled',
84
+ 'form_city_mandatory',
85
+ 'form_email_enabled',
86
+ 'form_email_mandatory',
87
+ 'form_homepage_enabled',
88
+ 'form_homepage_mandatory',
89
+ 'form_message_enabled',
90
+ 'form_message_mandatory',
91
+ 'form_bbcode_enabled',
92
+ 'form_antispam_enabled',
93
+ 'form_recaptcha_enabled'
94
+ );
95
+ $form_setting = Array();
96
+ foreach ( $list as $item ) {
97
+ if ( isset($_POST[$item]) && $_POST[$item] == 'on' ) {
98
+ $form_setting[$item] = 'true';
99
+ } else {
100
+ $form_setting[$item] = 'false';
101
+ }
102
+ }
103
+ $form_setting = serialize( $form_setting );
104
+ update_option( 'gwolle_gb-form', $form_setting );
105
+ $saved = true;
106
+ break;
107
+ case 'gwolle_gb_reading':
108
+ /* Reading Settings */
109
+
110
+ /* Check Nonce */
111
+ $verified = false;
112
+ if ( isset($_POST['gwolle_gb_page_settings_readingtab']) ) {
113
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_page_settings_readingtab'], 'gwolle_gb_page_settings_readingtab' );
114
+ }
115
+ if ( $verified == false ) {
116
+ // Nonce is invalid.
117
+ $gwolle_gb_messages .= '<p>' . __('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
118
+ $gwolle_gb_errors = 'error';
119
+ break;
120
+ }
121
+
122
+ if ( isset($_POST['entriesPerPage']) && is_numeric($_POST['entriesPerPage']) && $_POST['entriesPerPage'] > 0 ) {
123
+ update_option('gwolle_gb-entriesPerPage', (int) $_POST['entriesPerPage']);
124
+ $saved = true;
125
+ }
126
+
127
+ if (isset($_POST['showLineBreaks']) && $_POST['showLineBreaks'] == 'on') {
128
+ update_option('gwolle_gb-showLineBreaks', 'true');
129
+ $saved = true;
130
+ } else {
131
+ update_option('gwolle_gb-showLineBreaks', 'false');
132
+ $saved = true;
133
+ }
134
+
135
+ if ( isset($_POST['excerpt_length']) && is_numeric($_POST['excerpt_length']) ) {
136
+ update_option('gwolle_gb-excerpt_length', (int) $_POST['excerpt_length']);
137
+ $saved = true;
138
+ }
139
+
140
+ if (isset($_POST['showSmilies']) && $_POST['showSmilies'] == 'on') {
141
+ update_option('gwolle_gb-showSmilies', 'true');
142
+ $saved = true;
143
+ } else {
144
+ update_option('gwolle_gb-showSmilies', 'false');
145
+ $saved = true;
146
+ }
147
+
148
+ if (isset($_POST['linkAuthorWebsite']) && $_POST['linkAuthorWebsite'] == 'on') {
149
+ update_option('gwolle_gb-linkAuthorWebsite', 'true');
150
+ $saved = true;
151
+ } else {
152
+ update_option('gwolle_gb-linkAuthorWebsite', 'false');
153
+ $saved = true;
154
+ }
155
+
156
+ if (isset($_POST['admin_style']) && $_POST['admin_style'] == 'on') {
157
+ update_option('gwolle_gb-admin_style', 'true');
158
+ $saved = true;
159
+ } else {
160
+ update_option('gwolle_gb-admin_style', 'false');
161
+ $saved = true;
162
+ }
163
+
164
+ if (isset($_POST['navigation']) && $_POST['navigation'] == 0) {
165
+ update_option('gwolle_gb-navigation', 0);
166
+ $saved = true;
167
+ } else if (isset($_POST['navigation']) && $_POST['navigation'] == 1) {
168
+ update_option('gwolle_gb-navigation', 1);
169
+ $saved = true;
170
+ }
171
+
172
+ if (isset($_POST['paginate_all']) && $_POST['paginate_all'] == 'on') {
173
+ update_option('gwolle_gb-paginate_all', 'true');
174
+ $saved = true;
175
+ } else {
176
+ update_option('gwolle_gb-paginate_all', 'false');
177
+ $saved = true;
178
+ }
179
+
180
+ $list = Array(
181
+ 'read_avatar',
182
+ 'read_name',
183
+ 'read_city',
184
+ 'read_datetime',
185
+ 'read_date',
186
+ 'read_content',
187
+ 'read_aavatar',
188
+ 'read_editlink'
189
+ );
190
+ $read_setting = Array();
191
+ foreach ( $list as $item ) {
192
+ if ( isset($_POST[$item]) && $_POST[$item] == 'on' ) {
193
+ $read_setting[$item] = 'true';
194
+ } else {
195
+ $read_setting[$item] = 'false';
196
+ }
197
+ }
198
+ $read_setting = serialize( $read_setting );
199
+ update_option( 'gwolle_gb-read', $read_setting );
200
+ $saved = true;
201
+ break;
202
+ case 'gwolle_gb_admin':
203
+ /* Admin Settings */
204
+
205
+ /* Check Nonce */
206
+ $verified = false;
207
+ if ( isset($_POST['gwolle_gb_page_settings_admintab']) ) {
208
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_page_settings_admintab'], 'gwolle_gb_page_settings_admintab' );
209
+ }
210
+ if ( $verified == false ) {
211
+ // Nonce is invalid.
212
+ $gwolle_gb_messages .= '<p>' . __('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
213
+ $gwolle_gb_errors = 'error';
214
+ break;
215
+ }
216
+
217
+ if ( isset($_POST['entries_per_page']) && is_numeric($_POST['entries_per_page']) && $_POST['entries_per_page'] > 0 ) {
218
+ update_option( 'gwolle_gb-entries_per_page', (int) $_POST['entries_per_page']);
219
+ $saved = true;
220
+ }
221
+
222
+ if (isset($_POST['showEntryIcons']) && $_POST['showEntryIcons'] == 'on') {
223
+ update_option('gwolle_gb-showEntryIcons', 'true');
224
+ $saved = true;
225
+ } else {
226
+ update_option('gwolle_gb-showEntryIcons', 'false');
227
+ $saved = true;
228
+ }
229
+
230
+ break;
231
+ case 'gwolle_gb_antispam':
232
+ /* Anti-Spam Settings */
233
+
234
+ /* Check Nonce */
235
+ $verified = false;
236
+ if ( isset($_POST['gwolle_gb_page_settings_antispamtab']) ) {
237
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_page_settings_antispamtab'], 'gwolle_gb_page_settings_antispamtab' );
238
+ }
239
+ if ( $verified == false ) {
240
+ // Nonce is invalid.
241
+ $gwolle_gb_messages .= '<p>' . __('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
242
+ $gwolle_gb_errors = 'error';
243
+ break;
244
+ }
245
+
246
+ if (isset($_POST['moderate-entries']) && $_POST['moderate-entries'] == 'on') {
247
+ update_option('gwolle_gb-moderate-entries', 'true');
248
+ $saved = true;
249
+ } else {
250
+ update_option('gwolle_gb-moderate-entries', 'false');
251
+ $saved = true;
252
+ }
253
+
254
+ if (isset($_POST['refuse-spam']) && $_POST['refuse-spam'] == 'on') {
255
+ update_option('gwolle_gb-refuse-spam', 'true');
256
+ $saved = true;
257
+ } else {
258
+ update_option('gwolle_gb-refuse-spam', 'false');
259
+ $saved = true;
260
+ }
261
+
262
+ if (isset($_POST['honeypot']) && $_POST['honeypot'] == 'on') {
263
+ update_option('gwolle_gb-honeypot', 'true');
264
+ $saved = true;
265
+ } else {
266
+ update_option('gwolle_gb-honeypot', 'false');
267
+ $saved = true;
268
+ }
269
+
270
+ if (isset($_POST['gwolle_gb_nonce']) && $_POST['gwolle_gb_nonce'] == 'on') {
271
+ update_option('gwolle_gb-nonce', 'true');
272
+ $saved = true;
273
+ } else {
274
+ update_option('gwolle_gb-nonce', 'false');
275
+ $saved = true;
276
+ }
277
+
278
+ if (isset($_POST['gwolle_gb_longtext']) && $_POST['gwolle_gb_longtext'] == 'on') {
279
+ update_option('gwolle_gb-longtext', 'true');
280
+ $saved = true;
281
+ } else {
282
+ update_option('gwolle_gb-longtext', 'false');
283
+ $saved = true;
284
+ }
285
+
286
+ if (isset($_POST['akismet-active']) && $_POST['akismet-active'] == 'on') {
287
+ update_option('gwolle_gb-akismet-active', 'true');
288
+ $saved = true;
289
+ } else {
290
+ update_option('gwolle_gb-akismet-active', 'false');
291
+ $saved = true;
292
+ }
293
+
294
+ if (isset($_POST['gwolle_gb_sfs']) && $_POST['gwolle_gb_sfs'] == 'on') {
295
+ update_option('gwolle_gb-sfs', 'true');
296
+ $saved = true;
297
+ } else {
298
+ update_option('gwolle_gb-sfs', 'false');
299
+ $saved = true;
300
+ }
301
+
302
+ if ( isset($_POST['antispam-question']) ) {
303
+ update_option('gwolle_gb-antispam-question', gwolle_gb_sanitize_input($_POST['antispam-question']));
304
+ $saved = true;
305
+ }
306
+ if ( isset($_POST['antispam-answer']) ) {
307
+ update_option('gwolle_gb-antispam-answer', gwolle_gb_sanitize_input($_POST['antispam-answer']));
308
+ $saved = true;
309
+ }
310
+
311
+ break;
312
+ case 'gwolle_gb_mail':
313
+ /* Mail Settings */
314
+
315
+ /* Check Nonce */
316
+ $verified = false;
317
+ if ( isset($_POST['gwolle_gb_page_settings_emailtab']) ) {
318
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_page_settings_emailtab'], 'gwolle_gb_page_settings_emailtab' );
319
+ }
320
+ if ( $verified == false ) {
321
+ // Nonce is invalid.
322
+ $gwolle_gb_messages .= '<p>' . __('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
323
+ $gwolle_gb_errors = 'error';
324
+ break;
325
+ }
326
+
327
+ if ( isset($_POST['admin_mail_from']) && $_POST['admin_mail_from'] != gwolle_gb_sanitize_output( get_option('gwolle_gb-mail-from') ) ) {
328
+ $admin_mail_from = gwolle_gb_sanitize_input( $_POST['admin_mail_from'] );
329
+ if ( filter_var( $admin_mail_from, FILTER_VALIDATE_EMAIL ) ) {
330
+ // Valid Email address.
331
+ update_option('gwolle_gb-mail-from', $admin_mail_from);
332
+ $saved = true;
333
+ }
334
+ }
335
+
336
+ if ( isset($_POST['unsubscribe']) && $_POST['unsubscribe'] > 0 ) {
337
+ $user_id = (int) $_POST['unsubscribe'];
338
+ $user_ids = Array();
339
+
340
+ $user_ids_old = get_option('gwolle_gb-notifyByMail' );
341
+ if ( strlen($user_ids_old) > 0 ) {
342
+ $user_ids_old = explode( ",", $user_ids_old );
343
+ foreach ( $user_ids_old as $user_id_old ) {
344
+ if ( $user_id_old == $user_id ) {
345
+ continue;
346
+ }
347
+ if ( is_numeric($user_id_old) ) {
348
+ $user_ids[] = $user_id_old;
349
+ }
350
+ }
351
+ }
352
+
353
+ $user_ids = implode(",", $user_ids);
354
+ update_option('gwolle_gb-notifyByMail', $user_ids);
355
+ $saved = true;
356
+ }
357
+
358
+ if ( isset($_POST['subscribe']) && $_POST['subscribe'] > 0 ) {
359
+ $user_id = (int) $_POST['subscribe'];
360
+ $user_ids = Array();
361
+
362
+ $user_ids_old = get_option('gwolle_gb-notifyByMail' );
363
+ if ( strlen($user_ids_old) > 0 ) {
364
+ $user_ids_old = explode( ",", $user_ids_old );
365
+ foreach ( $user_ids_old as $user_id_old ) {
366
+ if ( $user_id_old == $user_id ) {
367
+ continue; // will be added again below the loop
368
+ }
369
+ if ( is_numeric($user_id_old) ) {
370
+ $user_ids[] = $user_id_old;
371
+ }
372
+ }
373
+ }
374
+ $user_ids[] = $user_id; // Really add it.
375
+
376
+ $user_ids = implode(",", $user_ids);
377
+ update_option('gwolle_gb-notifyByMail', $user_ids);
378
+ $saved = true;
379
+ }
380
+
381
+ if ( isset($_POST['adminMailContent']) ) {
382
+ $mail_content = gwolle_gb_sanitize_input( $_POST['adminMailContent'], 'setting_textarea' );
383
+ update_option('gwolle_gb-adminMailContent', $mail_content);
384
+ $saved = true;
385
+ }
386
+
387
+ if (isset($_POST['mail_author']) && $_POST['mail_author'] == 'on') {
388
+ update_option('gwolle_gb-mail_author', 'true');
389
+ $saved = true;
390
+ } else {
391
+ update_option('gwolle_gb-mail_author', 'false');
392
+ $saved = true;
393
+ }
394
+
395
+ if ( isset($_POST['authorMailContent']) ) {
396
+ $mail_content = gwolle_gb_sanitize_input( $_POST['authorMailContent'], 'setting_textarea' );
397
+ update_option('gwolle_gb-authorMailContent', $mail_content);
398
+ $saved = true;
399
+ }
400
+
401
+ if ( isset($_POST['gwolle_gb-mail_admin_replyContent']) ) {
402
+ $mail_content = gwolle_gb_sanitize_input( $_POST['gwolle_gb-mail_admin_replyContent'], 'setting_textarea' );
403
+ update_option('gwolle_gb-mail_admin_replyContent', $mail_content);
404
+ $saved = true;
405
+ }
406
+
407
+ break;
408
+ case 'gwolle_gb_debug':
409
+ /* Debug */
410
+
411
+ /* Check Nonce */
412
+ $verified = false;
413
+ if ( isset($_POST['gwolle_gb_page_settings_debugtab']) ) {
414
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_page_settings_debugtab'], 'gwolle_gb_page_settings_debugtab' );
415
+ }
416
+ if ( $verified == false ) {
417
+ // Nonce is invalid.
418
+ $gwolle_gb_messages .= '<p>' . __('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
419
+ $gwolle_gb_errors = 'error';
420
+ break;
421
+ }
422
+
423
+ if (isset( $_POST['gwolle_gb_debug']) ) {
424
+ // Save test entries
425
+ $debug_test = true;
426
+ } else {
427
+ // Uninstallation not confirmed.
428
+ }
429
+
430
+ break;
431
+ case 'gwolle_gb_uninstall':
432
+ /* Uninstall */
433
+
434
+ /* Check Nonce */
435
+ $verified = false;
436
+ if ( isset($_POST['gwolle_gb_page_settings_uninstalltab']) ) {
437
+ $verified = wp_verify_nonce( $_POST['gwolle_gb_page_settings_uninstalltab'], 'gwolle_gb_page_settings_uninstalltab' );
438
+ }
439
+ if ( $verified == false ) {
440
+ // Nonce is invalid.
441
+ $gwolle_gb_messages .= '<p>' . __('Nonce check failed. Please try again.', 'gwolle-gb') . '</p>';
442
+ $gwolle_gb_errors = 'error';
443
+ break;
444
+ }
445
+
446
+ if (isset($_POST['gwolle_gb_uninstall_confirmed']) && $_POST['gwolle_gb_uninstall_confirmed'] == 'on') {
447
+ if ( function_exists('is_multisite') && ! is_multisite() ) {
448
+ // uninstall the plugin -> delete all tables and preferences of the plugin
449
+ gwolle_gb_uninstall();
450
+ $uninstalled = true;
451
+ }
452
+ } else {
453
+ // Uninstallation not confirmed.
454
+ }
455
+
456
+ break;
457
+ default:
458
+ /* Just load the first tab */
459
+ $active_tab = 'gwolle_gb_forms';
460
+ }
461
+ }
462
+ } ?>
463
+
464
+ <div class="wrap gwolle_gb">
465
+
466
+ <div id="icon-gwolle-gb"><br /></div>
467
+ <h1><?php _e('Settings', 'gwolle-gb'); ?></h1>
468
+
469
+ <?php
470
+ if ( $saved ) {
471
+ echo '
472
+ <div id="message" class="updated fade notice is-dismissible">
473
+ <p>' . esc_html__('Changes saved.', 'gwolle-gb') . '</p>
474
+ </div>';
475
+ } else if ( $gwolle_gb_messages ) {
476
+ echo '
477
+ <div id="message" class="updated fade notice is-dismissible ' . $gwolle_gb_errors . ' ">' .
478
+ $gwolle_gb_messages .
479
+ '</div>';
480
+ }
481
+
482
+ /* The rel attribute will be the form that becomes active */ ?>
483
+ <h2 class="nav-tab-wrapper gwolle-nav-tab-wrapper">
484
+ <a href="#" class="nav-tab <?php if ($active_tab == 'gwolle_gb_forms') { echo "nav-tab-active";} ?>" rel="gwolle_gb_forms"><?php /* translators: Settings page tab */ esc_html_e('Form', 'gwolle-gb'); ?></a>
485
+ <a href="#" class="nav-tab <?php if ($active_tab == 'gwolle_gb_reading') { echo "nav-tab-active";} ?>" rel="gwolle_gb_reading"><?php /* translators: Settings page tab */ esc_html_e('Reading', 'gwolle-gb'); ?></a>
486
+ <a href="#" class="nav-tab <?php if ($active_tab == 'gwolle_gb_admin') { echo "nav-tab-active";} ?>" rel="gwolle_gb_admin"><?php /* translators: Settings page tab */ esc_html_e('Admin', 'gwolle-gb'); ?></a>
487
+ <a href="#" class="nav-tab <?php if ($active_tab == 'gwolle_gb_antispam') { echo "nav-tab-active";} ?>" rel="gwolle_gb_antispam"><?php /* translators: Settings page tab */ esc_html_e('Anti-spam', 'gwolle-gb'); ?></a>
488
+ <a href="#" class="nav-tab <?php if ($active_tab == 'gwolle_gb_mail') { echo "nav-tab-active";} ?>" rel="gwolle_gb_mail"><?php /* translators: Settings page tab */ esc_html_e('Notifications', 'gwolle-gb'); ?></a>
489
+ <a href="#" class="nav-tab <?php if ($active_tab == 'gwolle_gb_debug') { echo "nav-tab-active";} ?>" rel="gwolle_gb_debug"><?php /* translators: Settings page tab */ esc_html_e('Debug', 'gwolle-gb'); ?></a>
490
+ <?php if ( function_exists('is_multisite') && ! is_multisite() ) { ?>
491
+ <a href="#" class="nav-tab <?php if ($active_tab == 'gwolle_gb_uninstall') { echo "nav-tab-active";} ?>" rel="gwolle_gb_uninstall"><?php /* translators: Settings page tab */ esc_html_e('Uninstall', 'gwolle-gb'); ?></a>
492
+ <?php } ?>
493
+ </h2>
494
+
495
+
496
+ <form name="gwolle_gb_options" class="gwolle_gb_options gwolle_gb_forms <?php if ($active_tab == 'gwolle_gb_forms') { echo "active";} ?>" method="post" action="">
497
+ <?php gwolle_gb_page_settingstab_form(); ?>
498
+ </form>
499
+
500
+
501
+ <form name="gwolle_gb_options" class="gwolle_gb_options gwolle_gb_reading <?php if ($active_tab == 'gwolle_gb_reading') { echo "active";} ?>" method="post" action="">
502
+ <?php gwolle_gb_page_settingstab_reading(); ?>
503
+ </form>
504
+
505
+
506
+ <form name="gwolle_gb_options" class="gwolle_gb_options gwolle_gb_admin <?php if ($active_tab == 'gwolle_gb_admin') { echo "active";} ?>" method="post" action="">
507
+ <?php gwolle_gb_page_settingstab_admin(); ?>
508
+ </form>
509
+
510
+
511
+ <form name="gwolle_gb_options" class="gwolle_gb_options gwolle_gb_antispam <?php if ($active_tab == 'gwolle_gb_antispam') { echo "active";} ?>" method="post" action="">
512
+ <?php gwolle_gb_page_settingstab_antispam(); ?>
513
+ </form>
514
+
515
+
516
+ <form name="gwolle_gb_options" class="gwolle_gb_options gwolle_gb_mail <?php if ($active_tab == 'gwolle_gb_mail') { echo "active";} ?>" method="post" action="">
517
+ <?php gwolle_gb_page_settingstab_email(); ?>
518
+ </form>
519
+
520
+
521
+ <form name="gwolle_gb_options" class="gwolle_gb_options gwolle_gb_debug <?php if ($active_tab == 'gwolle_gb_debug') { echo "active";} ?>" method="post" action="">
522
+ <?php gwolle_gb_page_settingstab_debug( $debug_test ); ?>
523
+ </form>
524
+
525
+
526
+ <?php if ( function_exists('is_multisite') && ! is_multisite() ) { ?>
527
+ <form name="gwolle_gb_options" class="gwolle_gb_options gwolle_gb_uninstall <?php if ($active_tab == 'gwolle_gb_uninstall') { echo "active";} ?>" method="post" action="">
528
+ <?php gwolle_gb_page_settingstab_uninstall( $uninstalled ); ?>
529
+ </form>
530
+ <?php } ?>
531
+
532
+
533
+ </div> <!-- wrap -->
534
+ <?php
535
+ }
admin/gb-pagination.php ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // No direct calls to this script
4
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
5
+ die('No direct calls allowed!');
6
+ }
7
+
8
+
9
+ /*
10
+ * gwolle_gb_pagination_admin
11
+ * Pagination of the entries for the page-entries.php
12
+ *
13
+ * @args: $pageNum, int with the number of the requested page.
14
+ * $pages_total, int with the total number of pages.
15
+ * $count, int with total number of entries. Relative to the $show variable.
16
+ * $show, string with the tab of the page that is shown.
17
+ * @return: $pagination, string with the html of the pagination.
18
+ */
19
+ function gwolle_gb_pagination_admin( $pageNum, $pages_total, $count, $show ) {
20
+
21
+ $num_entries = get_option('gwolle_gb-entries_per_page', 20);
22
+
23
+ $book_id = 0;
24
+ if ( isset( $_GET['book_id'] ) ) {
25
+ $book_id = (int) $_GET['book_id'];
26
+ }
27
+
28
+ // Calculate written text with info "Showing 1 – 25 of 54"
29
+ if ($count == 0) {
30
+ $firstentry = 0;
31
+ $lastentry = 0;
32
+ } else {
33
+ $firstentry = ($pageNum - 1) * $num_entries + 1;
34
+ $total_on_this_page = $count - ( ($pageNum - 1) * $num_entries );
35
+ if ( $total_on_this_page > $num_entries ) {
36
+ $total_on_this_page = $num_entries;
37
+ }
38
+ $lastentry = $firstentry + $total_on_this_page -1;
39
+ }
40
+
41
+ $pagination = '<div class="tablenav-pages">';
42
+
43
+ $highDotsMade = false;
44
+ $pages_done = array();
45
+
46
+ $pagination .= '<span class="displaying-num">' . esc_html__('Showing:', 'gwolle-gb') .
47
+ ' ' . $firstentry . ' &#8211; ' . $lastentry . ' ' . esc_html__('of', 'gwolle-gb') . ' ' . $count . '</span>
48
+ ';
49
+
50
+
51
+ if ($pageNum > 1) {
52
+ $pagination .= '<a class="first page-numbers" href="admin.php?page=' . GWOLLE_GB_FOLDER . '/entries.php&show=' . $show . '&pageNum=' . round($pageNum - 1) . '&book_id=' . $book_id . '" rel="prev">&laquo;</a>';
53
+ }
54
+
55
+ if ($pageNum < 5) {
56
+ $showRange = 5;
57
+ if ($pages_total < 6) {
58
+ $showRange = $pages_total;
59
+ $highDotsMade = true; // no need for highdots.
60
+ }
61
+ for ($i = 1; $i < ($showRange + 1); $i++) {
62
+ if ($i == $pageNum) {
63
+ if ( in_array( $i, $pages_done ) ) { continue; }
64
+ $pagination .= '<span class="page-numbers current">' . $i . '</span>';
65
+ $pages_done[] = $i;
66
+ } else {
67
+ if ( in_array( $i, $pages_done ) ) { continue; }
68
+ $pagination .= '<a class="page-numbers" href="admin.php?page=' . GWOLLE_GB_FOLDER . '/entries.php&show=' . $show . '&pageNum=' . $i . '&book_id=' . $book_id . '">' . $i . '</a>';
69
+ $pages_done[] = $i;
70
+ if ( $i == $pages_total ) { break; }
71
+ }
72
+ }
73
+
74
+ if ( ($pageNum + 4 < $pages_total) && ( ! $highDotsMade) ) {
75
+ $pagination .= '<span class="page-numbers dots">...</span>';
76
+ $highDotsMade = true;
77
+ }
78
+ } elseif ($pageNum > 4) {
79
+ $pagination .= '<a class="page-numbers" href="admin.php?page=' . GWOLLE_GB_FOLDER . '/entries.php&show=' . $show . '&pageNum=1&book_id=' . $book_id . '">1</a>';
80
+ if ($pages_total > 4) {
81
+ $pagination .= '<span class="page-numbers dots">...</span>';
82
+ }
83
+ if ($pageNum + 2 < $pages_total) {
84
+ $minRange = $pageNum - 2;
85
+ $showRange = $pageNum + 2;
86
+ } else {
87
+ $minRange = $pageNum - 3;
88
+ $showRange = $pages_total - 1;
89
+ }
90
+ for ($i = $minRange; $i <= $showRange; $i++) {
91
+ if ($i == $pageNum) {
92
+ $pagination .= '<span class="page-numbers current">' . $i . '</span>';
93
+ } else {
94
+ $pagination .= '<a class="page-numbers" href="admin.php?page=' . GWOLLE_GB_FOLDER . '/entries.php&show=' . $show . '&pageNum=' . $i . '&book_id=' . $book_id . '">' . $i . '</a>';
95
+ }
96
+ }
97
+ if ($pageNum == $pages_total) {
98
+ $pagination .= '<span class="page-numbers current">' . $pageNum . '</span>';
99
+ }
100
+ }
101
+
102
+ if ($pageNum < $pages_total) {
103
+ if ( ($pageNum + 3 < $pages_total) && ( ! $highDotsMade) ) {
104
+ $pagination .= '<span class="page-numbers dots">...</span>';
105
+ $highDotsMade = true;
106
+ }
107
+ if ( ! in_array( $pages_total, $pages_done ) ) {
108
+ $pagination .= '<a class="page-numbers" href="admin.php?page=' . GWOLLE_GB_FOLDER . '/entries.php&show=' . $show . '&pageNum=' . $pages_total . '&book_id=' . $book_id . '">' . $pages_total . '</a>';
109
+ }
110
+ $pagination .= '<a class="last page-numbers" href="admin.php?page=' . GWOLLE_GB_FOLDER . '/entries.php&show=' . $show . '&pageNum=' . round($pageNum + 1) . '&book_id=' . $book_id . '" rel="next">&raquo;</a>';
111
+ }
112
+
113
+ $pagination .= '</div>';
114
+
115
+ return $pagination;
116
+
117
+ }
admin/gb-upgrade.php ADDED
@@ -0,0 +1,496 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ ** This file is used during activation or upgrading from a prior version.
4
+ **
5
+ ** It uses the PHP function version_compare(). Usage:
6
+ ** version_compare(OLD_VERSION_NUMBER,NEW_VERSION_NUMBER,'<')
7
+ ** => TRUE, if the old version number is smaller than the new one.
8
+ */
9
+
10
+
11
+ // No direct calls to this script
12
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
13
+ die('No direct calls allowed!');
14
+ }
15
+
16
+
17
+ function gwolle_gb_install() {
18
+ global $wpdb;
19
+
20
+ // Install the table for the entries
21
+
22
+ // Declare database table names
23
+ $wpdb->gwolle_gb_entries = $wpdb->prefix . 'gwolle_gb_entries';
24
+ $wpdb->gwolle_gb_log = $wpdb->prefix . 'gwolle_gb_log';
25
+
26
+ $result = $wpdb->query("SHOW TABLES LIKE '" . $wpdb->prefix . "gwolle_gb_entries'");
27
+ if ( $result === 0 ) {
28
+ $sql = "
29
+ CREATE TABLE
30
+ " . $wpdb->gwolle_gb_entries . "
31
+ (
32
+ id int(10) NOT NULL auto_increment,
33
+ author_name text NOT NULL,
34
+ author_id int(5) NOT NULL default '0',
35
+ author_email text NOT NULL,
36
+ author_origin text NOT NULL,
37
+ author_website text NOT NULL,
38
+ author_ip text NOT NULL,
39
+ author_host text NOT NULL,
40
+ content longtext NOT NULL,
41
+ datetime bigint(8) UNSIGNED NOT NULL,
42
+ ischecked tinyint(1) NOT NULL,
43
+ checkedby int(5) NOT NULL,
44
+ istrash varchar(1) NOT NULL default '0',
45
+ isspam varchar(1) NOT NULL default '0',
46
+ admin_reply longtext NOT NULL,
47
+ admin_reply_uid int(5) NOT NULL default '0',
48
+ book_id int(5) NOT NULL default '1',
49
+ PRIMARY KEY (id)
50
+ ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci";
51
+ $result = $wpdb->query($sql);
52
+ }
53
+
54
+ $result = $wpdb->query("SHOW TABLES LIKE '" . $wpdb->prefix . "gwolle_gb_log'");
55
+ if ( $result === 0 ) {
56
+ $sql = "
57
+ CREATE TABLE
58
+ " . $wpdb->gwolle_gb_log . "
59
+ (
60
+ id int(8) NOT NULL auto_increment,
61
+ subject text NOT NULL,
62
+ entry_id int(5) NOT NULL,
63
+ author_id int(5) NOT NULL,
64
+ datetime bigint(8) UNSIGNED NOT NULL,
65
+ PRIMARY KEY (id)
66
+ ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci";
67
+ $result = $wpdb->query($sql);
68
+ }
69
+
70
+ /* Upgrade to new shiny db collation. Since WP 4.2 */
71
+ require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
72
+ if ( function_exists('maybe_convert_table_to_utf8mb4') ) {
73
+ if ( 'utf8mb4' === $wpdb->charset ) {
74
+ maybe_convert_table_to_utf8mb4( $wpdb->gwolle_gb_entries );
75
+ maybe_convert_table_to_utf8mb4( $wpdb->gwolle_gb_log );
76
+ }
77
+ }
78
+
79
+ // Save plugin version to database only when we did install.
80
+ $result_after = $wpdb->query("SHOW TABLES LIKE '" . $wpdb->prefix . "gwolle_gb_entries'");
81
+ $result_after2 = $wpdb->query("SHOW TABLES LIKE '" . $wpdb->prefix . "gwolle_gb_log'");
82
+ if ( $result_after != 0 && $result_after2 != 0 ) {
83
+ add_option('gwolle_gb_version', GWOLLE_GB_VER);
84
+ }
85
+
86
+ // Call flush_rules() as a method of the $wp_rewrite object for the RSS Feed.
87
+ global $wp_rewrite;
88
+ $wp_rewrite->flush_rules( false );
89
+ }
90
+
91
+
92
+ function gwolle_gb_uninstall() {
93
+ // Delete the plugin's tables
94
+ global $wpdb;
95
+ $wpdb->query("DROP TABLE " . $wpdb->prefix . "gwolle_gb_log");
96
+ $wpdb->query("DROP TABLE " . $wpdb->prefix . "gwolle_gb_entries");
97
+
98
+ // Delete the plugin's preferences and version-nr in the wp-options table
99
+ $wpdb->query("
100
+ DELETE
101
+ FROM " . $wpdb->prefix . "options
102
+ WHERE
103
+ option_name LIKE 'gwolle_gb%'
104
+ ");
105
+
106
+ // Deactivate ourselves
107
+ deactivate_plugins( GWOLLE_GB_FOLDER . '/gwolle-gb.php' );
108
+ }
109
+
110
+
111
+ function gwolle_gb_upgrade() {
112
+ global $wpdb;
113
+ $installed_ver = get_option('gwolle_gb_version');
114
+
115
+ if (version_compare($installed_ver, '0.9', '<')) {
116
+ /*
117
+ * 0.8 -> 0.9
118
+ * No changes to the database; just added a few options.
119
+ */
120
+ add_option('recaptcha-active', 'false');
121
+ add_option('recaptcha-public-key', '');
122
+ add_option('recaptcha-private-key', '');
123
+ }
124
+
125
+ if (version_compare($installed_ver, '0.9.1', '<')) {
126
+ /*
127
+ * 0.9 -> 0.9.1
128
+ * Moved the email notification options to the WP options table.
129
+ */
130
+ $notifyUser = "
131
+ SELECT *
132
+ FROM
133
+ " . $wpdb -> prefix . "gwolle_gb_settings
134
+ WHERE
135
+ setting_name = 'notify_by_mail'
136
+ AND
137
+ setting_value = '1'
138
+ ";
139
+ $notifySettings = $wpdb->get_results($notifyUser, ARRAY_A);
140
+ foreach ( $notifySettings as $notifySetting ) {
141
+ // Add an option for each notification subscriber.
142
+ add_option('gwolle_gb-notifyByMail-' . $notifySetting['user_id'], 'true');
143
+ }
144
+
145
+ // Delete the old settings table.
146
+ $wpdb->query("
147
+ DROP TABLE
148
+ " . $wpdb->prefix . "gwolle_gb_settings
149
+ ");
150
+ }
151
+
152
+ if (version_compare($installed_ver, '0.9.2', '<')) {
153
+ /*
154
+ ** 0.9.1->0.9.2
155
+ ** Renamed the option for toggling reCAPTCHA so that we can
156
+ ** have different plugins using reCAPTCHA.
157
+ */
158
+ add_option('gwolle_gb-recaptcha-active', get_option('recaptcha-active'));
159
+ delete_option('recaptcha-active');
160
+ }
161
+
162
+ if (version_compare($installed_ver, '0.9.3', '<')) {
163
+ /*
164
+ ** 0.9.2->0.9.3
165
+ ** Added Akismet integration
166
+ ** Add an option row and a new column to the entry table
167
+ ** to be able to mark entries as spam automatically.
168
+ */
169
+ add_option('gwolle_gb-akismet-active', 'false');
170
+ $wpdb->query("
171
+ ALTER
172
+ TABLE " . $wpdb -> gwolle_gb_entries . "
173
+ ADD
174
+ entry_isSpam
175
+ VARCHAR( 1 )
176
+ NOT NULL
177
+ DEFAULT '0'
178
+ AFTER entry_isDeleted
179
+ ");
180
+ }
181
+
182
+ if (version_compare($installed_ver, '0.9.4', '<')) {
183
+ /*
184
+ ** 0.9.3->0.9.4
185
+ ** added access-level, no-mail-on-spam, moderate on/off.
186
+ */
187
+ add_option('gwolle_gb-access-level', '10');
188
+ add_option('gwolle_gb-moderate-entries', 'true');
189
+
190
+ $emailNotification = "
191
+ SELECT *
192
+ FROM
193
+ " . $wpdb -> prefix . "options
194
+ WHERE
195
+ option_name LIKE 'gwolle_gb-notifyByMail-%'
196
+ ";
197
+ $notifications = $wpdb->get_results($emailNotification, ARRAY_A);
198
+ foreach ( $notifications as $notification ) {
199
+ add_option('gwolle_gb-notifyAll-' . str_replace('gwolle_gb-notifyByMail-', '', $notification['option_name']), 'true');
200
+ }
201
+ }
202
+
203
+ if (version_compare($installed_ver, '0.9.4.1', '<')) {
204
+ /*
205
+ ** 0.9.4->0.9.4.1
206
+ ** Caching the Wordpress API key so that we don't need to
207
+ ** validate it each time the user opens the settings panel.
208
+ ** Also, add an option to show icons in the entry list.
209
+ */
210
+ add_option('gwolle_gb-wordpress-api-key', get_option('wordpress_api_key'));
211
+ add_option('gwolle_gb-showEntryIcons', 'true');
212
+ }
213
+
214
+ if (version_compare($installed_ver, '0.9.4.2', '<')) {
215
+ /*
216
+ ** 0.9.4.1->0.9.4.2
217
+ ** Added the possibility to specify the content of the mail
218
+ ** a subscriber of the mail notification gets.
219
+ ** Also, added an option to turn the version-check on/off
220
+ ** and the possibility to set the numbers of entries per page.
221
+ */
222
+ add_option('gwolle_gb-adminMailContent', '');
223
+ if (function_exists('file') && get_cfg_var('allow_url_fopen')) {
224
+ $default = 'true';
225
+ } else {
226
+ $default = 'false';
227
+ }
228
+ add_option('gwolle_gb-autoCheckVersion', $default);
229
+ add_option('gwolle_gb-entriesPerPage', '20');
230
+ }
231
+
232
+ if (version_compare($installed_ver, '0.9.4.2.1', '<')) {
233
+ /*
234
+ ** 0.9.4.2->0.9.4.2.1
235
+ ** Removed the version check because of some problems.
236
+ */
237
+ delete_option('gwolle_gb-autoCheckVersion');
238
+ }
239
+
240
+ if (version_compare($installed_ver, '0.9.4.3', '<')) {
241
+ /*
242
+ ** 0.9.4.2.1->0.9.4.3
243
+ ** Added option to manually set link to the guestbook.
244
+ */
245
+ add_option('gwolle_gb-guestbookLink');
246
+ }
247
+
248
+ if (version_compare($installed_ver, '0.9.4.5', '<')) {
249
+ /*
250
+ ** 0.9.4.2.3->0.9.4.5
251
+ ** Support for Croation chars.
252
+ ** Added option to toggle line breaks-visibility.
253
+ */
254
+ $wpdb->query("
255
+ ALTER
256
+ TABLE " . $wpdb->gwolle_gb_entries . "
257
+ DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
258
+ ");
259
+ $wpdb->query("
260
+ ALTER
261
+ TABLE " . $wpdb->gwolle_gb_entries . "
262
+ CHANGE `entry_id` `entry_id` INT(10) NOT NULL AUTO_INCREMENT,
263
+ CHANGE `entry_author_name` `entry_author_name` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
264
+ CHANGE `entry_authorAdminId` `entry_authorAdminId` INT(5) NOT NULL DEFAULT '0',
265
+ CHANGE `entry_author_email` `entry_author_email` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
266
+ CHANGE `entry_author_origin` `entry_author_origin` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
267
+ CHANGE `entry_author_website` `entry_author_website` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
268
+ CHANGE `entry_author_ip` `entry_author_ip` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
269
+ CHANGE `entry_author_host` `entry_author_host` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
270
+ CHANGE `entry_content` `entry_content` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
271
+ CHANGE `entry_date` `entry_date` VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
272
+ CHANGE `entry_isChecked` `entry_isChecked` TINYINT(1) NOT NULL,
273
+ CHANGE `entry_checkedBy` `entry_checkedBy` INT(5) NOT NULL,
274
+ CHANGE `entry_isDeleted` `entry_isDeleted` VARCHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0',
275
+ CHANGE `entry_isSpam` `entry_isSpam` VARCHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0'
276
+ ");
277
+ add_option('gwolle_gb-showLineBreaks', 'false');
278
+ }
279
+
280
+ if (version_compare($installed_ver, '0.9.4.6', '<')) {
281
+ /*
282
+ ** 0.9.4.5->0.9.4.6
283
+ ** Added option to show/hide text before/after [gwolle_gb] tag.
284
+ */
285
+ add_option('gwolle_gb-guestbookOnly', 'true');
286
+ }
287
+
288
+ if (version_compare($installed_ver, '0.9.5', '<')) {
289
+ /*
290
+ ** 0.9.4.6->0.9.5
291
+ ** Added option to toggle check for import data.
292
+ */
293
+ add_option('gwolle_gb-checkForImport', 'true');
294
+ }
295
+
296
+ if (version_compare($installed_ver, '0.9.6', '<')) {
297
+ /**
298
+ * 0.9.5->0.9.6
299
+ * Added the following options:
300
+ * - toggle replacing of smilies
301
+ * - toggle link to author's website
302
+ */
303
+ add_option('gwolle_gb-showSmilies', 'true');
304
+ add_option('gwolle_gb-linkAuthorWebsite', 'true');
305
+ }
306
+
307
+ if (version_compare($installed_ver, '0.9.9.1', '<')) {
308
+ /*
309
+ * 0.9.8.1->0.9.9.0
310
+ * Removed the access level option, use standard WordPress capabilities.
311
+ * Save Users that are subcribed to notification mails in an option with the array of user_id's
312
+ */
313
+ delete_option('gwolle_gb-access-level');
314
+
315
+ // Get users from database who have subscribed to the notification service.
316
+ $sql = "
317
+ SELECT *
318
+ FROM
319
+ " . $wpdb->prefix . "options
320
+ WHERE
321
+ option_name LIKE 'gwolle_gb-notifyByMail-%'
322
+ ORDER BY
323
+ option_name
324
+ ";
325
+ $notifyUser_result = $wpdb->get_results($sql, ARRAY_A);
326
+ if ( count($notifyUser_result) > 0 ) {
327
+ $user_ids = Array();
328
+ foreach ( $notifyUser_result as $option ) {
329
+ $user_id = (int) str_replace('gwolle_gb-notifyByMail-', '', $option['option_name']);
330
+ $user_info = get_userdata($user_id);
331
+ if ($user_info === FALSE) {
332
+ // Invalid $user_id
333
+ continue;
334
+ }
335
+ if ($user_id > 0) {
336
+ $user_ids[] = $user_id;
337
+ }
338
+ }
339
+ $user_ids = implode(",", $user_ids);
340
+ update_option('gwolle_gb-notifyByMail', $user_ids);
341
+ }
342
+ }
343
+
344
+ if (version_compare($installed_ver, '0.9.9.2', '<')) {
345
+ /*
346
+ * 0.9.9.1->0.9.9.2
347
+ * Remove the options of Users that are subcribed to notification mails
348
+ */
349
+ $wpdb->query("
350
+ DELETE
351
+ FROM " . $wpdb->prefix . "options
352
+ WHERE
353
+ option_name LIKE 'gwolle_gb-notifyByMail-%'
354
+ OR
355
+ option_name LIKE 'gwolle_gb-notifyAll-%'
356
+ ");
357
+ }
358
+
359
+ if (version_compare($installed_ver, '1.0.5', '<')) {
360
+ /*
361
+ * 1.0.4->1.0.5
362
+ * Remove obsolete options
363
+ */
364
+ delete_option('gwolle_gb-access-level');
365
+ delete_option('gwolle_gb-checkForImport');
366
+ delete_option('gwolle_gb-post_ID');
367
+
368
+ /* Alter table of logs */
369
+ $wpdb->query( "
370
+ ALTER TABLE $wpdb->gwolle_gb_log
371
+ CHANGE log_id id int(8) NOT NULL auto_increment,
372
+ CHANGE log_subject subject text NOT NULL,
373
+ CHANGE log_subjectId entry_id int(5) NOT NULL,
374
+ CHANGE log_authorId author_id int(5) NOT NULL,
375
+ CHANGE log_date date varchar(12) NOT NULL
376
+ ");
377
+ }
378
+
379
+ if (version_compare($installed_ver, '1.0.6', '<')) {
380
+ /*
381
+ * 1.0.5->1.0.6
382
+ * Alter table of entries
383
+ */
384
+ $wpdb->query( "
385
+ ALTER TABLE $wpdb->gwolle_gb_entries
386
+ CHANGE `entry_id` `id` INT(10) NOT NULL AUTO_INCREMENT,
387
+ CHANGE `entry_author_name` `author_name` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
388
+ CHANGE `entry_authorAdminId` `author_id` INT(5) NOT NULL DEFAULT '0',
389
+ CHANGE `entry_author_email` `author_email` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
390
+ CHANGE `entry_author_origin` `author_origin` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
391
+ CHANGE `entry_author_website` `author_website` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
392
+ CHANGE `entry_author_ip` `author_ip` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
393
+ CHANGE `entry_author_host` `author_host` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
394
+ CHANGE `entry_content` `content` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
395
+ CHANGE `entry_date` `date` VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
396
+ CHANGE `entry_isChecked` `ischecked` TINYINT(1) NOT NULL,
397
+ CHANGE `entry_checkedBy` `checkedby` INT(5) NOT NULL,
398
+ CHANGE `entry_isDeleted` `istrash` VARCHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0',
399
+ CHANGE `entry_isSpam` `isspam` VARCHAR(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0'
400
+ ");
401
+ }
402
+
403
+ if (version_compare($installed_ver, '1.1.3', '<')) {
404
+ /*
405
+ * 1.1.2->1.1.3
406
+ */
407
+ delete_option('gwolle_gb-guestbookOnly');
408
+ delete_option('gwolle_gb-defaultMailText');
409
+ if ( get_option('gwolle_gb-recaptcha-active', 'false') == 'true' ) {
410
+ $form_setting = Array( 'form_recaptcha_enabled' => 'true' );
411
+ $form_setting = serialize( $form_setting );
412
+ update_option( 'gwolle_gb-form', $form_setting );
413
+ }
414
+ delete_option('gwolle_gb-recaptcha-active');
415
+ }
416
+
417
+ if (version_compare($installed_ver, '1.3.8', '<')) {
418
+ /*
419
+ * 1.3.7->1.3.8
420
+ * Call flush_rules() as a method of the $wp_rewrite object for the RSS Feed.
421
+ */
422
+ global $wp_rewrite;
423
+ $wp_rewrite->flush_rules( false );
424
+ }
425
+
426
+ if (version_compare($installed_ver, '1.4.2', '<')) {
427
+ /*
428
+ * 1.4.1->1.4.2
429
+ * Add datetime field to database and fill it from the date column.
430
+ */
431
+ $wpdb->query( "
432
+ ALTER TABLE $wpdb->gwolle_gb_entries ADD `datetime` BIGINT(8) UNSIGNED NOT NULL AFTER `date`;
433
+ ");
434
+ $wpdb->query( "
435
+ UPDATE `$wpdb->gwolle_gb_entries` SET `datetime` = `date`;
436
+ ");
437
+
438
+ $wpdb->query( "
439
+ ALTER TABLE $wpdb->gwolle_gb_log ADD `datetime` BIGINT(8) UNSIGNED NOT NULL AFTER `date`;
440
+ ");
441
+ $wpdb->query( "
442
+ UPDATE `$wpdb->gwolle_gb_log` SET `datetime` = `date`;
443
+ ");
444
+ }
445
+
446
+ if (version_compare($installed_ver, '1.4.3', '<')) {
447
+ /*
448
+ * 1.4.2->1.4.3
449
+ * Remove date field from database.
450
+ */
451
+ $wpdb->query( "
452
+ ALTER TABLE $wpdb->gwolle_gb_entries DROP COLUMN `date`;
453
+ ");
454
+
455
+ $wpdb->query( "
456
+ ALTER TABLE $wpdb->gwolle_gb_log DROP COLUMN `date`;
457
+ ");
458
+ }
459
+
460
+ if (version_compare($installed_ver, '1.4.8', '<')) {
461
+ /*
462
+ * 1.4.7->1.4.8
463
+ * Add admin_reply and admin_reply_uid field to database.
464
+ */
465
+ $wpdb->query( "
466
+ ALTER TABLE $wpdb->gwolle_gb_entries ADD `admin_reply` LONGTEXT NOT NULL AFTER `isspam`;
467
+ ");
468
+ $wpdb->query( "
469
+ ALTER TABLE $wpdb->gwolle_gb_entries ADD `admin_reply_uid` INT(5) NOT NULL AFTER `admin_reply`;
470
+ ");
471
+ }
472
+
473
+ if (version_compare($installed_ver, '1.5.1', '<')) {
474
+ /*
475
+ * 1.5.0->1.5.1
476
+ * Add book_id field to database and fill it with value '1'.
477
+ */
478
+ $wpdb->query( "
479
+ ALTER TABLE $wpdb->gwolle_gb_entries ADD `book_id` INT(8) UNSIGNED NOT NULL default '1' AFTER `admin_reply_uid`;
480
+ ");
481
+ }
482
+
483
+
484
+ /* Upgrade to new shiny db collation. Since WP 4.2 */
485
+ require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
486
+ if ( function_exists('maybe_convert_table_to_utf8mb4') ) {
487
+ if ( 'utf8mb4' === $wpdb->charset ) {
488
+ maybe_convert_table_to_utf8mb4( $wpdb->gwolle_gb_entries );
489
+ maybe_convert_table_to_utf8mb4( $wpdb->gwolle_gb_log );
490
+ }
491
+ }
492
+
493
+
494
+ /* Update the plugin version option */
495
+ update_option('gwolle_gb_version', GWOLLE_GB_VER);
496
+ }
admin/gfx/entry-admin_reply.png ADDED
Binary file
admin/gfx/entry-blue.png ADDED
Binary file
admin/gfx/entry-checked.png ADDED
Binary file
admin/gfx/entry-spam.png ADDED
Binary file
admin/gfx/entry-trash.png ADDED
Binary file
admin/gfx/entry-unchecked.png ADDED
Binary file
admin/gfx/icon-45x45.png ADDED
Binary file
admin/gfx/index.html ADDED
File without changes
admin/gfx/loading.gif ADDED
Binary file
admin/index.html ADDED
File without changes
admin/js/gwolle-gb-admin.js ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * JavaScript for Gwolle Guestbook, WP-Admin.
3
+ */
4
+
5
+
6
+ /*
7
+ * Postbox on every admin page of this plugin.
8
+ */
9
+ jQuery(document).ready(function($) {
10
+ jQuery('#gwolle_gb_editor_postbox_preview').addClass('closed');
11
+
12
+ jQuery('.gwolle_gb .postbox button.handlediv').click( function() {
13
+ jQuery(jQuery(this).parent().get(0)).toggleClass('closed');
14
+ });
15
+ });
16
+ jQuery(document).ready(function($) {
17
+ jQuery('.gwolle_gb .postbox h2').click( function() {
18
+ jQuery(jQuery(this).parent().get(0)).toggleClass('closed');
19
+ });
20
+ });
21
+
22
+
23
+ /*
24
+ * Entries Page
25
+ */
26
+ jQuery(document).ready(function($) {
27
+
28
+ jQuery("#gwolle_gb_entries input[name='check-all-top']").change(function() {
29
+ gwolle_gb_toggleCheckboxes($("input[name='check-all-top']").is(":checked"));
30
+ });
31
+
32
+ jQuery("#gwolle_gb_entries input[name='check-all-bottom']").change(function() {
33
+ gwolle_gb_toggleCheckboxes($("input[name='check-all-bottom']").is(":checked"));
34
+ });
35
+
36
+ // Function to check/uncheck all checkboxes.
37
+ function gwolle_gb_toggleCheckboxes(checkAll_checked) {
38
+ jQuery("input[name^='check-']").attr("checked", checkAll_checked);
39
+ }
40
+
41
+ });
42
+
43
+
44
+ /*
45
+ * Editor page
46
+ */
47
+
48
+ /* Edit metadata */
49
+ jQuery(document).ready(function($) {
50
+ jQuery('.gwolle_gb_edit_meta').click( function() {
51
+ jQuery('.gwolle_gb_edit_meta_inputs').toggle();
52
+ return false;
53
+ });
54
+
55
+ jQuery('.gwolle_gb_cancel_timestamp').click( function() {
56
+ jQuery('.gwolle_gb_edit_meta_inputs').toggle();
57
+ return false;
58
+ });
59
+
60
+ jQuery('.gwolle_gb_save_timestamp').click( function() {
61
+
62
+ var dd = jQuery("#dd").val();
63
+ var mm = jQuery("#mm").find(":selected").val();
64
+ var yy = jQuery("#yy").val();
65
+ var hh = jQuery("#hh").val();
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
+ jQuery('.gwolle_gb_edit_meta_inputs').toggle();
75
+ return false;
76
+ });
77
+ });
78
+
79
+
80
+ /*
81
+ * Settings Page
82
+ */
83
+ jQuery(document).ready(function($) {
84
+
85
+ /* Select the right tab on the options page */
86
+ jQuery( '.gwolle-nav-tab-wrapper a' ).on('click', function() {
87
+ jQuery( 'form.gwolle_gb_options' ).removeClass( 'active' );
88
+ jQuery( '.gwolle-nav-tab-wrapper a' ).removeClass( 'nav-tab-active' );
89
+
90
+ var rel = jQuery( this ).attr('rel');
91
+ jQuery( '.' + rel ).addClass( 'active' );
92
+ jQuery( this ).addClass( 'nav-tab-active' );
93
+
94
+ return false;
95
+ });
96
+
97
+
98
+ /* Checking checkbox will enable the uninstall button */
99
+ jQuery("input#gwolle_gb_uninstall_confirmed").prop("checked", false); // init
100
+
101
+ jQuery("input#gwolle_gb_uninstall_confirmed").change(function() {
102
+ var checked = jQuery( "input#gwolle_gb_uninstall_confirmed" ).prop('checked');
103
+ if ( checked == true ) {
104
+ jQuery("#gwolle_gb_uninstall").addClass( 'button-primary' );
105
+ jQuery("#gwolle_gb_uninstall").removeAttr('disabled');
106
+ } else {
107
+ jQuery("#gwolle_gb_uninstall").removeClass( 'button-primary' );
108
+ jQuery("#gwolle_gb_uninstall").attr('disabled', true);
109
+ }
110
+ });
111
+
112
+ });
113
+
114
+
115
+ /*
116
+ * Import Page
117
+ */
118
+ jQuery(document).ready(function($) {
119
+
120
+ /* Checking checkbox will enable the submit button for DMS import */
121
+ jQuery("input#gwolle_gb_dmsguestbook").prop("checked", false); // init
122
+
123
+ jQuery("input#gwolle_gb_dmsguestbook").change(function() {
124
+ var checked = jQuery( "input#gwolle_gb_dmsguestbook" ).prop('checked');
125
+ if ( checked == true ) {
126
+ jQuery("#start_import_dms").addClass( 'button-primary' );
127
+ jQuery("#start_import_dms").removeAttr('disabled');
128
+ } else {
129
+ jQuery("#start_import_dms").removeClass( 'button-primary' );
130
+ jQuery("#start_import_dms").attr('disabled', true);
131
+ }
132
+ });
133
+
134
+
135
+ /* Checking radio-buttons will enable the submit button for Gwolle import */
136
+ jQuery("input#gwolle_gb_importfrom").prop("checked", false); // init
137
+
138
+ jQuery("input#gwolle_gb_importfrom").change(function() {
139
+ if ( jQuery(this).val() ) {
140
+ jQuery("#start_import_wp").addClass( 'button-primary' );
141
+ jQuery("#start_import_wp").removeAttr('disabled');
142
+ } else {
143
+ jQuery("#start_import_wp").removeClass( 'button-primary' );
144
+ jQuery("#start_import_wp").attr('disabled', true);
145
+ }
146
+ });
147
+
148
+
149
+ /* Checking checkbox will enable the submit button for CSV-file */
150
+ jQuery("input#start_import_gwolle_file").change(function() {
151
+ if ( jQuery(this).val() ) {
152
+ jQuery("#start_import_gwolle").addClass( 'button-primary' );
153
+ jQuery("#start_import_gwolle").removeAttr('disabled');
154
+ } else {
155
+ jQuery("#start_import_gwolle").removeClass( 'button-primary' );
156
+ jQuery("#start_import_gwolle").attr('disabled', true);
157
+ }
158
+ });
159
+
160
+ });
161
+
162
+
163
+ /*
164
+ * Export Page
165
+ */
166
+ jQuery(document).ready(function($) {
167
+
168
+ /* Checking checkbox will enable the submit button */
169
+ jQuery("input#start_export_enable").prop("checked", false); // init
170
+ jQuery("#gwolle_gb_export_part").val( 1 ); // init
171
+
172
+ jQuery("input#start_export_enable").change(function() {
173
+ var checked = jQuery( "input#start_export_enable" ).prop('checked');
174
+ if ( checked == true ) {
175
+ jQuery("#gwolle_gb_start_export").addClass( 'button-primary' );
176
+ jQuery("#gwolle_gb_start_export").removeAttr('disabled');
177
+ } else {
178
+ jQuery("#gwolle_gb_start_export").removeClass( 'button-primary' );
179
+ jQuery("#gwolle_gb_start_export").attr('disabled', true);
180
+ }
181
+ });
182
+
183
+
184
+ /* Click Event, submit the form through AJAX and receive a CSV-file.
185
+ * Will request multi part files, every 5 seconds to be easy on the webserver.
186
+ */
187
+ jQuery( 'input#gwolle_gb_start_export' ).click(function(event) {
188
+
189
+ if ( jQuery("#gwolle_gb_start_export").attr('disabled') ) {
190
+ // Not sure if this block is needed... Just in case.
191
+ return;
192
+ }
193
+
194
+ // Reset for to initial state.
195
+ jQuery( "#gwolle_gb_start_export" ).removeClass( 'button-primary' );
196
+ jQuery( "#gwolle_gb_start_export" ).attr( 'disabled', true );
197
+ jQuery( "input#start_export_enable" ).prop( 'checked', false );
198
+ // Show that we are busy.
199
+ jQuery( ".gwolle_gb_export_gif" ).css( 'visibility', 'visible' );
200
+
201
+ var parts = parseFloat( jQuery("#gwolle_gb_export_parts").val() );
202
+
203
+ for ( var part = 1; part < (parts + 1); part++ ) {
204
+ var timeout = (part - 1) * 5000;
205
+ gwolle_gb_export_part( part, timeout );
206
+ }
207
+
208
+ setTimeout(
209
+ function() {
210
+ jQuery( ".gwolle_gb_export_gif" ).css( 'visibility', 'hidden' );
211
+ }, ( (part - 1) * 5000 )
212
+ );
213
+
214
+ event.preventDefault();
215
+ });
216
+
217
+ /* Do the Submit Event. */
218
+ function gwolle_gb_export_part( part, timeout ) {
219
+ setTimeout(
220
+ function() {
221
+ jQuery("#gwolle_gb_export_part").val( part );
222
+ var form = jQuery('form#gwolle_gb_export');
223
+ form.submit();
224
+ }, ( timeout )
225
+ );
226
+ }
227
+
228
+ });
admin/js/index.html ADDED
File without changes
admin/tabs/gb-admintab.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ function gwolle_gb_page_settingstab_admin() {
13
+
14
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
15
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
16
+ } ?>
17
+
18
+ <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_admin" />
19
+ <?php
20
+ settings_fields( 'gwolle_gb_options' );
21
+ do_settings_sections( 'gwolle_gb_options' );
22
+
23
+ /* Nonce */
24
+ $nonce = wp_create_nonce( 'gwolle_gb_page_settings_admintab' );
25
+ echo '<input type="hidden" id="gwolle_gb_page_settings_admintab" name="gwolle_gb_page_settings_admintab" value="' . $nonce . '" />';
26
+ ?>
27
+ <table class="form-table">
28
+ <tbody>
29
+
30
+ <tr valign="top">
31
+ <th scope="row"><label for="entries_per_page"><?php esc_html_e('Entries per page in the admin', 'gwolle-gb'); ?></label></th>
32
+ <td>
33
+ <select name="entries_per_page" id="entries_per_page">
34
+ <?php $entries_per_page = get_option( 'gwolle_gb-entries_per_page', 20 );
35
+ $presets = array(5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100, 120, 150, 200, 250);
36
+ for ($i = 0; $i < count($presets); $i++) {
37
+ echo '<option value="' . $presets[$i] . '"';
38
+ if ($presets[$i] == $entries_per_page) {
39
+ echo ' selected="selected"';
40
+ }
41
+ echo '>' . $presets[$i] . ' ' . esc_html__('Entries', 'gwolle-gb') . '</option>';
42
+ }
43
+ ?>
44
+ </select>
45
+ <br />
46
+ <span class="setting-description"><?php esc_html_e('Number of entries shown in the admin.', 'gwolle-gb'); ?></span>
47
+ </td>
48
+ </tr>
49
+
50
+ <tr valign="top">
51
+ <th scope="row"><label for="showEntryIcons"><?php esc_html_e('Entry icons', 'gwolle-gb'); ?></label></th>
52
+ <td>
53
+ <input type="checkbox" <?php
54
+ if ( get_option( 'gwolle_gb-showEntryIcons', 'true' ) === 'true' ) {
55
+ echo 'checked="checked"';
56
+ }
57
+ ?> name="showEntryIcons" id="showEntryIcons" /><label for="showEntryIcons"><?php esc_html_e('Show entry icons', 'gwolle-gb'); ?></label>
58
+ <br />
59
+ <span class="setting-description"><?php esc_html_e('These icons are shown in every entry row of the admin list, so that you know its status (checked, spam and trash).', 'gwolle-gb'); ?></span>
60
+ </td>
61
+ </tr>
62
+
63
+ <tr>
64
+ <th colspan="2">
65
+ <p class="submit">
66
+ <input type="submit" name="gwolle_gb_settings_admin" id="gwolle_gb_settings_admin" class="button-primary" value="<?php esc_attr_e('Save settings', 'gwolle-gb'); ?>" />
67
+ </p>
68
+ </th>
69
+ </tr>
70
+
71
+ </tbody>
72
+ </table>
73
+
74
+ <?php
75
+ }
admin/tabs/gb-antispamtab.php ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ function gwolle_gb_page_settingstab_antispam() {
13
+
14
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
15
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
16
+ } ?>
17
+
18
+ <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_antispam" />
19
+ <?php
20
+ settings_fields( 'gwolle_gb_options' );
21
+ do_settings_sections( 'gwolle_gb_options' );
22
+
23
+ /* Nonce */
24
+ $nonce = wp_create_nonce( 'gwolle_gb_page_settings_antispamtab' );
25
+ echo '<input type="hidden" id="gwolle_gb_page_settings_antispamtab" name="gwolle_gb_page_settings_antispamtab" value="' . $nonce . '" />';
26
+ ?>
27
+ <table class="form-table">
28
+ <tbody>
29
+
30
+ <tr valign="top">
31
+ <th scope="row"><label for="moderate-entries"><?php /* translators: Settings page, option for moderation */ esc_html_e('Moderate Guestbook', 'gwolle-gb'); ?></label></th>
32
+ <td>
33
+ <input <?php
34
+ if (get_option( 'gwolle_gb-moderate-entries', 'true') == 'true') {
35
+ echo 'checked="checked"';
36
+ } ?>
37
+ type="checkbox" name="moderate-entries" id="moderate-entries">
38
+ <label for="moderate-entries">
39
+ <?php esc_html_e('Moderate entries before publishing them.', 'gwolle-gb'); ?>
40
+ </label><br />
41
+ <span class="setting-description">
42
+ <?php esc_html_e('New entries have to be unlocked by a moderator before they are visible to the public.', 'gwolle-gb'); ?>
43
+ <br />
44
+ <?php esc_html_e('It is recommended that you turn this on, because you are responsible for the content on your website.', 'gwolle-gb'); ?>
45
+ </span>
46
+ </td>
47
+ </tr>
48
+
49
+ <tr valign="top">
50
+ <th scope="row"><label for="refuse-spam"><?php /* translators: Settings page, option for refusing spam */ esc_html_e('Refuse Spam', 'gwolle-gb'); ?></label></th>
51
+ <td>
52
+ <input <?php
53
+ if (get_option( 'gwolle_gb-refuse-spam', 'false') == 'true') {
54
+ echo 'checked="checked"';
55
+ } ?>
56
+ type="checkbox" name="refuse-spam" id="refuse-spam">
57
+ <label for="refuse-spam">
58
+ <?php esc_html_e('Refuse spam when recognized.', 'gwolle-gb'); ?>
59
+ </label><br />
60
+ <span class="setting-description">
61
+ <?php esc_html_e('Entries that are marked as spam will be placed in your spam folder by default.', 'gwolle-gb'); ?>
62
+ <br />
63
+ <?php esc_html_e('This option will refuse to accept entries marked by Honeypot, Nonce, Akismet and Stop Forum Spam. Users will see the form again after submit, with an error stating that it is recognized as spam.', 'gwolle-gb'); ?>
64
+ </span>
65
+ </td>
66
+ </tr>
67
+
68
+ <tr valign="top">
69
+ <th scope="row"><label for="honeypot"><?php esc_html_e('Honeypot', 'gwolle-gb'); ?></label></th>
70
+ <td>
71
+ <input <?php
72
+ if (get_option( 'gwolle_gb-honeypot', 'true') == 'true') {
73
+ echo 'checked="checked"';
74
+ } ?>
75
+ type="checkbox" name="honeypot" id="honeypot">
76
+ <label for="honeypot">
77
+ <?php esc_html_e('Use Honeypot.', 'gwolle-gb'); ?>
78
+ </label><br />
79
+ <span class="setting-description">
80
+ <?php esc_html_e('This will add a non-visible input field to the form. It should not get filled in, but when it is, the entry will be marked as spam.', 'gwolle-gb'); ?>
81
+ </span>
82
+ </td>
83
+ </tr>
84
+
85
+ <tr valign="top">
86
+ <th scope="row"><label for="gwolle_gb_nonce"><?php esc_html_e('Nonce', 'gwolle-gb'); ?></label></th>
87
+ <td>
88
+ <input <?php
89
+ if (get_option( 'gwolle_gb-nonce', 'true') == 'true') {
90
+ echo 'checked="checked"';
91
+ } ?>
92
+ type="checkbox" name="gwolle_gb_nonce" id="gwolle_gb_nonce">
93
+ <label for="gwolle_gb_nonce">
94
+ <?php esc_html_e('Use Nonce.', 'gwolle-gb'); ?>
95
+ </label><br />
96
+ <span class="setting-description">
97
+ <?php
98
+ esc_html_e('This will add a Nonce to the form. It is a way to check for a human user. If it does not validate, the entry will be marked as spam.', 'gwolle-gb');
99
+ echo '<br />';
100
+ $link_wp = 'https://codex.wordpress.org/Wordpress_Nonce_Implementation';
101
+ echo sprintf( __( 'If you want to know more about what a Nonce is and how it works, please read about it on the <a href="%s" target="_blank">WordPress Codex</a>.', 'gwolle-gb' ), $link_wp );
102
+ echo '<br />';
103
+ esc_html_e('If your website uses caching, it is possible that you get false-positives in your spamfolder. If this is the case, you could either disable the Nonce, or disable caching for the guestbook page.', 'gwolle-gb');
104
+ ?>
105
+ </span>
106
+ </td>
107
+ </tr>
108
+
109
+ <tr valign="top">
110
+ <th scope="row"><label for="gwolle_gb_longtext"><?php esc_html_e('Long Text', 'gwolle-gb'); ?></label></th>
111
+ <td>
112
+ <input <?php
113
+ if (get_option( 'gwolle_gb-longtext', 'true') == 'true') {
114
+ echo 'checked="checked"';
115
+ } ?>
116
+ type="checkbox" name="gwolle_gb_longtext" id="gwolle_gb_longtext">
117
+ <label for="gwolle_gb_longtext">
118
+ <?php esc_html_e('Scan for Long Text.', 'gwolle-gb'); ?>
119
+ </label><br />
120
+ <span class="setting-description">
121
+ <?php
122
+ esc_html_e('This will scan entries for long words, which can be considered abusive. If there is a word with long text found, it will be automatically set to unchecked and you will need to moderate it manually.', 'gwolle-gb');
123
+ echo '<br />';
124
+ echo sprintf( esc_html__( 'The content has a limit set to %s characters, the author name to %s characters.', 'gwolle-gb' ), '100', '60' );
125
+ ?>
126
+ </span>
127
+ </td>
128
+ </tr>
129
+
130
+ <tr valign="top">
131
+ <th scope="row">
132
+ <label for="akismet-active"><?php esc_html_e('Akismet', 'gwolle-gb'); ?></label>
133
+ </th>
134
+ <td>
135
+ <span class="setting-description">
136
+ <a href="http://akismet.com/" title="<?php esc_html_e('Learn more about Akismet...', 'gwolle-gb'); ?>" target="_blank">
137
+ <?php esc_html_e("What's Akismet?", 'gwolle-gb'); ?>
138
+ </a><br />
139
+ <?php
140
+ $current_plugins = get_option('active_plugins');
141
+ $wordpress_api_key = get_option('wordpress_api_key');
142
+
143
+ // Check wether Akismet is installed and activated or not.
144
+ if ( ! in_array('akismet/akismet.php', $current_plugins)) {
145
+ echo esc_html__("Akismet is an external service by Automattic that acts as a spamfilter for guestbook entries.", 'gwolle-gb') . '<br />';
146
+ // Akismet is not installed and activated. Show notice with suggestion to install it.
147
+ esc_html_e("Akismet helps you to fight spam. It's free and easy to install. Download and install it today to stop spam in your guestbook.", 'gwolle-gb');
148
+ } elseif ( ! $wordpress_api_key) {
149
+ // No WordPress API key is defined and set in the database.
150
+ echo sprintf( __("Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You can enter it at the <a href=\"%s\">Akismet configuration page</a>.", 'gwolle-gb'), 'options-general.php?page=akismet-key-config' );
151
+ } else {
152
+ // Akismet is installed and activated and a WordPress API key exists (we just assume it is valid).
153
+ echo '<input ';
154
+ if ( get_option( 'gwolle_gb-akismet-active', 'false' ) === 'true' ) {
155
+ echo 'checked="checked" ';
156
+ }
157
+ echo 'name="akismet-active" id="akismet-active" type="checkbox" />
158
+ <label for="akismet-active">
159
+ ' . esc_html__('Use Akismet', 'gwolle-gb') . '
160
+ </label><br />';
161
+ esc_html_e('Akismet is an external service by Automattic that acts as a spamfilter for guestbook entries.', 'gwolle-gb') . '<br />';
162
+ esc_html_e('The WordPress API key has been found, so you can start using Akismet right now.', 'gwolle-gb');
163
+ }
164
+ ?>
165
+ </span>
166
+ </td>
167
+ </tr>
168
+
169
+ <tr valign="top">
170
+ <th scope="row"><label for="gwolle_gb_sfs"><?php esc_html_e('Stop Forum Spam', 'gwolle-gb'); ?></label></th>
171
+ <td>
172
+ <input <?php
173
+ if (get_option( 'gwolle_gb-sfs', 'false') == 'true') {
174
+ echo 'checked="checked"';
175
+ } ?>
176
+ type="checkbox" name="gwolle_gb_sfs" id="gwolle_gb_sfs">
177
+ <label for="gwolle_gb_sfs">
178
+ <?php esc_html_e('Use Stop Forum Spam.', 'gwolle-gb'); ?>
179
+ </label><br />
180
+ <span class="setting-description">
181
+ <?php
182
+ _e('Stop Forum Spam is an external service that acts as a spamfilter for guestbook entries.', 'gwolle-gb') . '<br />';
183
+ echo '<br />';
184
+ $link_wp = 'https://www.stopforumspam.com';
185
+ echo sprintf( __( 'If you want to know more about Stop Form Spam and how it works, please read about it on their <a href="%s" target="_blank">website</a>.', 'gwolle-gb' ), $link_wp );
186
+ ?>
187
+ </span>
188
+ </td>
189
+ </tr>
190
+
191
+ <?php
192
+ $antispam_question = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-question') );
193
+ $antispam_answer = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-answer') );
194
+ ?>
195
+ <tr valign="top">
196
+ <th scope="row"><label for="antispam-question"><?php esc_html_e('Custom Anti-Spam Security Question', 'gwolle-gb'); ?></label></th>
197
+ <td>
198
+ <div>
199
+ <label for="antispam-question" class="setting-description"><?php esc_html_e('Custom security question to battle spam:', 'gwolle-gb'); ?></label><br />
200
+ <input name="antispam-question" type="text" id="antispam-question" value="<?php echo $antispam_question; ?>" class="regular-text" placeholder="<?php esc_attr_e('12 + six =', 'gwolle-gb'); ?>" /><br />
201
+ <label for="antispam-answer" class="setting-description"><?php esc_html_e('The answer to your security question:', 'gwolle-gb'); ?></label><br />
202
+ <input name="antispam-answer" type="text" id="antispam-answer" value="<?php echo $antispam_answer; ?>" class="regular-text" placeholder="<?php esc_attr_e('18', 'gwolle-gb'); ?>" /><br />
203
+ <span class="setting-description"><?php esc_html_e('You can ask your visitors to answer a custom security question, so only real people can post an entry.', 'gwolle-gb'); ?></span>
204
+ </div>
205
+ </td>
206
+ </tr>
207
+
208
+ <tr valign="top">
209
+ <th scope="row"><?php esc_html_e('CAPTCHA', 'gwolle-gb'); ?></th>
210
+ <td>
211
+ <div>
212
+ <span class="setting-description">
213
+ <?php esc_html_e('A CAPTCHA is a way to have visitors fill in a field with a few letters or numbers. It is a way to make sure that you have a human visitor and not a spambot. Not every visitor will appreciate it though, some will consider it unfriendly.', 'gwolle-gb'); ?>
214
+ <br /><br />
215
+ <?php
216
+ $link_wp = 'https://wordpress.org/plugins/really-simple-captcha/';
217
+ echo sprintf( __('For the CAPTCHA you need the plugin <a href="%s" title="Really Simple CAPTCHA plugin at wordpress.org" target="_blank">Really Simple CAPTCHA</a> installed and activated.', 'gwolle-gb'), $link_wp );
218
+ if ( class_exists('ReallySimpleCaptcha') ) {
219
+ echo '<br />';
220
+ esc_html_e('This plugin is installed and activated, so the CAPTCHA is ready to be used.', 'gwolle-gb');
221
+ } ?>
222
+ <br /><br />
223
+ <?php esc_html_e('If you use any caching plugin together with this CAPTCHA, page caching will be disabled for the page that the CAPTCHA is shown on. This is to prevent errors and to have a fresh CAPCHA image each time.', 'gwolle-gb'); ?>
224
+ </span>
225
+ </div>
226
+ </td>
227
+ </tr>
228
+
229
+ <tr>
230
+ <th colspan="2">
231
+ <p class="submit">
232
+ <input type="submit" name="gwolle_gb_settings_antispam" id="gwolle_gb_settings_antispam" class="button-primary" value="<?php esc_attr_e('Save settings', 'gwolle-gb'); ?>" />
233
+ </p>
234
+ </th>
235
+ </tr>
236
+
237
+ </tbody>
238
+ </table>
239
+
240
+ <?php
241
+ }
admin/tabs/gb-debugtab.php ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+ /*
12
+ * $debug_test is a bool, if we want a debug test to be done.
13
+ */
14
+ function gwolle_gb_page_settingstab_debug( $debug_test ) {
15
+
16
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
17
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
18
+ } ?>
19
+
20
+ <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_debug" />
21
+ <?php
22
+ settings_fields( 'gwolle_gb_options' );
23
+ do_settings_sections( 'gwolle_gb_options' );
24
+
25
+ /* Nonce */
26
+ $nonce = wp_create_nonce( 'gwolle_gb_page_settings_debugtab' );
27
+ echo '<input type="hidden" id="gwolle_gb_page_settings_debugtab" name="gwolle_gb_page_settings_debugtab" value="' . $nonce . '" />';
28
+ ?>
29
+ <table class="form-table">
30
+ <tbody>
31
+
32
+ <tr valign="top">
33
+ <td scope="row" colspan="2">
34
+ <p>
35
+ <?php esc_html_e('Please provide this information when posting a support message on the support forum.', 'gwolle-gb'); ?>
36
+ </p>
37
+ </td>
38
+ </tr>
39
+
40
+ <?php
41
+ if ( $debug_test ) {
42
+ $entry_id = gwolle_gb_test_add_entry( false );
43
+ $entry_id_emoji = gwolle_gb_test_add_entry( true );
44
+ ?>
45
+
46
+ <tr>
47
+ <th><?php esc_html_e('Standard test:', 'gwolle-gb'); ?></th>
48
+ <td><?php
49
+ if ( $entry_id == 0 ) {
50
+ echo '👎 ';
51
+ esc_html_e('Failed.', 'gwolle-gb');
52
+ } else {
53
+ echo '👍 ';
54
+ esc_html_e('Succeeded.', 'gwolle-gb');
55
+ } ?>
56
+ </td>
57
+ </tr>
58
+ <tr>
59
+ <th><?php esc_html_e('Emoji test:', 'gwolle-gb'); ?></th>
60
+ <td><?php
61
+ if ( $entry_id_emoji == 0 ) {
62
+ echo '👎 ';
63
+ esc_html_e('Failed.', 'gwolle-gb');
64
+ } else {
65
+ echo '👍 ';
66
+ esc_html_e('Succeeded.', 'gwolle-gb');
67
+ } ?>
68
+ </td>
69
+ </tr>
70
+ <?php
71
+ }
72
+ ?>
73
+
74
+ <tr valign="top">
75
+ <th scope="row"><label for="blogdescription"><?php esc_html_e('Test', 'gwolle-gb'); ?></label></th>
76
+ <td>
77
+ <p>
78
+ <?php esc_html_e('This test will attempt to save two test entries, one with standard text and one with Emoji.', 'gwolle-gb'); ?>
79
+ </p>
80
+ <p>
81
+ <input type="submit" name="gwolle_gb_debug" id="gwolle_gb_debug" class="button button-primary" value="<?php esc_attr_e('Run test', 'gwolle-gb'); ?>" />
82
+ </p>
83
+ </td>
84
+ </tr>
85
+
86
+ <tr valign="top">
87
+ <?php gwolle_gb_debug_info(); ?>
88
+ </tr>
89
+
90
+ </tbody>
91
+ </table>
92
+
93
+ <?php
94
+ }
admin/tabs/gb-emailtab.php ADDED
@@ -0,0 +1,271 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ function gwolle_gb_page_settingstab_email() {
13
+
14
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
15
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
16
+ } ?>
17
+
18
+ <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_mail" />
19
+ <?php
20
+ settings_fields( 'gwolle_gb_options' );
21
+ do_settings_sections( 'gwolle_gb_options' );
22
+
23
+ /* Nonce */
24
+ $nonce = wp_create_nonce( 'gwolle_gb_page_settings_emailtab' );
25
+ echo '<input type="hidden" id="gwolle_gb_page_settings_emailtab" name="gwolle_gb_page_settings_emailtab" value="' . $nonce . '" />';
26
+ ?>
27
+ <table class="form-table">
28
+ <tbody>
29
+
30
+ <?php
31
+ $user_ids = get_option('gwolle_gb-notifyByMail' );
32
+ if ( strlen($user_ids) > 0 ) {
33
+ $user_ids = explode( ",", $user_ids );
34
+ } ?>
35
+ <tr valign="top">
36
+ <th scope="row"><label for="subscribe"><?php esc_html_e('Subscribe moderators', 'gwolle-gb'); ?></label></th>
37
+ <td>
38
+ <select name="subscribe" id="subscribe">
39
+ <option value="0"><?php esc_html_e('Subscribe User', 'gwolle-gb'); ?></option>
40
+ <?php
41
+ $users = gwolle_gb_get_moderators();
42
+
43
+ if ( is_array($users) && ! empty($users) ) {
44
+ foreach ( $users as $user_info ) {
45
+
46
+ // Test if already subscribed
47
+ if ( is_array($user_ids) && ! empty($user_ids) ) {
48
+ if ( in_array($user_info->ID, $user_ids) ) {
49
+ continue;
50
+ }
51
+ }
52
+
53
+ $username = $user_info->first_name . ' ' . $user_info->last_name . ' (' . $user_info->user_email . ')';
54
+ if ( $user_info->ID == get_current_user_id() ) {
55
+ $username .= ' ' . esc_html__('You', 'gwolle-gb');
56
+ }
57
+ echo '<option value="' . $user_info->ID . '">' . $username . '</option>';
58
+ }
59
+ } ?>
60
+ </select><br />
61
+ <label for="subscribe"><?php esc_html_e('You can subscribe a moderator to the notification emails.', 'gwolle-gb'); ?><br />
62
+ <?php esc_html_e('Select a user that you want subscribed to the notification emails.', 'gwolle-gb'); ?>
63
+ <?php esc_html_e("You will only see users with the roles of Administrator, Editor and Author, who have the capability 'moderate_comments' .", 'gwolle-gb'); ?>
64
+ </label>
65
+ </td>
66
+ </tr>
67
+
68
+ <tr valign="top">
69
+ <th scope="row"><label for="unsubscribe"><?php esc_html_e('Unsubscribe moderators', 'gwolle-gb'); ?></label></th>
70
+ <td>
71
+ <?php
72
+ // Check if function mail() exists. If not, display a hint to the user.
73
+ if ( ! function_exists('mail') ) {
74
+ echo '<p class="setting-description">' .
75
+ __('Sorry, but the function <code>mail()</code> required to notify you by mail is not enabled in your PHP configuration. You might want to install a WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can contact your hosting provider to change this.','gwolle-gb')
76
+ . '</p>';
77
+ } ?>
78
+ <select name="unsubscribe" id="unsubscribe">
79
+ <option value="0"><?php esc_html_e('Unsubscribe User', 'gwolle-gb'); ?></option>
80
+ <?php
81
+ if ( is_array($user_ids) && !empty($user_ids) ) {
82
+ foreach ( $user_ids as $user_id ) {
83
+
84
+ $user_info = get_userdata($user_id);
85
+ if ($user_info === FALSE) {
86
+ // Invalid $user_id
87
+ continue;
88
+ }
89
+ $username = $user_info->first_name . ' ' . $user_info->last_name . ' (' . $user_info->user_email . ')';
90
+ if ( $user_info->ID == get_current_user_id() ) {
91
+ $username .= ' ' . esc_html__('You', 'gwolle-gb');
92
+ }
93
+ echo '<option value="' . $user_id . '">' . $username . '</option>';
94
+ }
95
+ } ?>
96
+ </select><br />
97
+ <label for="unsubscribe"><?php esc_html_e('These users have subscribed to the notification emails.', 'gwolle-gb'); ?><br />
98
+ <?php esc_html_e('Select a user if you want that user to unsubscribe from the notification emails.', 'gwolle-gb'); ?></label>
99
+ </td>
100
+ </tr>
101
+
102
+ <tr valign="top">
103
+ <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>
104
+ <td>
105
+ <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" />
106
+ <br />
107
+ <span class="setting-description">
108
+ <?php
109
+ esc_html_e('You can set the email address that is used for the From header of the mail that a notification subscriber gets on new entries.', 'gwolle-gb');
110
+ echo '<br />';
111
+ esc_html_e('By default the main admin address is used from General > Settings.', 'gwolle-gb');
112
+ ?>
113
+ </span>
114
+ </td>
115
+ </tr>
116
+
117
+ <tr valign="top">
118
+ <th scope="row"><label for="adminMailContent"><?php esc_html_e('Admin mail content', 'gwolle-gb'); ?></label></th>
119
+ <td>
120
+ <?php
121
+ $mailText = gwolle_gb_sanitize_output( get_option('gwolle_gb-adminMailContent', false), 'setting_textarea' );
122
+ if ( ! $mailText) { // No text set by the user. Use the default text.
123
+ $mailText = esc_html__("
124
+ Hello,
125
+
126
+ There is a new guestbook entry at '%blog_name%'.
127
+ You can check it at %entry_management_url%.
128
+
129
+ Have a nice day.
130
+ Your Gwolle-GB-Mailer
131
+
132
+
133
+ Website address: %blog_url%
134
+ User name: %user_name%
135
+ User email: %user_email%
136
+ Entry status: %status%
137
+ Entry content:
138
+ %entry_content%
139
+ "
140
+ , 'gwolle-gb');
141
+ } ?>
142
+ <textarea name="adminMailContent" id="adminMailContent" style="width:400px;height:300px;" class="regular-text"><?php echo $mailText; ?></textarea>
143
+ <br />
144
+ <span class="setting-description">
145
+ <?php _e('You can set the content of the mail that a notification subscriber gets on new entries. The following tags are supported:', 'gwolle-gb');
146
+ echo '<br />';
147
+ $mailTags = array( 'user_email', 'user_name', 'entry_management_url', 'blog_name', 'blog_url', 'wp_admin_url', 'entry_content', 'status', 'author_ip', 'author_origin' );
148
+ for ($i = 0; $i < count($mailTags); $i++) {
149
+ if ($i != 0) {
150
+ echo ', ';
151
+ }
152
+ echo '%' . $mailTags[$i] . '%';
153
+ }
154
+ echo "."; ?>
155
+ </span>
156
+ </td>
157
+ </tr>
158
+
159
+ <tr valign="top">
160
+ <th scope="row"><label for="mail_author"><?php esc_html_e('Mail Author', 'gwolle-gb'); ?></label></th>
161
+ <td>
162
+ <input <?php
163
+ if (get_option( 'gwolle_gb-mail_author', 'false') == 'true') {
164
+ echo 'checked="checked"';
165
+ } ?>
166
+ type="checkbox" name="mail_author" id="mail_author">
167
+ <label for="mail_author">
168
+ <?php esc_html_e('Mail the author with a confirmation email.', 'gwolle-gb'); ?>
169
+ </label>
170
+ <br />
171
+ <span class="setting-description">
172
+ <?php esc_html_e("The author of the guestbook entry will receive an email after posting. It will have a copy of the entry.", 'gwolle-gb'); ?>
173
+ </span>
174
+ </td>
175
+ </tr>
176
+
177
+ <tr valign="top">
178
+ <th scope="row"><label for="authorMailContent"><?php esc_html_e('Author mail content', 'gwolle-gb'); ?></label></th>
179
+ <td>
180
+ <?php
181
+ $mailText = gwolle_gb_sanitize_output( get_option('gwolle_gb-authorMailContent', false), 'setting_textarea' );
182
+ if ( ! $mailText) { // No text set by the user. Use the default text.
183
+ $mailText = esc_html__("
184
+ Hello,
185
+
186
+ You have just posted a new guestbook entry at '%blog_name%'.
187
+
188
+ Have a nice day.
189
+ The editors at %blog_name%.
190
+
191
+
192
+ Website address: %blog_url%
193
+ User name: %user_name%
194
+ User email: %user_email%
195
+ Entry content:
196
+ %entry_content%
197
+ "
198
+ , 'gwolle-gb');
199
+ } ?>
200
+ <textarea name="authorMailContent" id="authorMailContent" style="width:400px;height:300px;" class="regular-text"><?php echo $mailText; ?></textarea>
201
+ <br />
202
+ <span class="setting-description">
203
+ <?php esc_html_e('You can set the content of the mail that the author of the entry will receive. The following tags are supported:', 'gwolle-gb');
204
+ echo '<br />';
205
+ $mailTags = array('user_email', 'user_name', 'blog_name', 'blog_url', 'entry_content');
206
+ for ($i = 0; $i < count($mailTags); $i++) {
207
+ if ($i != 0) {
208
+ echo ', ';
209
+ }
210
+ echo '%' . $mailTags[$i] . '%';
211
+ }
212
+ ?>
213
+ </span>
214
+ </td>
215
+ </tr>
216
+
217
+ <tr valign="top">
218
+ <th scope="row"><label for="gwolle_gb-mail_admin_replyContent"><?php esc_html_e('Admin Reply mail content', 'gwolle-gb'); ?></label></th>
219
+ <td>
220
+ <?php
221
+ $mailText = gwolle_gb_sanitize_output( get_option('gwolle_gb-mail_admin_replyContent', false), 'setting_textarea' );
222
+ if ( ! $mailText) { // No text set by the user. Use the default text.
223
+ $mailText = esc_html__("
224
+ Hello,
225
+
226
+ An admin has just added or changed a reply message to your guestbook entry at '%blog_name%'.
227
+
228
+ Have a nice day.
229
+ The editors at %blog_name%.
230
+
231
+
232
+ Website address: %blog_url%
233
+ Admin Reply:
234
+ %admin_reply%
235
+
236
+
237
+ Original entry posted on %date%:
238
+ %entry_content%
239
+ "
240
+ , 'gwolle-gb');
241
+ } ?>
242
+ <textarea name="gwolle_gb-mail_admin_replyContent" id="gwolle_gb-mail_admin_replyContent" style="width:400px;height:300px;" class="regular-text"><?php echo $mailText; ?></textarea>
243
+ <br />
244
+ <span class="setting-description">
245
+ <?php esc_html_e('You can set the content of the mail that the author of the entry will receive when an Admin Reply is added. The following tags are supported:', 'gwolle-gb');
246
+ echo '<br />';
247
+ $mailTags = array('user_email', 'user_name', 'blog_name', 'blog_url', 'admin_reply', 'entry_content', 'date');
248
+ for ($i = 0; $i < count($mailTags); $i++) {
249
+ if ($i != 0) {
250
+ echo ', ';
251
+ }
252
+ echo '%' . $mailTags[$i] . '%';
253
+ }
254
+ ?>
255
+ </span>
256
+ </td>
257
+ </tr>
258
+
259
+ <tr>
260
+ <th colspan="2">
261
+ <p class="submit">
262
+ <input type="submit" name="gwolle_gb_settings_email" id="gwolle_gb_settings_email" class="button-primary" value="<?php esc_attr_e('Save settings', 'gwolle-gb'); ?>" />
263
+ </p>
264
+ </th>
265
+ </tr>
266
+
267
+ </tbody>
268
+ </table>
269
+
270
+ <?php
271
+ }
admin/tabs/gb-formtab.php ADDED
@@ -0,0 +1,283 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ function gwolle_gb_page_settingstab_form() {
13
+
14
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
15
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
16
+ } ?>
17
+
18
+ <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_forms" />
19
+ <?php
20
+ settings_fields( 'gwolle_gb_options' );
21
+ do_settings_sections( 'gwolle_gb_options' );
22
+
23
+ /* Nonce */
24
+ $nonce = wp_create_nonce( 'gwolle_gb_page_settings_formtab' );
25
+ echo '<input type="hidden" id="gwolle_gb_page_settings_formtab" name="gwolle_gb_page_settings_formtab" value="' . $nonce . '" />';
26
+ ?>
27
+ <table class="form-table">
28
+ <tbody>
29
+
30
+ <tr valign="top">
31
+ <th scope="row"><label for="require_login"><?php esc_html_e('Require Login', 'gwolle-gb'); ?></label></th>
32
+ <td>
33
+ <input type="checkbox" id="require_login" name="require_login" <?php
34
+ if ( get_option( 'gwolle_gb-require_login', 'false' ) === 'true' ) {
35
+ echo 'checked="checked"';
36
+ }
37
+ ?> />
38
+ <label for="require_login"><?php esc_html_e('Require user to be logged in.', 'gwolle-gb'); ?></label>
39
+ <br />
40
+ <span class="setting-description"><?php esc_html_e('Only allow logged-in users to add a guestbook entry.', 'gwolle-gb'); ?></span>
41
+ </td>
42
+ </tr>
43
+
44
+ <tr valign="top">
45
+ <th scope="row"><label for="labels_float"><?php esc_html_e('Labels float', 'gwolle-gb'); ?></label></th>
46
+ <td>
47
+ <input type="checkbox" id="labels_float" name="labels_float" <?php
48
+ if ( get_option( 'gwolle_gb-labels_float', 'true' ) === 'true' ) {
49
+ echo 'checked="checked"';
50
+ }
51
+ ?> />
52
+ <label for="labels_float"><?php esc_html_e('Labels in the form float to the left.', 'gwolle-gb'); ?></label>
53
+ <br />
54
+ <span class="setting-description"><?php esc_html_e('Labels in the form float to the left. Otherwise the labels will be above the input-fields.', 'gwolle-gb'); ?></span>
55
+ </td>
56
+ </tr>
57
+
58
+ <tr valign="top">
59
+ <th scope="row"><label for="header"><?php esc_html_e('Header Text', 'gwolle-gb'); ?></label></th>
60
+ <td><?php
61
+ $header = gwolle_gb_sanitize_output( get_option('gwolle_gb-header', false) );
62
+ if ( !$header ) {
63
+ $header = esc_html__('Write a new entry for the Guestbook', 'gwolle-gb');
64
+ } ?>
65
+ <input name="header" id="header" class="regular-text" type="text" value="<?php echo $header; ?>" />
66
+ <br />
67
+ <span class="setting-description">
68
+ <?php esc_html_e('You can set the header that is shown on top of the form.', 'gwolle-gb'); ?>
69
+ </span>
70
+ </td>
71
+ </tr>
72
+
73
+ <tr valign="top">
74
+ <th scope="row"><label for="notice"><?php esc_html_e('Notice Text', 'gwolle-gb'); ?></label></th>
75
+ <td>
76
+ <?php
77
+ $notice = gwolle_gb_sanitize_output( get_option('gwolle_gb-notice', false), 'setting_textarea' );
78
+ if (!$notice) { // No text set by the user. Use the default text.
79
+ $notice = esc_html__("
80
+ Fields marked with * are required.
81
+ Your E-mail address won't be published.
82
+ For security reasons we save the IP address %ip%.
83
+ It's possible that your entry will only be visible in the guestbook after we reviewed it.
84
+ We reserve the right to edit, delete, or not publish entries.
85
+ "
86
+ , 'gwolle-gb');
87
+ } ?>
88
+ <textarea name="notice" id="notice" style="width:400px;height:180px;" class="regular-text"><?php echo $notice; ?></textarea>
89
+ <br />
90
+ <span class="setting-description">
91
+ <?php esc_html_e('You can set the content of the notice that gets shown below the form.', 'gwolle-gb');
92
+ echo '<br />';
93
+ esc_html_e('You can use the tag %ip% to show the ip address.', 'gwolle-gb');
94
+ echo '<br /><br />';
95
+ esc_html_e('If you use a Multi-Lingual plugin, keep the 2 fields for header and notice empty when saving. That way the default text will be shown from a translated PO file.', 'gwolle-gb'); ?>
96
+ </span>
97
+ </td>
98
+ </tr>
99
+
100
+ <tr valign="top">
101
+ <th scope="row"><label for="form_ajax"><?php esc_html_e('Use AJAX', 'gwolle-gb'); ?></label></th>
102
+ <td>
103
+ <input type="checkbox" id="form_ajax" name="form_ajax" <?php
104
+ if ( get_option( 'gwolle_gb-form_ajax', 'true' ) === 'true' ) {
105
+ echo 'checked="checked"';
106
+ }
107
+ ?> />
108
+ <label for="form_ajax"><?php esc_html_e('Use AJAX to submit the form.', 'gwolle-gb'); ?></label>
109
+ <br />
110
+ <span class="setting-description"><?php esc_html_e('Submit the form while staying on the same page and place, without a new page load.', 'gwolle-gb'); ?></span>
111
+ </td>
112
+ </tr>
113
+
114
+ </tbody>
115
+ </table>
116
+
117
+ <table class="form-table">
118
+ <tbody>
119
+
120
+ <?php $form_setting = gwolle_gb_get_setting( 'form' ); ?>
121
+
122
+ <tr valign="top">
123
+ <td colspan="3"><h3><?php esc_html_e('Configure the form that is shown to visitors.', 'gwolle-gb'); ?></h3></td>
124
+ </tr>
125
+
126
+ <tr valign="top">
127
+ <th scope="row"><label for="form_name_enabled"><?php esc_html_e('Name', 'gwolle-gb'); ?>:</label></th>
128
+ <td>
129
+ <input type="checkbox" id="form_name_enabled" name="form_name_enabled"<?php
130
+ if ( isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true' ) {
131
+ echo ' checked="checked"';
132
+ }
133
+ ?> />
134
+ <label for="form_name_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
135
+ </td>
136
+ <td>
137
+ <input type="checkbox" id="form_name_mandatory" name="form_name_mandatory"<?php
138
+ if ( isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true' ) {
139
+ echo ' checked="checked"';
140
+ }
141
+ ?> />
142
+ <label for="form_name_mandatory"><?php esc_html_e('Mandatory', 'gwolle-gb'); ?></label>
143
+ </td>
144
+ </tr>
145
+
146
+ <tr valign="top">
147
+ <th scope="row"><label for="form_city_enabled"><?php esc_html_e('City', 'gwolle-gb'); ?>:</label></th>
148
+ <td>
149
+ <input type="checkbox" id="form_city_enabled" name="form_city_enabled"<?php
150
+ if ( isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true' ) {
151
+ echo ' checked="checked"';
152
+ }
153
+ ?> />
154
+ <label for="form_city_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
155
+ </td>
156
+ <td>
157
+ <input type="checkbox" id="form_city_mandatory" name="form_city_mandatory"<?php
158
+ if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) {
159
+ echo ' checked="checked"';
160
+ }
161
+ ?> />
162
+ <label for="form_city_mandatory"><?php esc_html_e('Mandatory', 'gwolle-gb'); ?></label>
163
+ </td>
164
+ </tr>
165
+
166
+ <tr valign="top">
167
+ <th scope="row"><label for="form_email_enabled"><?php esc_html_e('Email', 'gwolle-gb'); ?>:</label></th>
168
+ <td>
169
+ <input type="checkbox" id="form_email_enabled" name="form_email_enabled"<?php
170
+ if ( isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true' ) {
171
+ echo ' checked="checked"';
172
+ }
173
+ ?> />
174
+ <label for="form_email_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
175
+ </td>
176
+ <td>
177
+ <input type="checkbox" id="form_email_mandatory" name="form_email_mandatory"<?php
178
+ if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) {
179
+ echo ' checked="checked"';
180
+ }
181
+ ?> />
182
+ <label for="form_email_mandatory"><?php esc_html_e('Mandatory', 'gwolle-gb'); ?></label>
183
+ </td>
184
+ </tr>
185
+
186
+ <tr valign="top">
187
+ <th scope="row"><label for="form_homepage_enabled"><?php esc_html_e('Website', 'gwolle-gb'); ?>:</label></th>
188
+ <td>
189
+ <input type="checkbox" id="form_homepage_enabled" name="form_homepage_enabled"<?php
190
+ if ( isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true' ) {
191
+ echo ' checked="checked"';
192
+ }
193
+ ?> />
194
+ <label for="form_homepage_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
195
+ </td>
196
+ <td>
197
+ <input type="checkbox" id="form_homepage_mandatory" name="form_homepage_mandatory"<?php
198
+ if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) {
199
+ echo ' checked="checked"';
200
+ }
201
+ ?> />
202
+ <label for="form_homepage_mandatory"><?php esc_html_e('Mandatory', 'gwolle-gb'); ?></label>
203
+ </td>
204
+ </tr>
205
+
206
+ <tr valign="top">
207
+ <th scope="row"><label for="form_message_enabled"><?php esc_html_e('Message', 'gwolle-gb'); ?>:</label></th>
208
+ <td>
209
+ <input type="checkbox" id="form_message_enabled" name="form_message_enabled"<?php
210
+ if ( isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true' ) {
211
+ echo ' checked="checked"';
212
+ }
213
+ ?> />
214
+ <label for="form_message_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
215
+ </td>
216
+ <td>
217
+ <input type="checkbox" id="form_message_mandatory" name="form_message_mandatory"<?php
218
+ if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) {
219
+ echo ' checked="checked"';
220
+ }
221
+ ?> />
222
+ <label for="form_message_mandatory"><?php esc_html_e('Mandatory', 'gwolle-gb'); ?></label>
223
+ </td>
224
+ </tr>
225
+
226
+ <tr valign="top">
227
+ <th scope="row"><label for="form_bbcode_enabled"><?php esc_html_e('BBcode and Emoji', 'gwolle-gb'); ?>:</label></th>
228
+ <td>
229
+ <input type="checkbox" id="form_bbcode_enabled" name="form_bbcode_enabled"<?php
230
+ if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
231
+ echo ' checked="checked"';
232
+ }
233
+ ?> />
234
+ <label for="form_bbcode_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
235
+ </td>
236
+ <td>
237
+ <?php esc_html_e('Will only be shown if the Message is enabled.', 'gwolle-gb'); ?>
238
+ </td>
239
+ </tr>
240
+
241
+ <tr valign="top">
242
+ <th scope="row"><label for="form_antispam_enabled"><?php esc_html_e('Custom Anti-spam', 'gwolle-gb'); ?>:</label></th>
243
+ <td>
244
+ <input type="checkbox" id="form_antispam_enabled" name="form_antispam_enabled"<?php
245
+ if ( isset($form_setting['form_antispam_enabled']) && $form_setting['form_antispam_enabled'] === 'true' ) {
246
+ echo ' checked="checked"';
247
+ }
248
+ ?> />
249
+ <label for="form_antispam_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
250
+ </td>
251
+ <td>
252
+ <?php esc_html_e('When enabled it is mandatory.', 'gwolle-gb'); ?>
253
+ </td>
254
+ </tr>
255
+
256
+ <tr valign="top">
257
+ <th scope="row"><label for="form_recaptcha_enabled"><?php esc_html_e('CAPTCHA', 'gwolle-gb'); ?>:</label></th>
258
+ <td>
259
+ <input type="checkbox" id="form_recaptcha_enabled" name="form_recaptcha_enabled"<?php
260
+ if ( isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true' ) {
261
+ echo ' checked="checked"';
262
+ }
263
+ ?> />
264
+ <label for="form_recaptcha_enabled"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
265
+ </td>
266
+ <td>
267
+ <?php esc_html_e('When enabled it is mandatory.', 'gwolle-gb'); ?>
268
+ </td>
269
+ </tr>
270
+
271
+ <tr>
272
+ <th colspan="3">
273
+ <p class="submit">
274
+ <input type="submit" name="gwolle_gb_settings_form" id="gwolle_gb_settings_form" class="button-primary" value="<?php esc_attr_e('Save settings', 'gwolle-gb'); ?>" />
275
+ </p>
276
+ </th>
277
+ </tr>
278
+
279
+ </tbody>
280
+ </table>
281
+
282
+ <?php
283
+ }
admin/tabs/gb-readingtab.php ADDED
@@ -0,0 +1,286 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+
12
+ function gwolle_gb_page_settingstab_reading() {
13
+
14
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
15
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
16
+ } ?>
17
+
18
+ <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_reading" />
19
+ <?php
20
+ settings_fields( 'gwolle_gb_options' );
21
+ do_settings_sections( 'gwolle_gb_options' );
22
+
23
+
24
+ /* Nonce */
25
+ $nonce = wp_create_nonce( 'gwolle_gb_page_settings_readingtab' );
26
+ echo '<input type="hidden" id="gwolle_gb_page_settings_readingtab" name="gwolle_gb_page_settings_readingtab" value="' . $nonce . '" />';
27
+ ?>
28
+ <table class="form-table">
29
+ <tbody>
30
+
31
+ <tr valign="top">
32
+ <th scope="row"><label for="entriesPerPage"><?php esc_html_e('Entries per page on the frontend', 'gwolle-gb'); ?></label></th>
33
+ <td>
34
+ <select name="entriesPerPage" id="entriesPerPage">
35
+ <?php $entriesPerPage = get_option( 'gwolle_gb-entriesPerPage', 20 );
36
+ $presets = array(3, 5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100, 120, 150, 200, 250);
37
+ for ($i = 0; $i < count($presets); $i++) {
38
+ echo '<option value="' . $presets[$i] . '"';
39
+ if ($presets[$i] == $entriesPerPage) {
40
+ echo ' selected="selected"';
41
+ }
42
+ echo '>' . $presets[$i] . ' ' . esc_html__('Entries', 'gwolle-gb') . '</option>';
43
+ }
44
+ ?>
45
+ </select>
46
+ <br />
47
+ <span class="setting-description"><?php esc_html_e('Number of entries shown on the frontend.', 'gwolle-gb'); ?></span>
48
+ </td>
49
+ </tr>
50
+
51
+ <tr valign="top">
52
+ <th scope="row"><label for="excerpt_length"><?php esc_html_e('Length of the entry content', 'gwolle-gb'); ?></label></th>
53
+ <td>
54
+ <select name="excerpt_length" id="excerpt_length">
55
+ <?php
56
+ $excerpt_length = get_option( 'gwolle_gb-excerpt_length', 0 );
57
+ $presets = array( 20, 40, 60, 80, 100, 120, 150, 200, 300 );
58
+ echo '<option value="0"';
59
+ if ( 0 == $excerpt_length ) {
60
+ echo ' selected="selected"';
61
+ }
62
+ echo '>' . esc_html__('Unlimited Words', 'gwolle-gb') . '</option>';
63
+
64
+ foreach ( $presets as $preset ) {
65
+ echo '<option value="' . $preset . '"';
66
+ if ($preset == $excerpt_length) {
67
+ echo ' selected="selected"';
68
+ }
69
+ echo '>' . $preset . ' ' . esc_html__('Words', 'gwolle-gb') . '</option>';
70
+ }
71
+ ?>
72
+ </select>
73
+ <br />
74
+ <span class="setting-description">
75
+ <?php esc_html_e('Maximum length of the entry content in words.', 'gwolle-gb'); ?><br />
76
+ <?php esc_html_e('Please be aware that this will strip linebreaks as well.', 'gwolle-gb'); ?><br />
77
+ </span>
78
+ </td>
79
+ </tr>
80
+
81
+ <tr valign="top">
82
+ <th scope="row"><label for="showLineBreaks"><?php esc_html_e('Line breaks', 'gwolle-gb'); ?></label></th>
83
+ <td>
84
+ <input type="checkbox" id="showLineBreaks" name="showLineBreaks"<?php
85
+ if ( get_option( 'gwolle_gb-showLineBreaks', 'false' ) === 'true' ) {
86
+ echo ' checked="checked"';
87
+ }
88
+ ?> />
89
+ <label for="showLineBreaks"><?php esc_html_e('Show line breaks.', 'gwolle-gb'); ?></label>
90
+ <br />
91
+ <span class="setting-description">
92
+ <?php esc_html_e('Show line breaks as the entry authors entered them. (May result in very long entries. Is turned off by default.)', 'gwolle-gb'); ?><br />
93
+ <?php esc_html_e('This can only be enabled if the Excerpt Length above is set to Unlimited Words.', 'gwolle-gb'); ?><br />
94
+ </span>
95
+ </td>
96
+ </tr>
97
+
98
+ <tr valign="top">
99
+ <th scope="row"><label for="showSmilies"><?php esc_html_e('Smileys', 'gwolle-gb'); ?></label></th>
100
+ <td>
101
+ <input type="checkbox" id="showSmilies" name="showSmilies"<?php
102
+ if ( get_option( 'gwolle_gb-showSmilies', 'true' ) === 'true' ) {
103
+ echo ' checked="checked"';
104
+ }
105
+ ?> />
106
+ <label for="showSmilies"><?php esc_html_e('Display smileys as images.', 'gwolle-gb'); ?></label>
107
+ <br />
108
+ <span class="setting-description"><?php echo sprintf( esc_html__("Replaces smileys in entries like :) with their image %s. Uses the WP smiley replacer, so check on that one if you'd like to add new/more smileys.", 'gwolle-gb'), convert_smilies(':)')); ?></span>
109
+ </td>
110
+ </tr>
111
+
112
+ <tr valign="top">
113
+ <th scope="row"><label for="linkAuthorWebsite"><?php _e('Links', 'gwolle-gb'); ?></label></th>
114
+ <td>
115
+ <input type="checkbox" id="linkAuthorWebsite" name="linkAuthorWebsite"<?php
116
+ if ( get_option( 'gwolle_gb-linkAuthorWebsite', 'true' ) === 'true' ) {
117
+ echo ' checked="checked"';
118
+ }
119
+ ?> />
120
+ <label for="linkAuthorWebsite"><?php esc_html_e("Link authors' name to their website.", 'gwolle-gb'); ?></label>
121
+ <br />
122
+ <span class="setting-description"><?php esc_html_e("The author of an entry can set his/her website. If this setting is checked, his/her name will be a link to that website.", 'gwolle-gb'); ?></span>
123
+ </td>
124
+ </tr>
125
+
126
+ <tr valign="top">
127
+ <th scope="row"><label for="admin_style"><?php esc_html_e('Admin Entry Styling', 'gwolle-gb'); ?></label></th>
128
+ <td>
129
+ <input type="checkbox" id="admin_style" name="admin_style"<?php
130
+ if ( get_option( 'gwolle_gb-admin_style', 'false' ) === 'true' ) {
131
+ echo ' checked="checked"';
132
+ }
133
+ ?> />
134
+ <label for="admin_style"><?php esc_html_e("Admin entries get a special CSS styling.", 'gwolle-gb'); ?></label>
135
+ <br />
136
+ <span class="setting-description"><?php esc_html_e("Admin entries get a special CSS styling. It will get a lightgrey background.", 'gwolle-gb'); ?></span>
137
+ </td>
138
+ </tr>
139
+
140
+ <tr valign="top">
141
+ <th scope="row"><label for="navigation"><?php esc_html_e('Navigation', 'gwolle-gb'); ?></label></th>
142
+ <td>
143
+ <?php $navigation = get_option( 'gwolle_gb-navigation', 0 ); ?>
144
+ <label><input type="radio" name="navigation" value="0" <?php checked('0', $navigation); ?> />
145
+ <?php esc_html_e('Pagination', 'gwolle-gb'); ?>
146
+ </label><br />
147
+ <label><input type="radio" name="navigation" value="1" <?php checked('1', $navigation); ?> />
148
+ <?php esc_html_e('Infinite Scroll', 'gwolle-gb'); ?>
149
+ </label><br />
150
+ <span class="setting-description"><?php esc_html_e("Use standard navigation with links to all pages, or use infinite scroll where entries will be added to the bottom as you are reading.", 'gwolle-gb'); ?></span>
151
+ </td>
152
+ </tr>
153
+
154
+ <tr valign="top">
155
+ <th scope="row"><label for="paginate_all"><?php esc_html_e('Pagination', 'gwolle-gb'); ?></label></th>
156
+ <td>
157
+ <input type="checkbox" id="paginate_all" name="paginate_all"<?php
158
+ if ( get_option( 'gwolle_gb-paginate_all', 'false' ) === 'true' ) {
159
+ echo ' checked="checked"';
160
+ }
161
+ ?> />
162
+ <label for="paginate_all"><?php esc_html_e("Show a link in the pagination for All entries.", 'gwolle-gb'); ?></label>
163
+ <br />
164
+ <span class="setting-description"><?php esc_html_e("Clicking this link will list all the published entries in the guestbook.", 'gwolle-gb'); ?></span>
165
+ </td>
166
+ </tr>
167
+
168
+
169
+ <?php $read_setting = gwolle_gb_get_setting( 'read' ); ?>
170
+
171
+ <tr valign="top">
172
+ <td colspan="2"><h3><?php esc_html_e('Configure the parts of the entries that are shown to visitors.', 'gwolle-gb'); ?></h3></td>
173
+ </tr>
174
+
175
+ <tr valign="top">
176
+ <th scope="row"><label for="read_avatar"><?php esc_html_e('Avatar', 'gwolle-gb'); ?>:</label></th>
177
+ <td>
178
+ <input type="checkbox" id="read_avatar" name="read_avatar"<?php
179
+ if ( isset($read_setting['read_avatar']) && $read_setting['read_avatar'] === 'true' ) {
180
+ echo ' checked="checked"';
181
+ }
182
+ ?> />
183
+ <label for="read_avatar"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
184
+ </td>
185
+ </tr>
186
+
187
+ <tr valign="top">
188
+ <th scope="row"><label for="read_name"><?php esc_html_e('Name', 'gwolle-gb'); ?>:</label></th>
189
+ <td>
190
+ <input type="checkbox" id="read_name" name="read_name"<?php
191
+ if ( isset($read_setting['read_name']) && $read_setting['read_name'] === 'true' ) {
192
+ echo ' checked="checked"';
193
+ }
194
+ ?> />
195
+ <label for="read_name"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
196
+ </td>
197
+ </tr>
198
+
199
+ <tr valign="top">
200
+ <th scope="row"><label for="read_city"><?php esc_html_e('City', 'gwolle-gb'); ?>:</label></th>
201
+ <td>
202
+ <input type="checkbox" id="read_city" name="read_city"<?php
203
+ if ( isset($read_setting['read_city']) && $read_setting['read_city'] === 'true' ) {
204
+ echo ' checked="checked"';
205
+ }
206
+ ?> />
207
+ <label for="read_city"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
208
+ </td>
209
+ </tr>
210
+
211
+ <tr valign="top">
212
+ <th scope="row"><label for="read_datetime"><?php esc_html_e('Date and Time', 'gwolle-gb'); ?>:</label></th>
213
+ <td>
214
+ <input type="checkbox" id="read_datetime" name="read_datetime"<?php
215
+ if ( isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true' ) {
216
+ echo ' checked="checked"';
217
+ }
218
+ ?> />
219
+ <label for="read_datetime"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label><br />
220
+ <span class="setting-description"><?php esc_html_e("Setting this will show the date and the time of the entry.", 'gwolle-gb'); ?></span>
221
+ </td>
222
+ </tr>
223
+
224
+ <tr valign="top">
225
+ <th scope="row"><label for="read_date"><?php esc_html_e('Date', 'gwolle-gb'); ?>:</label></th>
226
+ <td>
227
+ <input type="checkbox" id="read_date" name="read_date"<?php
228
+ if ( isset($read_setting['read_date']) && $read_setting['read_date'] === 'true' ) {
229
+ echo ' checked="checked"';
230
+ }
231
+ ?> />
232
+ <label for="read_date"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label><br />
233
+ <span class="setting-description"><?php esc_html_e("Setting this will show the date of the entry. If Date and Time above are enabled, that setting has preference.", 'gwolle-gb'); ?></span>
234
+ </td>
235
+ </tr>
236
+
237
+ <tr valign="top">
238
+ <th scope="row"><label for="read_content"><?php esc_html_e('Content', 'gwolle-gb'); ?>:</label></th>
239
+ <td>
240
+ <input type="checkbox" id="read_content" name="read_content"<?php
241
+ if ( isset($read_setting['read_content']) && $read_setting['read_content'] === 'true' ) {
242
+ echo ' checked="checked"';
243
+ }
244
+ ?> />
245
+ <label for="read_content"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
246
+ </td>
247
+ </tr>
248
+
249
+ <tr valign="top">
250
+ <th scope="row"><label for="read_aavatar"><?php esc_html_e('Admin Avatar', 'gwolle-gb'); ?>:</label></th>
251
+ <td>
252
+ <input type="checkbox" id="read_aavatar" name="read_aavatar"<?php
253
+ if ( isset($read_setting['read_aavatar']) && $read_setting['read_aavatar'] === 'true' ) {
254
+ echo ' checked="checked"';
255
+ }
256
+ ?> />
257
+ <label for="read_aavatar"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label>
258
+ </td>
259
+ </tr>
260
+
261
+ <tr valign="top">
262
+ <th scope="row"><label for="read_editlink"><?php esc_html_e('Edit link', 'gwolle-gb'); ?>:</label></th>
263
+ <td>
264
+ <input type="checkbox" id="read_editlink" name="read_editlink"<?php
265
+ if ( isset($read_setting['read_editlink']) && $read_setting['read_editlink'] === 'true' ) {
266
+ echo ' checked="checked"';
267
+ }
268
+ ?> />
269
+ <label for="read_editlink"><?php esc_html_e('Enabled', 'gwolle-gb'); ?></label><br />
270
+ <span class="setting-description"><?php esc_html_e("A link to the editor will be added to the metabox. Only visible for moderators.", 'gwolle-gb'); ?></span>
271
+ </td>
272
+ </tr>
273
+
274
+ <tr>
275
+ <th colspan="2">
276
+ <p class="submit">
277
+ <input type="submit" name="gwolle_gb_settings_reading" id="gwolle_gb_settings_reading" class="button-primary" value="<?php esc_attr_e('Save settings', 'gwolle-gb'); ?>" />
278
+ </p>
279
+ </th>
280
+ </tr>
281
+
282
+ </tbody>
283
+ </table>
284
+
285
+ <?php
286
+ }
admin/tabs/gb-uninstalltab.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Settings page for the guestbook
4
+ */
5
+
6
+ // No direct calls to this script
7
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
8
+ die('No direct calls allowed!');
9
+ }
10
+
11
+ /*
12
+ * $uninstalled is a bool, if the install has been done already. In that case, show messages.
13
+ */
14
+
15
+ function gwolle_gb_page_settingstab_uninstall( $uninstalled ) {
16
+
17
+ if ( function_exists('current_user_can') && ! current_user_can('manage_options') ) {
18
+ die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
19
+ }
20
+ if ( function_exists('is_multisite') && is_multisite() ) {
21
+ return;
22
+ } ?>
23
+
24
+ <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_uninstall" />
25
+ <?php
26
+ settings_fields( 'gwolle_gb_options' );
27
+ do_settings_sections( 'gwolle_gb_options' );
28
+
29
+ /* Nonce */
30
+ $nonce = wp_create_nonce( 'gwolle_gb_page_settings_uninstalltab' );
31
+ echo '<input type="hidden" id="gwolle_gb_page_settings_uninstalltab" name="gwolle_gb_page_settings_uninstalltab" value="' . $nonce . '" />';
32
+ ?>
33
+ <table class="form-table">
34
+ <tbody>
35
+
36
+ <?php
37
+ if ( $uninstalled == true ) { ?>
38
+ <tr valign="top">
39
+ <th scope="row"><?php _e('Message', 'gwolle-gb'); ?></th>
40
+ <td>
41
+ <div id="message" class="updated error fade">
42
+ <p><?php esc_html_e('The entries and settings have been removed.', 'gwolle-gb'); ?></p>
43
+ <p><?php esc_html_e('The plugin is deactivated.', 'gwolle-gb'); ?></p>
44
+ <p><?php echo esc_html__('You can now go to your', 'gwolle-gb') . ' <a href="' . admin_url( '/index.php' ) . '">' . esc_html__('Dashboard', 'gwolle-gb') . '</a>. ' . esc_html__('(We will go there in 10 seconds)', 'gwolle-gb') ; ?>
45
+ </div>
46
+
47
+ <?php // Redirect to main admin page after 10 seconds. wp_redirect() does not work, headers were already sent. ?>
48
+ <script>
49
+ setTimeout(
50
+ function() {
51
+ window.location.href = '<?php echo admin_url( '/index.php' ); ?>'
52
+ }, 10000 );
53
+ </script>
54
+ </td>
55
+ </tr>
56
+ <?php
57
+ }
58
+ ?>
59
+
60
+ <tr valign="top">
61
+ <th scope="row" style="color:#FF0000;"><label for="blogdescription"><?php _e('Uninstall', 'gwolle-gb'); ?></label></th>
62
+ <td>
63
+ <?php esc_html_e('Uninstalling means that all database entries are removed (settings and entries).', 'gwolle-gb');
64
+ echo '<br />';
65
+ esc_html_e('This can <strong>not</strong> be undone.', 'gwolle-gb');
66
+ ?>
67
+ </td>
68
+ </tr>
69
+
70
+ <tr valign="top">
71
+ <th scope="row" style="color:#FF0000;"><label for="gwolle_gb_uninstall_confirmed"><?php esc_html_e('Confirm', 'gwolle-gb'); ?></label></th>
72
+ <td>
73
+ <input type="checkbox" name="gwolle_gb_uninstall_confirmed" id="gwolle_gb_uninstall_confirmed">
74
+ <label for="gwolle_gb_uninstall_confirmed"><?php esc_html_e("Yes, I'm absolutely sure of this. Proceed!", 'gwolle-gb'); ?></label>
75
+ </td>
76
+ </tr>
77
+
78
+ <tr>
79
+ <th colspan="2">
80
+ <p class="submit">
81
+ <input type="submit" name="gwolle_gb_uninstall" id="gwolle_gb_uninstall" class="button" disabled value="<?php esc_attr_e('Uninstall &raquo;', 'gwolle-gb'); ?>" />
82
+ </p>
83
+ </th>
84
+ </tr>
85
+
86
+ </tbody>
87
+ </table>
88
+
89
+ <?php
90
+ }
admin/tabs/index.html ADDED
File without changes
changelog-v0.txt ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ == Changelog of Gwolle Guestbook Version 0.9.4.2 - 0.9.9.3 ==
3
+
4
+ = 0.9.9.3 =
5
+ * 2014-11-28
6
+ * Admin page entries.php is redone, Mass-Edit works.
7
+ * Add option to check entries with Akismet.
8
+ * Streamlined all the options with default values.
9
+ * Logging is back.
10
+ * Icons are back.
11
+ * Admin CSS is more specific, less conflicting.
12
+ * Enqueue the Javascript that we use.
13
+ * Do not load the currently unused Javascript.
14
+ * Use wpdb->prepare for input everywhere.
15
+ * This thing may even be quite allright.
16
+
17
+ = 0.9.9.2 =
18
+ * 2014-11-18
19
+ * Admin page editor.php is redone.
20
+ * Admin page entries.php is still in need of handling the _POST (Mass-Edit doesn't work)
21
+ * Submit-Ham and Submit-Spam in Akismet are back.
22
+ * Use get_current_user_id instead of a global variable.
23
+ * Many options on Settings page (temporarily) removed.
24
+ * Use new option on the Settings page to set the number of entries on the admin.
25
+ * Many many many cleanups.
26
+
27
+ = 0.9.9.1 =
28
+ * 2014-11-15
29
+ * Use $wpdb everywhere.
30
+ * Many small fixes.
31
+ * Redo the Readme.
32
+ * Reformat code for readability. It will break diffs in svn though.
33
+ * Do most of the includes in the main gwolle-gb file. Put lots of code inside functions.
34
+ * Move actions to actions.php and partly clean up main gwolle-gb.php.
35
+ * Load language files from an action.
36
+ * Use Settings API.
37
+ * Use Shortcode API.
38
+ * Use standard WordPress capabilities.
39
+ * Only use the Automattic Akismet plugin, not any other class.
40
+ * Added functions/function.gwolle_gb_akismet.php for spamchecking against Akismet.
41
+ * Made Frontend CSS more specific and less conflicting. Small cleanups.
42
+ * Only load Frontend CSS when the plugin is active.
43
+ * Have the frontend-form on the main page, and show it with Javascript.
44
+ * Make email field obligatory on new entries.
45
+ * Show avatars when enabled in General / Comments.
46
+ * Start of class.gwolle_gb_entry.php.
47
+ * Have the frontend use the class gwolle_gb_entry.
48
+ * Show counter of unchecked entries in admin menu.
49
+ * Clean up Akismet in the Settings page.
50
+ * Save user notification list in one option as an array, so we follow the Settings API.
51
+ * Many more changes in the Settings page.
52
+ * On admin page editor.php; show if entry is listed as spam or not.
53
+ * Mind your head, only the frontend is secure, the backend is open for SQL Injection Attacks.
54
+
55
+ = 0.9.9.0 =
56
+ * 2014-10-22
57
+ * Use $wpdb everywhere
58
+ * Many small fixes
59
+ * Reformat code for readability. It will break diffs in svn though.
60
+ * Mind your head; Frontend and Backend are open for SQL Injection Attacks.
61
+
62
+ = 0.9.8.1 =
63
+ * Somewhere in 2010.
64
+ * [fix] Fixed bug that prevented posted entries from being published.
65
+ * Update Readme to 2014.
66
+
67
+ = 0.9.8 =
68
+ * [new] Name of the Gwolle-GB directory can now be changed.
69
+ * [new] News for Gwolle-GB are now shown at the dashboard of the plugin
70
+ * [new] Dashboard widget for a quick glance at the latest guestbook entries.
71
+ * [new] Deleted entries are now 'moved to trash', just like the 'trash' feature in the new WP version.
72
+ * [fix] Rewritten some code. Stills looks messy, but we're on the right track. :)
73
+
74
+ = 0.9.7 =
75
+ * [new] Removed the 'guestbook link' setting and replaced it with a field for the corresponding $post_id; it should be detected by default.
76
+ * [fix] New entries are validated and if this fails the user will be sent back to the 'write' page, but now without any $_POST data.
77
+ * Please note: The widget is planned for a future release. Use it at your own risk.
78
+
79
+ = 0.9.6.2 (2nd emergency release) =
80
+ * [fix] 'Number of entries' setting is now applied again to the 'read' frontpage. (Thanks, Kristin!)
81
+
82
+ = 0.9.6.1 (emergency release) =
83
+ * [new] Added log message to track if an entry has been changed using the editor.
84
+ * [fix] Fixed several bugs.
85
+
86
+ = 0.9.6 =
87
+ * [new] When viewing 'all' entries you can now enable/disable entries by just clicking at the icon. (AJAX, Yey!)
88
+ * [new] French language (thanks, cobestran.com)
89
+ * [new] Author's can now be linked to his/her website. (Can be turned off in the settings.)
90
+ * [new] Smilies are now replaced using the built-in WP smiley engine. (Can be turned off in the settings.)
91
+ * [fix] 'Spam' is now only an attribute, no longer a state. This results in only two states: 'checked' and 'unchecked'.
92
+ * [fix] Cleaned up the code a lot and using a lot of functions. (Check the "func.php" files for futher reading.)
93
+ * [fix] Date is now displayed as configured at the WP options page.
94
+ * [fix] Admin entries: Only show stuff member's name if found.
95
+
96
+ = 0.9.5 =
97
+ * [new] You can now import guestbook entries from the popular "DMSGuestbook" plugin easily.
98
+
99
+ = 0.9.4.7 =
100
+ * [fix] Correctly displaying author's name if it contains HTML elements such as <script> tags
101
+ * [fix] stripslashes on author's location, so locations like "My aunt's house" are displayed correctly.
102
+ * [fix] the_content() now just returns the guestbook instead of echo'ing it. This way, other plugins are able to modify the content.
103
+ * [fix] Added success message when uninstall is completed.
104
+
105
+ = 0.9.4.6 =
106
+ * [new] Option to output text before/after the [gwolle-gb]-Tag, as requested
107
+ * [new] Whois link for IP address of the entry author
108
+ * [new] Entry content can now be send with the notification mail. For security reasons '<' and '>' are send as '{' and '}'.
109
+ * [new] Polish language (thanks, Daniel Speichert!)
110
+ * [new] Spanish language (thanks, José Luis Sanz Ruiz!)
111
+ * [fix] Support for localization of the frontend
112
+ * [fix] Now coded in XHTML, just as pointed out by "KriLL3"
113
+ * [fix] German special chars ("Umlaute") are now displayed correctly.
114
+ * [fix] Metaboxes ('Save' etc.) are displayed again. Sorry for that one, folks!
115
+ * Now online again with http://wolfgangtimme.de/blog/!
116
+
117
+ = 0.9.4.5 =
118
+ * As this release alters your Gwolle-GB database tables I highly recommend to backup the old ones.
119
+ * If you're experiencing any errors please report them immediately. Thanks!
120
+ * [new] Option to toggle the visibility of line breaks
121
+ * [fix] All tables & fields are now UTF8 (-> support for Croation letters)
122
+
123
+ = 0.9.4.4a =
124
+ * [new] After deleting an entry directly from the entries page you'll be redirected to that specific page (spam/unlocked/locked/all)
125
+ * [fix] reCAPTCHA library is not include if that's already been done by another plugin.
126
+ * [new] Dutch translation added. Thank you, timomaas!
127
+ * [fix] Now using wp_mail() instead of mail() to send email notifications.
128
+ * [fix] stripslashes on the user-defined admin mail text.
129
+ * [new] mass editing of entries added
130
+ * [new] Notification list shows ALL subscribers, including the current user.
131
+
132
+ = 0.9.4.3 =
133
+ * [fix] Redirection failed again.
134
+ * [new] Added an option to set link to the guestbook manually.
135
+
136
+ = 0.9.4.2.1 =
137
+ * [rem] Removed the version check because of some problems.
138
+
139
+ = 0.9.4.2 =
140
+ * [fix] Redirection to reading page after posting entry sometimes failed.
141
+ * [new] Option to set the number of entries displayed in reading mode.
142
+ * [new] Option to set the mail notification text
143
+ * [new] When uninstalling via the plugin's setting panel you'll be asked to confirm again.
144
+ * [new] Notification mails now can include a direct link to the editor, speeding things up for you.
145
+
146
+
changelog-v1.txt ADDED
@@ -0,0 +1,664 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ == Changelog of Gwolle Guestbook Version 0.9.4.2 - 0.9.9.3 ==
3
+
4
+ = 1.7.4 =
5
+ * 2016-06-27
6
+ * Improve CSS of Widget Slider.
7
+ * BBcode: don't have br elements in the ul and ol.
8
+ * Uninstall is not supported on MultiSite.
9
+ * Fix PHP error after uninstall.
10
+ * Redirect to dashboard after uninstall.
11
+ * Small tuning of numbers for the importer.
12
+ * Fix event listener for export submit.
13
+ * Split export files with max 5000 entries.
14
+
15
+ = 1.7.3 =
16
+ * 2016-06-24
17
+ * Add slider as an option to the Widget.
18
+ * Add book ID as an option to the Widget.
19
+ * Add Super Simple Slider for that widget slider.
20
+ * Add filters for email subjects.
21
+ * Add filter for number of entries shown.
22
+ * Add filter for wpadmin_url in notification mail.
23
+ * Make label for submit button invisible in CSS.
24
+
25
+ = 1.7.2 =
26
+ * 2016-05-17
27
+ * Fix Emoji at the frontend.
28
+ * Also use role of Author for possible moderators.
29
+
30
+ = 1.7.1 =
31
+ * 2016-05-15
32
+ * Change encoding of Emoji, hopefully this fixes it for people still having problems.
33
+ * Set RSS Feed to 20 entries by default and add filter for this.
34
+ * Show admin-reply author on editor.
35
+ * Fix Emoji on Editor adminpage.
36
+ * Add rel="next" and rel="prev" to pagination.
37
+ * Simplify checking the array of user_ids in gwolle_gb_notification() with in_array().
38
+ * Use role__in for WP_User_Query for list of moderators.
39
+ * Add filter for role__in to add custom roles.
40
+ * Fix warning when posting an entry and moderation is on.
41
+ * Add docs for actions and filters.
42
+ * Add example CSV file for import.
43
+
44
+ = 1.7.0 =
45
+ * 2016-04-26
46
+ * Update formatting and fix Emoji on old servers.
47
+ * Also show main charset and column charset on debug page for MySQL.
48
+ * Only update table to utf8mb4 if main charset is utf8mb4.
49
+ * Call wp_cache_flush() as well when clearing cache.
50
+ * Set the correct HTTP header for Content-type for the RSS Feed.
51
+ * Update Donate text.
52
+
53
+ = 1.6.9 =
54
+ * 2016-04-12
55
+ * Add option on Settings page for disabling Nonce.
56
+ * Use 'date at time' instead of 'date on time'. Follow WP Comments.
57
+ * Fix counter on Infinite Scroll.
58
+ * Improve usability of permanently removing an entry on admin editor.
59
+ * Cleanup text in Help postbox on main admin page.
60
+ * Use proper permalink for Widget and Editor.
61
+ * Use proper metaboxes on admin pages for Export, Import and Editor.
62
+ * Only enqueue on our own admin pages.
63
+ * Use rss2 as feed_content_type for RSS feed.
64
+ * Remove duplicate code for IP recording in class-entry.
65
+ * Move functions for compatibility to compatibility.php.
66
+
67
+ = 1.6.8 =
68
+ * 2016-03-23
69
+ * Add icon for trash entry.
70
+ * Change menu-name for New entry to Add/Edit entry.
71
+ * Use _n function for singular/plural text strings.
72
+ * Add proper permalink to notification mails.
73
+ * Set maximum number of pages for Widget Form (500).
74
+ * Set maximum number of posts/pages to import from (500).
75
+ * Don't fetch meta_key and termdata from those posts.
76
+ * Add filter gwolle_gb_set_author_ip for disabling IP recording.
77
+
78
+ = 1.6.7 =
79
+ * 2016-03-14
80
+ * Still fixing formatting glitches.
81
+ * Fix typo in notice text, and polish it up.
82
+ * Add option for reading max 3 entries.
83
+ * Admin editor: make it possible to not save a website field.
84
+ * Small polish for pagination on page 5.
85
+ * Different spinner/loading gif for Infinite Scroll.
86
+ * Use toggle animation for loading gif.
87
+ * Position absolute for the loading gif.
88
+
89
+ = 1.6.6 =
90
+ * 2016-03-10
91
+ * Add Infinite Scroll (optional, as alternative to pagination).
92
+ * Fix "Showing 1 – 25 of 54" on admin list.
93
+ * Fix leftover pagination issues on admin list.
94
+ * Use pagination from admin also for frontend.
95
+ * Self-documenting variable names for pagination functions.
96
+ * Remove Akismet message on Spam list in admin.
97
+ * Simplify counting the offset for db-query.
98
+ * Split formatting functions off into formatting.php file.
99
+ * Translate debug headings.
100
+
101
+ = 1.6.5 =
102
+ * 2016-03-05
103
+ * Do not make slashes into html entities (for bbcode).
104
+
105
+ = 1.6.4 =
106
+ * 2016-03-05
107
+ * Add debug tab on Settings page.
108
+ * Make sure we don't strip backslashes.
109
+ * Add entry_content and date to admin reply email.
110
+ * Drop fi, zh_TW, they are at 100% in GlotPress.
111
+
112
+ = 1.6.3 =
113
+ * 2016-02-23
114
+ * Add filter for "no_entries".
115
+ * Add filters to change the labels.
116
+ * Add filter for sql query in get_entries().
117
+ * Add log messages to moderator mail.
118
+ * Explicitly set utf8mb4 character set for $wpdb (for misconfigured hosts).
119
+ * Add mysql/mysqli to debug info.
120
+
121
+ = 1.6.2 =
122
+ * 2016-02-12
123
+ * Change a lot of Emoji.
124
+ * Make CSS for BBcode menu more specific.
125
+ * Twenty Sixteen is awful.
126
+ * Add actions/hooks after saving an entry.
127
+ * Add link to RSS feed on main admin page.
128
+ * Add gwolle_gb_debug_info function for debugging.
129
+
130
+ = 1.6.1 =
131
+ * 2016-02-06
132
+ * Use HTML5 for required fields.
133
+ * Add Nonce for verification.
134
+ * Add option to shortcode gwolle_gb_write to only show button or form.
135
+ * Make CSS for .gwolle_gb_hide more specific.
136
+ * Disable Slimstat tracking for Emoji.
137
+ * Use wp-exclude-emoji class for textarea and input fields.
138
+ * On install, only write option for version on successfull install.
139
+ * No need for color:red on empty excerpt.
140
+
141
+ = 1.6.0 =
142
+ * 2016-01-22
143
+ * Change name and id of honeypot input field.
144
+ * Add logging for too long text in entry.
145
+ * Add entry_id as parameter to url in RSS Feed.
146
+ * Drop ru_RU, it is at 100% in GlotPress.
147
+
148
+ = 1.5.9 =
149
+ * 2016-01-15
150
+ * Add Honeypot feature (enabled by default).
151
+ * Show moderation message on spam for the "user".
152
+ * Add logging for when it was marked by the Honeypot and Akismet.
153
+ * Fix compatibility with Twentysixteen a elements.
154
+ * Fix smileys when content is trimmed.
155
+ * Exchange a few Emoji characters.
156
+ * Change text on Settingspage for Akismet, add explanation.
157
+
158
+ = 1.5.8 =
159
+ * 2015-12-31
160
+ * Add readmore link when entries are trimmed.
161
+ * Fix Emoji for admin_reply.
162
+ * Use slideDown effect for Emoji.
163
+ * Show error on frontend when saving failed.
164
+ * Improve filtered messages for 'gwolle_gb_messages'.
165
+ * Test for duplicate entry checks only the same book_id.
166
+ * Add filter for frontend button.
167
+ * Add $entry to filter gwolle_gb_author_name_html.
168
+
169
+ = 1.5.7 =
170
+ * 2015-12-01
171
+ * Fix for inline CSS.
172
+ * Make Book_id column in Admin Entries clickable.
173
+ * Remove installSplash.
174
+ * Add shortcode as parameter to main frontend functions.
175
+ * Rename frontend/index.php to frontend/shortcodes.php.
176
+
177
+ = 1.5.6 =
178
+ * 2015-11-29
179
+ * Add functions for errors, messages and formdata, so we use less global vars.
180
+ * Add filters for these functions.
181
+ * Add filter for author_name_html.
182
+ * Add author_origin to possible email fields.
183
+ * Add Reply-To header to admin email.
184
+ * Save book_id in Meta_key.
185
+ * If possible, link to the correct guestbook/book_id.
186
+ * Update headings for WordPress 4.4.
187
+ * Small styling fixes for main admin page.
188
+ * If BuddyPress is active, link author to its profile page.
189
+ * Drop fr_FR, it is maintained at GlotPress.
190
+
191
+ = 1.5.5 =
192
+ * 2015-11-03
193
+ * Fix for import on PHP 5.2 installs that do have finfo_open().
194
+ * Add book_id="post_id" as optional parameter in the shortcode.
195
+ * Add datetime to title in RSS-feed.
196
+ * Drop pot, de_DE and nl_NL, they are at 100% on GlotPress.
197
+
198
+ = 1.5.4 =
199
+ * 2015-10-16
200
+ * Security fix: Use AJAX the proper way for CAPTCHA check (thanks htbridge.ch).
201
+ * Translations moved to GlotPress.
202
+ * Support Shortcode UI.
203
+ * Properly enqueue frontend JavaScript.
204
+ * Use plugins_url() for admin enqueue.
205
+ * Don't use WP_PLUGIN_URL and GWOLLE_GB_URL anymore.
206
+
207
+ = 1.5.3 =
208
+ * 2015-10-01
209
+ * When email is disabled, save it anyway when user is logged in.
210
+ * Add nb_NO (thanks Bjørn Inge Vårvik).
211
+ * Update ru_RU.
212
+
213
+ = 1.5.2 =
214
+ * 2015-09-15
215
+ * First stab at supporting MultiSite.
216
+ * When deleting an entry on the Editor page, start with a clean slate.
217
+ * On Entries page, give Book ID its own column.
218
+ * Do not cache page when using a Captcha.
219
+ * Admin Enqueue moved to its own function and action.
220
+ * Only toggle our own postboxes.
221
+ * Update pot, nl_NL, zh_TW.
222
+
223
+ = 1.5.1 =
224
+ * 2015-09-14
225
+ * Support Multiple Guestbooks.
226
+ * Add book_id field to database and class-entry, default is book_id 1.
227
+ * Add parameter book_id to shortcodes.
228
+ * Add parameter book_id to get_entries and get_entry_count functions.
229
+ * Show and Edit book_id on Admin Editor.
230
+ * Add icons for book_id and admin_reply, add title attributes.
231
+ * Don't show so much metadata on unpublished entry.
232
+ * Fix link to entry in moderation mail.
233
+ * Add notice for using CAPTCHA with a caching plugin.
234
+ * No need to add options on install, we have defaults for that.
235
+ * Rename install/upgrade functions.
236
+ * Test if db tables exist, before adding them.
237
+ * Update pot, nl_NL, ru_RU.
238
+
239
+ = 1.5.0 =
240
+ * 2015-09-10
241
+ * Only support WordPress 3.7+, since they really are supported.
242
+ * Add option for widget to not show admin entries.
243
+ * When saving an entry, reset author_id and checkedby for non-existent users.
244
+ * Add action for deleted_user to reset author_id (and maybe checkedby).
245
+ * Add parameter author_id to gwolle_gb_get_entries function.
246
+ * Add parameter no_moderators to gwolle_gb_get_entries function.
247
+ * Add function gwolle_gb_get_moderators.
248
+ * Update pot, nl_NL, ru_RU.
249
+
250
+ = 1.4.9 =
251
+ * 2015-09-09
252
+ * Add HTML5 Markup.
253
+ * Use content_url() for the Captcha (thanks harald.reingruber).
254
+ * Rename class and function files to WP standards.
255
+ * Move mail functions to own file.
256
+ * Add permalink of guestbook to mails.
257
+ * Add mail to author on Admin Reply with option on editor page.
258
+ * Translate BBcode icontext with wp_localize_script.
259
+ * Add Emoji to Admin Editor.
260
+ * Add number of unchecked entries to admin bar, if > 0.
261
+ * Change text-domain to slug.
262
+ * Update pot, de_DE, nl_NL.
263
+
264
+ = 1.4.8 =
265
+ * 2015-08-27
266
+ * Add Admin Reply.
267
+ * Update Importer and Exporter.
268
+ * Add filters to entry-list and to widget.
269
+ * Add parameter $entry to many filters.
270
+ * Add CSS class for counter in entry-list.
271
+ * Add filters to the form.
272
+ * Turn linebreaks off in Settings when excerpt_length is being used.
273
+ * Update pot, de_DE, nl_NL.
274
+
275
+ = 1.4.7 =
276
+ * 2015-08-14
277
+ * Fix adding an entry without CAPTCHA enabled.
278
+ * Make header and notice compatible with Multi-Lingual plugins.
279
+ * Add parameter to template function gwolle_gb_entry_template.
280
+ * Add CSS class for even/uneven entry.
281
+ * Have better usability in handling disabled submit buttons on admin pages.
282
+ * Have sensible attributes for submit-button on settings page.
283
+ * Move pagination to own files and functions.
284
+ * Use h1 headings on admin pages.
285
+
286
+ = 1.4.6 =
287
+ * 2015-08-12
288
+ * Improve Responsive Layout of Admin Pages.
289
+ * Add option to paginate All entries.
290
+ * Clear Cache plugins on admin changes as well.
291
+ * Support Cachify, W3 Total Cache, WP Fastest Cache.
292
+ * Improve support for WP Super Cache.
293
+ * Refactor BBcode and Emoji functions into own file.
294
+ * Add function gwolle_gb_get_emoji.
295
+ * Improve html of author_name.
296
+ * Update pot, nl_NL.
297
+
298
+ = 1.4.5 =
299
+ * 2015-08-10
300
+ * Drop reCAPTCHA completely.
301
+ * Use Really Simple CAPTCHA plugin from now on.
302
+ * Rename from Gwolle-GB to Gwolle Guestbook.
303
+ * Add function gwolle_gb_bbcode_strip.
304
+ * Strip BBcode from Widget and Dashboard Widget.
305
+ * Strip BBcode from Entry when BBcode is disabled.
306
+ * Strip BBcode for Akismet service request.
307
+ * Fix link in Widget for WPML.
308
+ * Add placeholder to textarea, also in admin editor.
309
+ * Fix PHP notice in AJAX request.
310
+ * Add word-break and word-wrap to admin CSS.
311
+ * Add Greek, el (thanks dbonovas).
312
+ * Update pot, nl_NL.
313
+
314
+ = 1.4.4 =
315
+ * 2015-07-29
316
+ * Fix textdomain on Donate string.
317
+ * Use 'strong' for bold in bbcode.
318
+ * Update meta_key on save_post action.
319
+ * Update pot, de_DE, ru_RU, zh_TW.
320
+
321
+ = 1.4.3 =
322
+ * 2015-07-17
323
+ * Upgrade reCAPTCHA to 1.1.1 (Requires PHP 5.3+).
324
+ * DB: drop column 'date'.
325
+ * Improve html of new editor options.
326
+ * Update pot, nl_NL.
327
+
328
+ = 1.4.2 =
329
+ * 2015-07-13
330
+ * Fix quotes in subjectline and From-header of emails.
331
+ * Translate description of the plugin too.
332
+ * Set CSS for span to display:inline.
333
+ * Check for array when getting settings.
334
+ * DB: Move date to datetime with bigint(8), so sorting on date works correctly.
335
+ * Mark $entry->get_date and $entry->set_date as deprecated.
336
+ * Rename actions.php to hooks.php.
337
+ * Add function gwolle_gb_get_postid.
338
+ * Add button for frontend to some adminpages.
339
+ * Improve and update Admin CSS for WP 4.3.
340
+ * Add function gwolle_gb_touch_time.
341
+ * Edit author_name and datetime on editor.php.
342
+ * Don't spam the logs when editing an entry.
343
+ * Update pot, nl_NL.
344
+
345
+ = 1.4.1 =
346
+ * 2015-06-17
347
+ * Add author_ip to possible fields in notification mail.
348
+ * Use Gwolle version for enqueue of Markitup css and js.
349
+ * Add a bit of reset-CSS to Markitup CSS so themes are less conflicting.
350
+ * Show author name as it was put in by the author, not from the user profile.
351
+ * Add da_DK (thanks Bo Fischer Nielsen).
352
+
353
+ = 1.4.0 =
354
+ * 2015-06-14
355
+ * Add template for single entry.
356
+ * Fix quoting issues in notification email.
357
+ * Fix sending headers in write.php.
358
+ * Set scoped attribute for more CSS.
359
+ * Set language for RSS Feed.
360
+
361
+ = 1.3.9 =
362
+ * 2015-06-13
363
+ * Fix for WP 3.4, which has no function has_shortcode.
364
+ * Change 'at' time to 'on'.
365
+ * Update pot and affected translations.
366
+
367
+ = 1.3.8 =
368
+ * 2015-06-10
369
+ * Add RSS Feed.
370
+ * Set scoped properly.
371
+ * Update pot, nl_NL, ru_RU.
372
+
373
+ = 1.3.7 =
374
+ * 2015-06-04
375
+ * Add Emoji to form.
376
+ * Add action to frontend form for validation.
377
+ * Add scoped attribute to style element.
378
+ * Switch place of metaboxes on main admin page.
379
+ * Add sv_SE (Swedish) (thanks Roffe Bentsen).
380
+ * Update pt_BR.
381
+
382
+ = 1.3.6 =
383
+ * 2015-05-31
384
+ * Close span element in widget (thanks Ferdinand).
385
+ * Redo Donate metabox, add Review text.
386
+ * Add pt_BR (Thanks Alexandre Rocha).
387
+ * Update pot, nl_NL and ru_RU.
388
+
389
+ = 1.3.5 =
390
+ * 2015-05-19
391
+ * Support BBcode in editor.
392
+ * Improve Emoji support, for name, city and content.
393
+ * Fix posting an entry on old WP installs.
394
+ * Update bg_BG, nl_NL, pot.
395
+
396
+ = 1.3.4 =
397
+ * 2015-05-15
398
+ * Update the cache when using cache plugins.
399
+ * Support WP Super Cache.
400
+ * Convert our database tables to utf8mb4 if possible, so Emoji are functional.
401
+ * Also support (encode) Emoji on old db-collation.
402
+ * Frontend: Only listen to clicks on the button, not the whole div.
403
+ * Update ru_RU.
404
+
405
+ = 1.3.3 =
406
+ * 2015-05-08
407
+ * Only check for double entry if the content is mandatory.
408
+ * Only offer to export when there are entries.
409
+ * When login required, show login form.
410
+ * Also show the register link then.
411
+ * Update ru_RU.
412
+
413
+ = 1.3.2 =
414
+ * 2015-04-20
415
+ * PageNum is always an int.
416
+ * Add sk_SK (Slovenian) (Thanks Marcel Klacan).
417
+
418
+ = 1.3.1 =
419
+ * 2015-04-08
420
+ * Explain interaction between limiting words and linebreaks.
421
+ * Make notices (messages) dismissible in WP 4.2.
422
+ * Import from post, or just all comments.
423
+ * Only show pages and posts with comments on import page.
424
+ * Use get_comments everywhere, also for counting, for consistency.
425
+ * Really sanitize everywhere.
426
+ * Use htmlspecialchars instead of htmlentities.
427
+ * Use esc_attr_e for attributes.
428
+ * Add it_IT (thanks Mariachiara Corradini).
429
+ * Update pot, nl_NL.
430
+
431
+ = 1.3.0 =
432
+ * 2015-04-02
433
+ * Place div around list of entries.
434
+ * Update bg_BG, fr_FR.
435
+
436
+ = 1.2.9 =
437
+ * 2015-03-28
438
+ * Sanitize output for notification email.
439
+ * Remove "hours" from the entries list. Nobody likes it.
440
+ * Update bg_BG, ru_RU.
441
+
442
+ = 1.2.8 =
443
+ * 2015-03-25
444
+ * Do show the form when user is logged in and login is required.
445
+ * Widget uses get_home_url for the pagelink.
446
+ * Update bg_BG (Thanks Kostadin Petrichkov).
447
+ * Add missing es_ES.po from mo-file.
448
+
449
+ = 1.2.7 =
450
+ * 2015-03-24
451
+ * Add options for admins to (un)subscribe moderators to notifications.
452
+ * Add buttons to empty spam and trash.
453
+ * Add options to change text around the form.
454
+ * Separate settingspage into more files.
455
+ * Use more sanitizing for output.
456
+ * Add stub for bg_BG.
457
+ * Update pot, nl_NL.
458
+
459
+ = 1.2.6 =
460
+ * 2015-03-22
461
+ * Extend notification email.
462
+ * Add options for mail to the author.
463
+ * Really disable dashboard widget with too few capabilities.
464
+ * Update pot, nl_NL, ru_RU.
465
+
466
+ = 1.2.5 =
467
+ * 2015-03-21
468
+ * Check for abusive length of words, and mark unchecked.
469
+ * Compatibility with PHP 5.3 and Unicode.
470
+ * Use get_object_vars for casting to an array for the save filter.
471
+ * Don't set background-color on error-messages.
472
+ * Update ru_RU.
473
+
474
+ = 1.2.4 =
475
+ * 2015-03-18
476
+ * Add option for max words in content.
477
+ * Add ru_RU (thanks zhonglyor).
478
+ * Update pl_PL.
479
+ * Update fr_FR (Thanks Florence Bourmault-Gohin).
480
+
481
+ = 1.2.3 =
482
+ * 2015-03-17
483
+ * Add options for widget (changed defaults).
484
+ * CSS frontend uses % instead of px for width.
485
+ * Update pl_PL (Thanks Andrzej Sobaniec).
486
+ * Update fi (Thanks Timo Hintsa).
487
+
488
+ = 1.2.2 =
489
+ * 2015-03-13
490
+ * Import, check for timestamp on date, else convert.
491
+ * Add option to have labels float or not.
492
+ * Add option to enable/disable admin entry styling.
493
+ * Use maybe_unserialize.
494
+ * Add filters to the API.
495
+ * Update pot and nl_NL.
496
+
497
+ = 1.2.1 =
498
+ * 2015-03-10
499
+ * Frontend entries: class s/first/gwolle_gb_first.
500
+ * Rename fi_FI to fi, so it loads.
501
+ * Update pot, de_DE and nl_NL.
502
+
503
+ = 1.2.0 =
504
+ * 2015-03-08
505
+ * Add shortcodes for just the form and the list.
506
+ * Add option to only allow logged-in users to post an entry.
507
+ * Add options to configure the shown entries.
508
+ * Import: fix test for mimetype.
509
+ * Import supports PHP 5.2.
510
+ * s/Homepage/Website.
511
+ * Update pot, de_DE, nl_NL.
512
+
513
+ = 1.1.9 =
514
+ * 2015-02-16
515
+ * Validate URL for Website as well, even though most url's validate.
516
+ * Sanitize Formdata.
517
+ * Sanitize Settings.
518
+ * Update de_DE.
519
+
520
+ = 1.1.8 =
521
+ * 2015-02-14
522
+ * Move anti-spam question to the label on the left.
523
+ * Add better error messages to the form.
524
+ * Add autofocus to first formfield with an error.
525
+ * Use validation for the email.
526
+ * Add visibility:visible for tr.invisible.
527
+ * Add pt_PT (Only frontend yet).
528
+
529
+ = 1.1.7 =
530
+ * 2015-02-13
531
+ * Settingspage; make it possible to remove anti-spam and reCAPTCHA settings.
532
+ * All strings really use our text-domain.
533
+ * Update de_DE.
534
+
535
+ = 1.1.6 =
536
+ * 2015-02-10
537
+ * Fix CSS for check-all checkbox on entrylist in admin.
538
+ * Better CSS for admin entries, grey instead of pink.
539
+ * Also style admin entries on admin pages.
540
+ * Always load jQuery, it's just easier.
541
+ * All strings use our text-domain.
542
+
543
+ = 1.1.5 =
544
+ * 2015-02-09
545
+ * Fix js when jQuery is loaded in the footer.
546
+ * Fix error submitting new entries.
547
+ * Do pagination link a bit cheaper.
548
+ * Add fi_FI (thanks Ilkka Kivelä).
549
+
550
+ = 1.1.4 =
551
+ * 2015-02-03
552
+ * Fix pagination links.
553
+ * Slightly improve installsplash. Maybe it just needs to go alltogether.
554
+ * Update zh_TW.
555
+
556
+ = 1.1.3 =
557
+ * 2015-02-01
558
+ * Add a simple Form Builder.
559
+ * Add custom Anti-Spam question.
560
+ * Add CSS for the widget.
561
+ * Fix default MailText.
562
+ * Cleanup old options.
563
+
564
+ = 1.1.2 =
565
+ * 2015-01-31
566
+ * Settingspage uses Tabs.
567
+ * Settingspage uses more labels.
568
+ * Uninstall is back.
569
+ * Give the CSS file a version in the GET.
570
+ * Put date and time in spans on frontend.
571
+ * Only show paginaton on frontend when there is more then 1 page.
572
+ * Add Donate link.
573
+ * Don't count arrays when not needed.
574
+ * Use strpos instead of preg_match.
575
+ * Use sprintf for formatting instead of str_replace.
576
+ * Update pot-file, fr_FR, nl_NL, zh_TW.
577
+
578
+ = 1.1.1 =
579
+ * 2015-01-10
580
+ * Add Edit link to frontend for moderators.
581
+ * Work around old and incompatible other recaptcha libraries.
582
+ * Get_entries function supports limit of -1 (no limit).
583
+ * Import from WordPress comments.
584
+ * Export/Import from/to Gwolle-GB through a CSV file.
585
+ * Add zh_TW (Thanks Chun-I Lee).
586
+ * Remove unmaintained en_GB.
587
+
588
+ = 1.1.0 =
589
+ * 2015-01-06
590
+ * Admin entries page: fix table header and footer (ordering).
591
+ * Auto-fill the form if the user is already logged in.
592
+ * Bring Ajax to the editor page as well.
593
+ * Simplify Options on editor page.
594
+
595
+ = 1.0.9 =
596
+ * 2015-01-05
597
+ * Fix small but nasty error, sorry about that.
598
+ * More specific HTML / CSS on Frontend.
599
+
600
+ = 1.0.8 =
601
+ * 2015-01-04
602
+ * Ajax is back on Dashboard Widget and on Entries page.
603
+ * Move notification option to main page so moderators can subscribe.
604
+ * New option for the From address in notification mail.
605
+ * Small fixes and cleanups.
606
+ * Update de_DE and nl_NL.
607
+
608
+ = 1.0.7 =
609
+ * 2014-12-27
610
+ * Update de_DE (Thanks Jenny Gaulke).
611
+
612
+ = 1.0.6 =
613
+ * 2014-12-24
614
+ * Change database structure for guestbook entries.
615
+ * Fix install for db and log entries.
616
+ * Use '...' instead of '& hellip;'.
617
+
618
+ = 1.0.5 =
619
+ * 2014-12-21
620
+ * Add best entries to Frontend Widget.
621
+ * Start of the Dashboard Widget (for now without AJAX).
622
+ * Fix small pagination issue.
623
+ * Cleanup obsolete options.
624
+ * Class entry; integrate setters and checkers, it's all the same.
625
+ * gwolle_gb_entries: entry_id is not a parameter anymore.
626
+ * Change database structure for log entries.
627
+ * Small cleanups.
628
+ * Update pot, nl_NL and cs_CZ.
629
+
630
+ = 1.0.4 =
631
+ * 2014-12-16
632
+ * Bring back Import from DMSGuestbook.
633
+ * Postboxes can be closed now.
634
+ * Be more gentle on the database.
635
+ * Add cs_CZ (Thanks Jan Korous).
636
+
637
+ = 1.0.3 =
638
+ * 2014-12-14
639
+ * Add delete function in editor and mass-edit.
640
+ * Fix pagination on Frontend.
641
+ * Frontend Widget is back.
642
+ * Excerpt is now counted in words and uses wp_trim_words.
643
+ * Updates for pot, nl_NL and fr_FR.
644
+
645
+ = 1.0.2 =
646
+ * 2014-12-13
647
+ * HTML uses labels now.
648
+ * HTML has more classes.
649
+ * New generated pot file. Please send in your translations.
650
+ * Update for nl_NL.
651
+ * Update for fr_FR (Thanks Charles-Aurélien)
652
+
653
+ = 1.0.1 =
654
+ * 2014-12-05
655
+ * Frontend uses now input-button for the write link.
656
+ * Frontend checks again for double post.
657
+ * Main admin page also shows trashed entries.
658
+ * Settings page now saves Recaptcha setting.
659
+ * reCAPTCHA is back.
660
+
661
+ = 1.0 =
662
+ * 2014-11-28
663
+ * Release stable and updated version 1.0 to the public.
664
+ * Go on holiday, have a few beers, and watch the girls do the hoolahoop().
docs/actions/gwolle_gb_notsaved_entry_frontend.txt ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_notsaved_entry_frontend"</b> action is used to execute a function when an entry is submitted but not saved in the frontend.
6
+
7
+ You can use this action as:
8
+
9
+ <code><?php add_action( 'gwolle_gb_notsaved_entry_frontend', 'action_function_name' ) ?></code>
10
+
11
+ Where 'action_function_name' is the function WordPress should call when the action is being used.
12
+
13
+ '''action_function_name''' should be a unique function name. It cannot match any other function name already declared.
14
+
15
+
16
+ ==Examples==
17
+
18
+ function my_gwolle_gb_notsaved_entry_frontend( $entry ) {
19
+ // $entry is an object.
20
+
21
+ // redirect moderator to the Editor.
22
+ if ( current_user_can( 'moderate_comments' ) ) {
23
+ wp_redirect( admin_url('admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id() ) );
24
+ exit;
25
+ }
26
+
27
+ }
28
+ add_action( 'gwolle_gb_notsaved_entry_frontend', ' do_action( 'gwolle_gb_save_entry_frontend', $entry );
29
+ ' );
docs/actions/gwolle_gb_save_entry_admin.txt ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_save_entry_admin"</b> action is used to execute a function when an entry is entered in the admin and it was saved.
6
+
7
+ You can use this action as:
8
+
9
+ <code><?php add_action( 'gwolle_gb_save_entry_admin', 'action_function_name' ) ?></code>
10
+
11
+ Where 'action_function_name' is the function WordPress should call when the action is being used.
12
+
13
+ '''action_function_name''' should be a unique function name. It cannot match any other function name already declared.
14
+
15
+
16
+ ==Examples==
17
+
18
+ function my_gwolle_gb_save_entry_admin( $entry ) {
19
+ // $entry is an object.
20
+
21
+ $book_id = (int) $entry->get_book_id();
22
+ if ( $book_id == 0 ) {
23
+ $book_id = 1;
24
+ }
25
+ $post_id = gwolle_gb_get_postid( $book_id );
26
+ if ( $post_id ) {
27
+ // this redirect doesn't work, since the headers were already sent.
28
+ wp_redirect( get_permalink( $post_id ) );
29
+ exit;
30
+ }
31
+
32
+
33
+ }
34
+ add_action( 'gwolle_gb_save_entry_admin', 'my_gwolle_gb_save_entry_admin' );
docs/actions/gwolle_gb_save_entry_frontend.txt ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_save_entry_frontend"</b> action is used to execute a function when an entry is entered in the frontend and it was saved.
6
+
7
+ You can use this action as:
8
+
9
+ <code><?php add_action( 'gwolle_gb_save_entry_frontend', 'action_function_name' ) ?></code>
10
+
11
+ Where 'action_function_name' is the function WordPress should call when the action is being used.
12
+
13
+ '''action_function_name''' should be a unique function name. It cannot match any other function name already declared.
14
+
15
+
16
+ ==Examples==
17
+
18
+ function my_gwolle_gb_save_entry_frontend( $entry ) {
19
+ // $entry is an object.
20
+
21
+ // redirect moderator to the Editor.
22
+ if ( current_user_can( 'moderate_comments' ) ) {
23
+ wp_redirect( admin_url('admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id() ) );
24
+ exit;
25
+ }
26
+
27
+ }
28
+ add_action( 'gwolle_gb_save_entry_frontend', 'my_gwolle_gb_save_entry_frontend' );
docs/actions/index.html ADDED
File without changes
docs/filters/gwolle_gb_admin_reply_header.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_admin_reply_header"</b> filter is used to change the text of the admin reply header on the frontend and admin editor.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_admin_reply_header', '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_admin_reply_header( $html, $entry ) {
20
+ // $html is a string
21
+ $html = 'test';
22
+ return $html;
23
+ }
24
+ add_filter( 'gwolle_gb_admin_reply_header', 'my_gwolle_gb_admin_reply_header', 10, 2 );
25
+
docs/filters/gwolle_gb_antispam_label.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_antispam_label"</b> filter is used to change the text of the label for the input for antispam at the frontend. It is used for the Custom antispam question and the CAPTCHA.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_antispam_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_antispam_label( $label ) {
20
+ // $label is a string
21
+ $label = 'test';
22
+ return $label;
23
+ }
24
+ add_filter( 'gwolle_gb_antispam_label', 'my_gwolle_gb_antispam_label', 10, 1 );
25
+
docs/filters/gwolle_gb_author_email_label.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_email_label"</b> filter is used to change the text of the label for the input of the author email at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_email_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_email_label( $label ) {
20
+ // $label is a string
21
+ $label = 'test';
22
+ return $label;
23
+ }
24
+ add_filter( 'gwolle_gb_author_email_label', 'my_gwolle_gb_author_email_label', 10, 1 );
25
+
docs/filters/gwolle_gb_author_email_prefill.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
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
+
9
+ <code><?php add_filter( 'gwolle_gb_author_email_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_email_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_email_prefill', 'my_gwolle_gb_author_email_prefill', 10, 1 );
25
+
docs/filters/gwolle_gb_author_link_rel.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_link_rel"</b> filter is used to change the rel attribute of author links that were entered by the user.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_link_rel', '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_link_rel( $rel ) {
20
+ // default "nofollow"
21
+ return 'follow'; // Help out mr. spamalot
22
+ }
23
+ add_filter( 'gwolle_gb_author_link_rel', 'my_gwolle_gb_author_link_rel' );
24
+
docs/filters/gwolle_gb_author_link_to_buddypress.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_link_to_buddypress"</b> filter is used to not link to the BuddyPress profile of the user,
6
+ but to link to the website address that was entered by the user.
7
+
8
+ You can use this filter as:
9
+
10
+ <code><?php add_filter( 'gwolle_gb_author_link_to_buddypress', 'filter_function_name' ) ?></code>
11
+
12
+ Where 'filter_function_name' is the function WordPress should call when the filter is being used.
13
+
14
+ '''filter_function_name''' should be a unique function name. It cannot match any other function name already declared.
15
+
16
+
17
+ ==Examples==
18
+
19
+
20
+ function my_gwolle_gb_author_link_to_buddypress( $link_to_buddypress ) {
21
+ // Do not link to buddypress, but to entered website address.
22
+ return false;
23
+ }
24
+ add_filter( 'gwolle_gb_author_link_to_buddypress', 'my_gwolle_gb_author_link_to_buddypress' );
25
+
docs/filters/gwolle_gb_author_name_html.txt ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_name_html"</b> filter is used to change the text of the label for the input for antispam at the frontend. It is used for the Custom antispam question and the CAPTCHA.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_name_html', '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_name_html( $author_name_html ) {
20
+ // $author_name_html is a string
21
+ $author_name = gwolle_gb_sanitize_output( trim( $entry->get_author_name() ) );
22
+
23
+ // Registered User gets italic font-style
24
+ $author_id = $entry->get_author_id();
25
+ $is_moderator = gwolle_gb_is_moderator( $author_id );
26
+ if ( $is_moderator ) {
27
+ $author_name_html = '<i>' . $author_name . '</i>';
28
+ } else {
29
+ $author_name_html = $author_name;
30
+ }
31
+
32
+ // Link to author email.
33
+ $author_email = trim( $entry->get_author_email() );
34
+ if ($author_email) {
35
+ $author_name_html = '<a href="mailto:' . $author_email . '"
36
+ title="Email ' . $author_name . '">' . $author_name_html . '</a>';
37
+ }
38
+
39
+ return $author_name_html;
40
+
41
+ }
42
+ add_filter( 'gwolle_gb_author_name_html', 'my_gwolle_gb_author_name_html', 10, 2 );
43
+
docs/filters/gwolle_gb_author_name_label.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_name_label"</b> filter is used to change the text of the label for the input of the author name at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_name_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_name_label( $label ) {
20
+ // $label is a string
21
+ $label = 'test';
22
+ return $label;
23
+ }
24
+ add_filter( 'gwolle_gb_author_name_label', 'my_gwolle_gb_author_name_label', 10, 1 );
25
+
docs/filters/gwolle_gb_author_name_prefill.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
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
+
9
+ <code><?php add_filter( 'gwolle_gb_author_name_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_name_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_name_prefill', 'my_gwolle_gb_author_name_prefill', 10, 1 );
25
+
docs/filters/gwolle_gb_author_origin_label.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_origin_label"</b> filter is used to change the text of the label for the input of the author origin at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_origin_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_origin_label( $label ) {
20
+ // $label is a string
21
+ $label = 'test';
22
+ return $label;
23
+ }
24
+ add_filter( 'gwolle_gb_author_origin_label', 'my_gwolle_gb_author_origin_label', 10, 1 );
25
+
docs/filters/gwolle_gb_author_website_label.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_website_label"</b> filter is used to change the text of the label for the input of the author website at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_website_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_website_label( $label ) {
20
+ // $label is a string
21
+ $label = 'test';
22
+ return $label;
23
+ }
24
+ add_filter( 'gwolle_gb_author_website_label', 'my_gwolle_gb_author_website_label', 10, 1 );
25
+
docs/filters/gwolle_gb_author_website_prefill.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
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
+
9
+ <code><?php add_filter( 'gwolle_gb_author_website_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_website_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_website_prefill', 'my_gwolle_gb_author_website_prefill', 10, 1 );
25
+
docs/filters/gwolle_gb_bbode_link_rel.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_bbcode_link_rel"</b> filter is used to change the rel attribute of BBcode links that were entered by the user.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_bbcode_link_rel', '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_bbcode_link_rel( $rel ) {
20
+ // default "nofollow"
21
+ return 'follow'; // Help out mr. spamalot
22
+ }
23
+ add_filter( 'gwolle_gb_bbcode_link_rel', 'my_gwolle_gb_bbcode_link_rel' );
24
+
docs/filters/gwolle_gb_button.txt ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_button"</b> filter is used to change the text for the form button at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_button', '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( $button ) {
20
+ // $button is a string
21
+ $button = '
22
+ <div id="gwolle_gb_write_button">
23
+ <input type="button" value="&raquo; Write a new entry." />
24
+ </div>';
25
+
26
+ return $button;
27
+ }
28
+ add_filter( 'gwolle_gb_button', 'my_gwolle_gb_button', 10, 1 );
29
+
docs/filters/gwolle_gb_content_label.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
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
+
9
+ <code><?php add_filter( 'gwolle_gb_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_content_label( $label ) {
20
+ // $label is a string
21
+ $label = 'test';
22
+ return $label;
23
+ }
24
+ add_filter( 'gwolle_gb_content_label', 'my_gwolle_gb_content_label', 10, 1 );
25
+
docs/filters/gwolle_gb_entries_list_before.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entries_list_before"</b> filter is used to add html before the list of entries at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entries_list_before', '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_entries_list_before( $entries_html ) {
20
+ // $entries_html is a string
21
+ $entries_html .= 'Added string';
22
+ return $entries_html;
23
+ }
24
+ add_filter( 'gwolle_gb_entries_list_before', 'my_gwolle_gb_entries_list_before', 10, 1 );
25
+
docs/filters/gwolle_gb_entries_list_class.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entries_list_class"</b> filter is used to change the class attribute of the entry list in the frontend. You can for example use it in combination with a masonry.js layout.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entries_list_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_entries_list_class( $classes ) {
20
+ // $classes is a string
21
+ $classes .= ' grid'; // Add to it or use str_replace. Mind the space.
22
+ return $classes;
23
+ }
24
+ add_filter( 'gwolle_gb_entries_list_class', 'my_gwolle_gb_entries_list_class', 10, 1 );
25
+
docs/filters/gwolle_gb_entries_read.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entries_read"</b> filter is used to edit the output for all entry at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entries_read', '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_entries_read( $entries_html ) {
20
+ // $entries_html is a string
21
+ $old = 'Old String';
22
+ $new = 'New String';
23
+ $entries_html = str_replace( $old, $new, $entries_html );
24
+ return $entries_html;
25
+ }
26
+ add_filter( 'gwolle_gb_entries_read', 'my_gwolle_gb_entries_read', 10, 1 );
27
+
docs/filters/gwolle_gb_entry_class.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_class"</b> filter is used to change the class attribute of each entry in the frontend list. You can for example use it in combination with a masonry.js layout.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_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_entry_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_entry_class', 'my_gwolle_gb_entry_class', 10, 1 );
25
+
docs/filters/gwolle_gb_entry_metabox_lines.txt ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_metabox_lines"</b> filter is used to add "lines" to the metabox that hovers topright in each entry in the frontend. By default there is only an "Edit" link inside for moderators.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_metabox_lines', '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
+ Make sure you wrap your "line" inside a div with the gb-metabox-line class, like in the example below.
16
+
17
+ ==Examples==
18
+
19
+
20
+ /*
21
+ * Edit Link for Moderators
22
+ */
23
+ function my_gwolle_gb_entry_metabox_lines_edit_link( $gb_metabox, $entry ) {
24
+ if ( function_exists('current_user_can') && current_user_can('moderate_comments') ) {
25
+ $gb_metabox .= '
26
+ <div class="gb-metabox-line">
27
+ <a class="gwolle_gb_edit_link" href="' . admin_url('admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&amp;entry_id=' . $entry->get_id() ) . '" title="' . __('Edit entry', 'gwolle-gb') . '">' . __('Edit', 'gwolle-gb') . '</a>
28
+ </div>';
29
+ }
30
+ return $gb_metabox;
31
+ }
32
+ add_filter( 'gwolle_gb_entry_metabox_lines', 'my_gwolle_gb_entry_metabox_lines_edit_link', 90, 2 );
docs/filters/gwolle_gb_entry_read.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_read"</b> filter is used to edit each entry at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_read', '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_entry_read( $entry_html, $entry ) {
20
+ // $entry_html is a string
21
+ $old = 'Old String';
22
+ $new = 'New String';
23
+ $entry_html = str_replace( $old, $new, $entry_html );
24
+ return $entry_html;
25
+ }
26
+ add_filter( 'gwolle_gb_entry_read', 'my_gwolle_gb_entry_read', 10, 2 );
27
+
docs/filters/gwolle_gb_entry_read_add_after.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_read_add_after"</b> filter is used to add content after each entry at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_read_add_after', '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_entry_read_add_after($string, $entry) {
20
+ $string .= "Filter add after: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_entry_read_add_after', 'my_gwolle_gb_entry_read_add_after', 10, 2 );
24
+
docs/filters/gwolle_gb_entry_read_add_before.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_read_add_before"</b> filter is used to add content before each entry at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_read_add_before', '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_entry_read_add_before($string, $entry) {
20
+ $string .= "Filter add before: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_entry_read_add_before', 'my_gwolle_gb_entry_read_add_before', 10, 2 );
24
+
docs/filters/gwolle_gb_entry_read_add_content.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_read_add_content"</b> filter is used to add content to each entry at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_read_add_content', '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_entry_read_add_content($string, $entry) {
20
+ $string .= "Filter add content: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_entry_read_add_content', 'my_gwolle_gb_entry_read_add_content', 10, 2 );
24
+
docs/filters/gwolle_gb_entry_read_add_content_before.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_read_add_content_before"</b> filter is used to add before the content to each entry at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_read_add_content_before', '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_entry_read_add_content_before($string, $entry) {
20
+ $string .= "Filter add content: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_entry_read_add_content_before', 'my_gwolle_gb_entry_read_add_content_before', 10, 2 );
24
+
docs/filters/gwolle_gb_entry_save.txt ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_save"</b> filter is used to change the entry before saving it to the database.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_save', '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_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');
26
+
docs/filters/gwolle_gb_entry_widget_add_after.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_widget_add_after"</b> filter is used to add content after each entry in the widget in the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_widget_add_after', '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_entry_widget_add_after($string, $entry) {
20
+ $string .= "Filter add after: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_entry_widget_add_after', 'my_gwolle_gb_entry_widget_add_after', 10, 2 );
24
+
docs/filters/gwolle_gb_entry_widget_add_before.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_widget_add_before"</b> filter is used to add content before each entry in the widget in the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_widget_add_before', '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_entry_widget_add_before($string, $entry) {
20
+ $string .= "Filter add before: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_entry_widget_add_before', 'my_gwolle_gb_entry_widget_add_before', 10, 2 );
24
+
docs/filters/gwolle_gb_entry_widget_add_content.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_entry_widget_add_content"</b> filter is used to add content to each entry in the widget at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_entry_widget_add_content', '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_entry_widget_add_content($string, $entry) {
20
+ $string .= "Filter add content: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_entry_widget_add_content', 'my_gwolle_gb_entry_widget_add_content', 10, 2 );
24
+
docs/filters/gwolle_gb_error_fields.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_error_fields"</b> filter is used to edit the form fields that generated an error frontend after submitting the form.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_error_fields', '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_error_fields( $error_fields ) {
20
+ // $error_fields is an array
21
+ $error_fields[] = 'Custom Field';
22
+ return $error_fields;
23
+ }
24
+ add_filter( 'gwolle_gb_error_fields', 'my_gwolle_gb_error_fields', 10, 1 );
25
+
docs/filters/gwolle_gb_errors.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_errors"</b> filter is used to check if errors were found when submitting the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_errors', '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_errors( $bool ) {
20
+ $bool = false; // never show an error.
21
+ return $bool;
22
+ }
23
+ add_filter( 'gwolle_gb_errors', 'my_gwolle_gb_errors', 10, 1 );
24
+
docs/filters/gwolle_gb_formdata.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_formdata"</b> filter is used to edit the data that was entered in the form, and will be shown again when there was an error.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_formdata', '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_formdata( $formdata ) {
20
+ // $formdata is an array
21
+ $formdata[] = 'Custom Data';
22
+ return $formdata;
23
+ }
24
+ add_filter( 'gwolle_gb_formdata', 'my_gwolle_gb_formdata', 10, 1 );
25
+
docs/filters/gwolle_gb_get_emoji.txt ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_get_emoji"</b> filter is used to change the list of emoji shown on textarea/bbcode/emoji at the frontend form.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_get_emoji', '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_get_emoji( $emoji ) {
20
+ // $emoji is a string.
21
+
22
+ // Add a character.
23
+ $emoji .= '<a title="✌️" class="gwolle_gb_emoji_50 noslimstat">✌️</a>';
24
+
25
+ // Replace a character.
26
+ $old = '<a title="🏝" class="gwolle_gb_emoji_65 noslimstat">🏝</a>g';
27
+ $new = '<a title="✌️" class="gwolle_gb_emoji_50 noslimstat">✌️</a>';
28
+ $emoji = str_replace( $old, $new, $emoji );
29
+
30
+ return $emoji;
31
+ }
32
+ add_filter( 'gwolle_gb_get_emoji', 'my_gwolle_gb_get_emoji', 10, 1 );
33
+
docs/filters/gwolle_gb_get_entries_sql.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_get_entries_sql"</b> filter is used to edit the SQL query.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_get_entries_sql', '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
+ // Set ordering to ASC.
19
+ function my_gwolle_gb_get_entries_sql( $sql, $sql_nonprepared, $values, $args ) {
20
+ // $sql is a string
21
+ $old = 'DESC';
22
+ $new = 'ASC';
23
+ $sql = str_replace( $old, $new, $sql );
24
+ return $sql;
25
+ }
26
+ add_filter( 'gwolle_gb_get_entries_sql', 'my_gwolle_gb_get_entries_sql', 10, 4 );
27
+
docs/filters/gwolle_gb_get_moderators_role__in.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_get_moderators_role__in"</b> filter is used to edit the roles of possible moderators.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_get_moderators_role__in', '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_get_moderators_role__in( $roles ) {
20
+ // $roles is an array
21
+ $roles[] = 'Custom_Role';
22
+ return $roles;
23
+ }
24
+ add_filter( 'gwolle_gb_get_moderators_role__in', 'my_gwolle_gb_get_moderators_role__in', 10, 1 );
25
+
docs/filters/gwolle_gb_mail_author_on_admin_reply_subject.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_mail_author_on_admin_reply"</b> filter is used to set the subject for the notification email the author gets when an admin_reply has been added.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_mail_author_on_admin_reply', '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_mail_author_on_admin_reply( $subject ) {
20
+ // this is the default;
21
+ $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . __('Admin Reply', 'gwolle-gb');
22
+ return $subject;
23
+ }
24
+ add_filter( 'gwolle_gb_mail_author_on_admin_reply', 'my_gwolle_gb_mail_author_on_admin_reply', 10,1 );
25
+
docs/filters/gwolle_gb_mail_author_subject.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_mail_author"</b> filter is used to set the subject for the notification email to the entry author.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_mail_author', '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_mail_author( $subject ) {
20
+ // this is the default;
21
+ $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . __('New Guestbook Entry', 'gwolle-gb');
22
+ return $subject;
23
+ }
24
+ add_filter( 'gwolle_gb_mail_author', 'my_gwolle_gb_mail_author', 10,1 );
25
+
docs/filters/gwolle_gb_mail_moderator_subject.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_mail_moderators_subject"</b> filter is used to set the subject for the moderator notification email.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_mail_moderators_subject', '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_mail_moderators_subject( $subject ) {
20
+ // this is the default;
21
+ $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . __('New Guestbook Entry', 'gwolle-gb');
22
+ return $subject;
23
+ }
24
+ add_filter( 'gwolle_gb_mail_moderators_subject', 'my_gwolle_gb_mail_moderators_subject', 10,1 );
25
+
docs/filters/gwolle_gb_messages.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_messages"</b> filter is used to edit the messages that are shown on the frontend after submitting the form.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_messages', '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_messages( $messages ) {
20
+ // $messages is an array
21
+ $messages[] = 'Custom Message';
22
+ return $messages;
23
+ }
24
+ add_filter( 'gwolle_gb_messages', 'my_gwolle_gb_messages', 10, 1 );
25
+
docs/filters/gwolle_gb_multisite_uninstall.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_multisite_uninstall"</b> filter is used to do an uninstall for MultiSite.
6
+ Take Note: This will do an uninstall on all sites.
7
+
8
+ You can use this filter as:
9
+
10
+ <code><?php add_filter( 'gwolle_gb_multisite_uninstall', 'filter_function_name' ) ?></code>
11
+
12
+ Where 'filter_function_name' is the function WordPress should call when the filter is being used.
13
+
14
+ '''filter_function_name''' should be a unique function name. It cannot match any other function name already declared.
15
+
16
+
17
+ ==Examples==
18
+
19
+
20
+ function my_gwolle_gb_multisite_uninstall( $do_uninstall ) {
21
+ // $do_uninstall is a boolean
22
+ $do_uninstall = true;
23
+
24
+ return $do_uninstall;
25
+ }
26
+ add_filter( 'gwolle_gb_multisite_uninstall', 'my_gwolle_gb_multisite_uninstall', 10, 2 );
27
+
docs/filters/gwolle_gb_read_no_entries.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_read_no_entries"</b> filter is used to change the text for when there are no entries, at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_read_no_entries', '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_read_no_entries( $entry_html ) {
20
+ // $entry_html is a string
21
+ $entry_html = '(no entries yet)';
22
+ return $entry_html;
23
+ }
24
+ add_filter( 'gwolle_gb_read_no_entries', 'my_gwolle_gb_read_no_entries', 10, 1 );
25
+
docs/filters/gwolle_gb_read_num_entries.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_read_num_entries"</b> filter is used to change the number of entries at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_read_num_entries', '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_read_num_entries( $num_entries, $shortcode_atts ) {
20
+ // $num_entries is an int
21
+ $num_entries = 30;
22
+ return $num_entries;
23
+ }
24
+ add_filter( 'gwolle_gb_read_num_entries', 'my_gwolle_gb_read_num_entries', 10, 2 );
25
+
docs/filters/gwolle_gb_rss_nr_entries.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_rss_nr_entries"</b> filter is used to change the number of entries shown in the RSS Feed.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_rss_nr_entries', '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_rss_nr_entries( $number ) {
20
+ $number = 10;
21
+ return $number;
22
+ }
23
+ add_filter( 'gwolle_gb_rss_nr_entries', 'my_gwolle_gb_rss_nr_entries', 10, 1 );
24
+
docs/filters/gwolle_gb_set_author_ip.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_set_author_ip"</b> filter is used to change if the author ip address will be saved. Default is true, which means it will get saved.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_set_author_ip', '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_set_author_ip( $bool ) {
20
+ $bool = false;
21
+ return $bool;
22
+ }
23
+ add_filter( 'gwolle_gb_set_author_ip', 'my_gwolle_gb_set_author_ip', 10, 1 );
24
+
docs/filters/gwolle_gb_widget.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_widget"</b> filter is used to edit the output for the widget at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_widget', '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_widget( $widget_html ) {
20
+ // $widget_html is a string
21
+ $old = 'Old String';
22
+ $new = 'New String';
23
+ $widget_html = str_replace( $old, $new, $widget_html );
24
+ return $widget_html;
25
+ }
26
+ add_filter( 'gwolle_gb_widget', 'my_gwolle_gb_widget', 10, 1 );
27
+
docs/filters/gwolle_gb_widget_item_class.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_widget_item_class"</b> filter is used to change the class attribute of each entry in the frontend widget. You can for example use it in combination with a masonry.js layout.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_widget_item_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_widget_item_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_widget_item_class', 'my_gwolle_gb_widget_item_class', 10, 1 );
25
+
docs/filters/gwolle_gb_widget_list_class.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_widget_list_class"</b> filter is used to change the class attribute of the entry list in the frontend widget. You can for example use it in combination with a masonry.js layout.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_widget_list_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_widget_list_class( $classes ) {
20
+ // $classes is a string
21
+ $classes .= ' grid'; // Add to it or use str_replace. Mind the space.
22
+ return $classes;
23
+ }
24
+ add_filter( 'gwolle_gb_widget_list_class', 'my_gwolle_gb_widget_list_class', 10, 1 );
25
+
docs/filters/gwolle_gb_wpadmin_url.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_wpadmin_url"</b> filter is used to set the wpadmin URL for the notification email.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_wpadmin_url', '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_wpadmin_url( $wpadmin_url ) {
20
+ // this is the default;
21
+ $wpadmin_url = admin_url( '/admin.php' );
22
+ return $wpadmin_url;
23
+ }
24
+ add_filter( 'gwolle_gb_wpadmin_url', 'my_gwolle_gb_wpadmin_url', 10,1 );
25
+
docs/filters/gwolle_gb_write.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write"</b> filter is used to edit the output of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write', '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_write( $form_html ) {
20
+ // $form_html is a string
21
+ $old = 'Old String';
22
+ $new = 'New String';
23
+ $form_html = str_replace( $old, $new, $form_html );
24
+ return $form_html;
25
+ }
26
+ add_filter( 'gwolle_gb_write', 'my_gwolle_gb_write', 10, 1 );
27
+
docs/filters/gwolle_gb_write_add_after.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after"</b> filter is used to add content at the end of the form at the frontend. This will be placed below the Submit button.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after', '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_write_add_after( $string ) {
20
+ $string .= "Filter add after form: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after', 'my_gwolle_gb_write_add_after', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_antispam.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_antispam"</b> filter is used to add content after the antispam field of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_antispam', '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_write_add_after_antispam( $string ) {
20
+ $string .= "Filter add after antispam: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_antispam', 'my_gwolle_gb_write_add_after_antispam', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_captcha.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_captcha"</b> filter is used to add content after the captcha field of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_captcha', '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_write_add_after_captcha( $string ) {
20
+ $string .= "Filter add after captcha: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_captcha', 'my_gwolle_gb_write_add_after_captcha', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_content.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_content"</b> filter is used to add content after the content field of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_content', '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_write_add_after_content( $string ) {
20
+ $string .= "Filter add after content: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_content', 'my_gwolle_gb_write_add_after_content', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_email.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_email"</b> filter is used to add content after the email field of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_email', '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_write_add_after_email( $string ) {
20
+ $string .= "Filter add after email: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_email', 'my_gwolle_gb_write_add_after_email', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_name.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_name"</b> filter is used to add content after the name field of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_name', '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_write_add_after_name( $string ) {
20
+ $string .= "Filter add after name: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_name', 'my_gwolle_gb_write_add_after_name', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_origin.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_origin"</b> filter is used to add content after the origin field of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_origin', '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_write_add_after_origin( $string ) {
20
+ $string .= "Filter add after origin: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_origin', 'my_gwolle_gb_write_add_after_origin', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_submit.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_submit"</b> filter is used to add content after the submit button of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_submit', '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_write_add_after_submit( $string ) {
20
+ $string .= "Filter add after submit: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_submit', 'my_gwolle_gb_write_add_after_submit', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_after_website.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_after_website"</b> filter is used to add content after the website field of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_after_website', '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_write_add_after_website( $string ) {
20
+ $string .= "Filter add after website: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_after_website', 'my_gwolle_gb_write_add_after_website', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_before.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_before"</b> filter is used to add content at the start of the form at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_before', '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_write_add_before( $string ) {
20
+ $string .= "Filter add before form: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_before', 'my_gwolle_gb_write_add_before', 10,1 );
24
+
docs/filters/gwolle_gb_write_add_form.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_write_add_form"</b> filter is used to add content at the end of the form at the frontend. This is added before the Submit button.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_write_add_form', '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_write_add_form( $string ) {
20
+ $string .= "Filter add at end of form: " . $entry->get_id();
21
+ return $string;
22
+ }
23
+ add_filter( 'gwolle_gb_write_add_form', 'my_gwolle_gb_write_add_form', 10,1 );
24
+
docs/filters/index.html ADDED
File without changes
docs/import_example/gwolle_gb_export_1.6.9_2016-05-06_20-38.csv ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ id,author_name,author_email,author_origin,author_website,author_ip,author_host,content,datetime,isspam,ischecked,istrash,admin_reply
2
+ 1,"Marcel Pol",marcel@timelord.nl,Zwolle,http://timelord.nl,192.168.1.254,timelord.nl,"Test entry, delete if you wish.",1462567132,0,0,1,"Just a test"
3
+ 2,"Marcel Pol",marcel@timelord.nl,Zwolle,http://timelord.nl,192.168.1.254,timelord.nl,"Test entry, delete if you wish. 😄👍👌",1462567132,0,0,1,"Just a test"
docs/import_example/index.html ADDED
File without changes
docs/index.html ADDED
File without changes
frontend/css/gwolle-gb-frontend.css ADDED
@@ -0,0 +1,377 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /*
3
+ * CSS for the Frontend of Gwolle Guestbook plugin.
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
+
25
+
26
+ /* Write section */
27
+
28
+ #gwolle_gb form#gwolle_gb_new_entry {
29
+ margin-top: 20px;
30
+ text-align: left;
31
+ }
32
+
33
+ .gwolle_gb_float .label,
34
+ .gwolle_gb_float .input {
35
+ float: left;
36
+ }
37
+
38
+ /* Overwrite shizzle from fancy themes */
39
+ body .gwolle_gb_content a {
40
+ box-shadow: none !important; /* Fuck Twenty Sixteen and Twenty Seventeen */
41
+ }
42
+
43
+ /* Submit AJAX icon */
44
+ #gwolle_gb .gwolle_gb_submit_ajax_icon,
45
+ #gwolle_gb .gwolle_gb_addon_preview_ajax_icon {
46
+ display: none;
47
+ background-image: url("../images/loading.gif");
48
+ background-position: 4px 4px;
49
+ background-repeat: no-repeat;
50
+ margin-left: 10px;
51
+ padding: 13px 20px 13px 20px;
52
+ }
53
+
54
+ /* Messages / Notices */
55
+
56
+ #gwolle_gb #gwolle_gb_messages {
57
+ border-left: 4px solid #7ad03a;
58
+ box-shadow: 2px 2px 2px 0 rgba(0, 0, 0, 0.1);
59
+ padding: 1px 12px;
60
+ margin: 5px 0 15px;
61
+ }
62
+ #gwolle_gb #gwolle_gb_messages.error {
63
+ border-left: 4px solid #dd3d36;
64
+ }
65
+
66
+ #gwolle_gb .error p, div.updated p {
67
+ margin: 0.5em 0;
68
+ padding: 2px;
69
+ }
70
+
71
+ #gwolle_gb form#gwolle_gb_new_entry .input.error, /* recaptcha */
72
+ #gwolle_gb form#gwolle_gb_new_entry input.error,
73
+ #gwolle_gb form#gwolle_gb_new_entry textarea.error {
74
+ border: 1px solid #dd3d36;
75
+ }
76
+
77
+ #gwolle_gb .label,
78
+ #gwolle_gb .input {
79
+ vertical-align: top;
80
+ }
81
+ #gwolle_gb .label {
82
+ width: 30%;
83
+ }
84
+ #gwolle_gb .input {
85
+ width: 40%;
86
+ border: 0px;
87
+ }
88
+ #gwolle_gb .input input[type="text"],
89
+ #gwolle_gb .input input[type="email"],
90
+ #gwolle_gb .input input[type="url"],
91
+ #gwolle_gb .input textarea {
92
+ width: 100%;
93
+ }
94
+ #gwolle_gb .input textarea {
95
+ height: 150px;
96
+ }
97
+ #gwolle_gb .clearBoth {
98
+ clear: both;
99
+ }
100
+
101
+
102
+ /* Page Navigation */
103
+
104
+ #gwolle_gb .page-navigation {
105
+ width: 100%;
106
+ text-align: right;
107
+ padding: 8px 0;
108
+ }
109
+
110
+ #gwolle_gb .page-navigation a,
111
+ #gwolle_gb .page-navigation span {
112
+ display: inline-block;
113
+ padding: 0px 6px;
114
+ margin-left: 0;
115
+ color: #555;
116
+ border: 1px solid #efefef;
117
+ text-decoration: none;
118
+ box-shadow: none;
119
+ }
120
+
121
+ /* Current page */
122
+ #gwolle_gb .page-navigation a:hover,
123
+ #gwolle_gb .page-navigation span.current {
124
+ background: #eee;
125
+ color: #000;
126
+ opacity: 0.8;
127
+ border: 1px solid #ddd;
128
+ }
129
+ #gwolle_gb .page-navigation span.dots {
130
+ padding: 0px 3px;
131
+ color: #555;
132
+ }
133
+
134
+ /* Border-radius for whole thing. */
135
+ #gwolle_gb .page-navigation a:first-child,
136
+ #gwolle_gb .page-navigation span:first-child {
137
+ border-radius: 3px 0 0 3px;
138
+ }
139
+ #gwolle_gb .page-navigation a:last-child,
140
+ #gwolle_gb .page-navigation span:last-child {
141
+ border-radius: 0 3px 3px 0;
142
+ }
143
+
144
+
145
+ /* Read section */
146
+
147
+ #gwolle_gb #gwolle_gb_entries {
148
+ position: relative;
149
+ }
150
+
151
+ #gwolle_gb .admin-entry {
152
+ color: #333;
153
+ background-color: #e6e6e6;
154
+ background-repeat: repeat-x;
155
+ background-image: -moz-linear-gradient(top, #f4f4f4, #e6e6e6);
156
+ background-image: -ms-linear-gradient(top, #f4f4f4, #e6e6e6);
157
+ background-image: -webkit-linear-gradient(top, #f4f4f4, #e6e6e6);
158
+ background-image: -o-linear-gradient(top, #f4f4f4, #e6e6e6);
159
+ background-image: linear-gradient(top, #f4f4f4, #e6e6e6);
160
+ padding-left: 5px;
161
+ }
162
+ #gwolle_gb .admin-entry a {
163
+ color: #666;
164
+ }
165
+ #gwolle_gb .gb-entry {
166
+ position: relative;
167
+ border-top: 1px #ddd solid;
168
+ padding: 10px 0;
169
+ margin: 0;
170
+ }
171
+ #gwolle_gb .gwolle_gb_first {
172
+ border-width: 0px;
173
+ }
174
+ #gwolle_gb .gb-entry-count_0 {
175
+ border-bottom: 1px #ddd solid; /* Ajax added entry */
176
+ }
177
+
178
+ #gwolle_gb .gb-entry .gb-author-info,
179
+ #gwolle_gb .gb-entry .gb-entry-content {
180
+ display: block;
181
+ }
182
+ #gwolle_gb .gb-entry .gb-author-info .gb-author-avatar {
183
+ margin: 0 0 8px 0;
184
+ }
185
+ #gwolle_gb .gb-entry .gb-author-info .gb-author-name {
186
+ padding-left: 10px;
187
+ font-weight: bold;
188
+ }
189
+ #gwolle_gb .gb-entry .gb-entry-content {
190
+ padding-left: 10px;
191
+ }
192
+
193
+
194
+ /* Metabox */
195
+
196
+ div.gb-metabox-handle {
197
+ position: absolute;
198
+ top: 0;
199
+ right: 0;
200
+ padding: 10px;
201
+ cursor: pointer;
202
+ font-weight: bold;
203
+ }
204
+ div.gb-metabox {
205
+ position: absolute;
206
+ top: 0;
207
+ right: 30px;
208
+ width: 200px;
209
+ box-sizing: border-box;
210
+ z-index: 10;
211
+ }
212
+ #gwolle_gb .gb-entry-count_1 div.gb-metabox {
213
+ border-top: 1px #ddd solid;
214
+ }
215
+ div.gb-metabox-line {
216
+ width: 100%;
217
+ padding: 2px 5px;
218
+ border-right: 1px #ddd solid;
219
+ border-bottom: 1px #ddd solid;
220
+ border-left: 1px #ddd solid;
221
+ background-color: #fff;
222
+ box-sizing: border-box;
223
+ }
224
+ div.gb-metabox-line a {
225
+ text-decoration: none;
226
+ box-shadow: none;
227
+ }
228
+ div.gb-metabox-line.gb-metabox-line-ajax {
229
+ display: none;
230
+ background-image: url("../images/loading.gif");
231
+ background-position: 155px 2px;
232
+ background-repeat: no-repeat;
233
+ min-height: 34px;
234
+ }
235
+ div.gb-metabox-line.gb-social-media-share {
236
+ padding: 0;
237
+ }
238
+ div.gb-metabox-line.gb-social-media-share a {
239
+ float: left;
240
+ }
241
+
242
+
243
+
244
+ /* Admin Reply */
245
+
246
+ #gwolle_gb .gb-entry-admin_reply {
247
+ margin: 10px 0 0 40px;
248
+ padding: 4px 10px 4px 10px;
249
+ border-left: 1px solid #ddd;
250
+ }
251
+
252
+
253
+ /* Infinite Scroll */
254
+
255
+ #gwolle_gb .gwolle_gb_load_message {
256
+ display: none;
257
+ background-color: #eee;
258
+ background-image: url("../images/loading.gif");
259
+ background-position: 10px 13px;
260
+ background-repeat: no-repeat;
261
+ border: 1px solid #333;
262
+ border-radius: 5px;
263
+ bottom: -72px;
264
+ color: #333;
265
+ font-weight: bold;
266
+ margin-left: 10px;
267
+ padding: 15px 20px 15px 52px;
268
+ position: absolute;
269
+ z-index: 5;
270
+ }
271
+ #gwolle_gb .gwolle_gb_end_message {
272
+ padding-left: 10px;
273
+ }
274
+
275
+
276
+ /* Widget */
277
+
278
+ li.gwolle_gb_widget {
279
+ border-bottom: 1px #ddd solid;
280
+ padding: 3px 0;
281
+ margin: 0;
282
+ }
283
+
284
+ p.gwolle_gb_link {
285
+ padding: 3px 0;
286
+ }
287
+
288
+
289
+ /* Widget Slider */
290
+
291
+ ul.gwolle_gb_widget_slider {
292
+ margin-left: 0;
293
+ }
294
+ ul.gwolle_gb_widget_slider .sss {
295
+ height: 0;
296
+ margin: 0;
297
+ padding: 0;
298
+ position: relative;
299
+ display: block;
300
+ overflow: hidden;
301
+ }
302
+
303
+ ul.gwolle_gb_widget_slider li:first-child,
304
+ li.gwolle_gb_widget.ssslide:first-child {
305
+ display: inline-block;
306
+ }
307
+ ul.gwolle_gb_widget_slider li {
308
+ display: none;
309
+ border-bottom: 0px solid #ddd;
310
+ }
311
+
312
+ li.gwolle_gb_widget.ssslide {
313
+ width: 100%;
314
+ margin: 0;
315
+ padding: 0;
316
+ position: absolute;
317
+ top: 0;
318
+ left: 0;
319
+ display: none;
320
+ overflow: hidden;
321
+ }
322
+
323
+ /* Admin Bar */
324
+
325
+ #wpadminbar #wp-admin-bar-gwolle-gb .ab-icon::before {
326
+ content: "";
327
+ top: 3px;
328
+ }
329
+
330
+
331
+ /* Form inside a widget */
332
+ .widget .gwolle_gb_float .label,
333
+ .widget .gwolle_gb_float .input,
334
+ .widget-area .gwolle_gb_float .label,
335
+ .widget-area .gwolle_gb_float .input {
336
+ float: none;
337
+ }
338
+ .widget #gwolle_gb .label,
339
+ .widget-area #gwolle_gb .label {
340
+ width: 80%;
341
+ }
342
+ .widget #gwolle_gb .input,
343
+ .widget-area #gwolle_gb .input {
344
+ width: 80%;
345
+ }
346
+
347
+
348
+ /* Responsive Design */
349
+
350
+ @media only screen and (max-width: 820px) {
351
+ .gwolle_gb_float .label,
352
+ .gwolle_gb_float .input {
353
+ float: none;
354
+ }
355
+ #gwolle_gb .label {
356
+ width: 80%;
357
+ }
358
+ #gwolle_gb .input {
359
+ width: 80%;
360
+ }
361
+ }
362
+
363
+
364
+ /* Add-On */
365
+ div.gwolle-gb-starrating-result {
366
+ position: absolute;
367
+ top: 0;
368
+ right: 30px;
369
+ width: 200px;
370
+ padding: 3px 6px;
371
+ box-sizing: border-box;
372
+ z-index: 5;
373
+ }
374
+ div.gb-social-media-share img {
375
+ float: left;
376
+ cursor: pointer;
377
+ }
frontend/css/index.html ADDED
File without changes
frontend/gb-ajax-captcha.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * Handles AJAX request from Gwolle-GB Captcha AJAX check.
5
+ * Expects that the plugin Really Simple Captcha is enabled.
6
+ *
7
+ * Returns 'true' or 'false', if the CAPTCHA is filled in correctly.
8
+ * This response is not required for validation and being able to submit the form.
9
+ */
10
+
11
+
12
+ // No direct calls to this script
13
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
14
+ die('No direct calls allowed!');
15
+ }
16
+
17
+
18
+ function gwolle_gb_captcha_ajax_callback() {
19
+
20
+ if ( class_exists('ReallySimpleCaptcha') ) {
21
+
22
+ check_ajax_referer( 'gwolle_gb_captcha_ajax', 'security' );
23
+
24
+ // Instantiate class
25
+ $gwolle_gb_captcha = new ReallySimpleCaptcha();
26
+
27
+ // This variable holds the CAPTCHA image prefix, which corresponds to the correct answer
28
+ $gwolle_gb_captcha_prefix = ( isset( $_POST['gwolle_gb_captcha_prefix'] ) ? $_POST['gwolle_gb_captcha_prefix'] : false );
29
+
30
+ // This variable holds the CAPTCHA response, entered by the user
31
+ $gwolle_gb_captcha_code = ( isset( $_POST['gwolle_gb_captcha_code'] ) ? $_POST['gwolle_gb_captcha_code'] : false );
32
+
33
+ // This variable will hold the result of the CAPTCHA validation. Set to 'false' until CAPTCHA validation passes
34
+ $gwolle_gb_captcha_correct = ( $gwolle_gb_captcha->check( $gwolle_gb_captcha_prefix, $gwolle_gb_captcha_code ) ? 'true' : 'false' );
35
+
36
+ // Return response
37
+ echo $gwolle_gb_captcha_correct;
38
+
39
+ }
40
+
41
+ die(); // this is required to return a proper result
42
+
43
+ }
44
+ add_action( 'wp_ajax_gwolle_gb_captcha_ajax', 'gwolle_gb_captcha_ajax_callback' );
45
+ add_action( 'wp_ajax_nopriv_gwolle_gb_captcha_ajax', 'gwolle_gb_captcha_ajax_callback' );
frontend/gb-ajax-infinite_scroll.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Handles AJAX request from Gwolle-GB for Infinite Scroll.
12
+ * Will only be used if Infinite Scroll is enabled instead of default pagination.
13
+ *
14
+ * Prints html with a list of entries.
15
+ */
16
+ function gwolle_gb_infinite_scroll_callback() {
17
+
18
+ $output = '';
19
+
20
+ $pageNum = 1;
21
+ if ( isset($_POST['pageNum']) && is_numeric($_POST['pageNum']) ) {
22
+ $pageNum = intval($_POST['pageNum']);
23
+ }
24
+
25
+ $book_id = 1;
26
+ if ( isset($_POST['book_id']) && is_numeric($_POST['book_id']) ) {
27
+ $book_id = intval($_POST['book_id']);
28
+ }
29
+ $shortcode_atts['book_id'] = $book_id;
30
+
31
+ $num_entries = (int) get_option('gwolle_gb-entriesPerPage', 20);
32
+ $num_entries = (int) apply_filters( 'gwolle_gb_read_num_entries', $num_entries, $shortcode_atts );
33
+
34
+ if ( $pageNum == 1 ) {
35
+ $offset = 0;
36
+ } else {
37
+ $offset = ( $pageNum - 1 ) * $num_entries;
38
+ }
39
+
40
+
41
+ /* Get the entries for the frontend */
42
+ $entries = gwolle_gb_get_entries(
43
+ array(
44
+ 'offset' => $offset,
45
+ 'num_entries' => $num_entries,
46
+ 'checked' => 'checked',
47
+ 'trash' => 'notrash',
48
+ 'spam' => 'nospam',
49
+ 'book_id' => $book_id
50
+ )
51
+ );
52
+
53
+
54
+ /* Entries from the template */
55
+ if ( !is_array($entries) || empty($entries) ) {
56
+ $output .= 'false';
57
+ } else {
58
+
59
+ // Try to load and require_once the template from the themes folders.
60
+ if ( locate_template( array('gwolle_gb-entry.php'), true, true ) == '') {
61
+
62
+ $output .= '<!-- Gwolle-GB Entry: Default Template Loaded -->
63
+ ';
64
+
65
+ // No template found and loaded in the theme folders.
66
+ // Load the template from the plugin folder.
67
+ require_once( GWOLLE_GB_DIR . '/frontend/gwolle_gb-entry.php' );
68
+
69
+ } else {
70
+
71
+ $output .= '<!-- Gwolle-GB Entry: Custom Template Loaded -->
72
+ ';
73
+
74
+ }
75
+
76
+ $counter = $offset;
77
+ $first = false;
78
+ foreach ($entries as $entry) {
79
+ $counter++;
80
+
81
+ // Run the function from the template to get the entry.
82
+ $entry_output = gwolle_gb_entry_template( $entry, $first, $counter );
83
+
84
+ // Add a filter for each entry, so devs can add or remove parts.
85
+ $output .= apply_filters( 'gwolle_gb_entry_read', $entry_output, $entry );
86
+
87
+ }
88
+
89
+ }
90
+
91
+ echo $output;
92
+
93
+ die(); // this is required to return a proper result
94
+
95
+ }
96
+ add_action( 'wp_ajax_gwolle_gb_infinite_scroll', 'gwolle_gb_infinite_scroll_callback' );
97
+ add_action( 'wp_ajax_nopriv_gwolle_gb_infinite_scroll', 'gwolle_gb_infinite_scroll_callback' );
frontend/gb-form-ajax.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * Handles AJAX request from Gwolle-GB AJAX Submit.
5
+ *
6
+ * Returns json encoded data, which is handled with by frontend/js/script.js.
7
+ */
8
+
9
+
10
+ // No direct calls to this script
11
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
12
+ die('No direct calls allowed!');
13
+ }
14
+
15
+
16
+ function gwolle_gb_form_ajax_callback() {
17
+
18
+ $saved = gwolle_gb_frontend_posthandling();
19
+
20
+ $data = array();
21
+ $data['saved'] = $saved;
22
+ $data['gwolle_gb_messages'] = gwolle_gb_get_messages();
23
+ $data['gwolle_gb_errors'] = gwolle_gb_get_errors();
24
+ $data['gwolle_gb_error_fields'] = gwolle_gb_get_error_fields();
25
+
26
+ if ( $saved ) {
27
+ $entry = new gwolle_gb_entry();
28
+ $result = $entry->load( $saved );
29
+ if ( $result ) {
30
+ if ( $entry->get_isspam() === 1 || $entry->get_istrash() === 1 || $entry->get_ischecked() === 0 ) {
31
+
32
+ // Invisible.
33
+
34
+ } else {
35
+
36
+ $data['entry'] = gwolle_gb_single_view( $entry, true, 0 );
37
+
38
+ }
39
+ }
40
+ }
41
+
42
+ echo json_encode( $data );
43
+ die(); // This is required to return a proper result.
44
+
45
+ }
46
+ add_action( 'wp_ajax_gwolle_gb_form_ajax', 'gwolle_gb_form_ajax_callback' );
47
+ add_action( 'wp_ajax_nopriv_gwolle_gb_form_ajax', 'gwolle_gb_form_ajax_callback' );
frontend/gb-form-posthandling.php ADDED
@@ -0,0 +1,441 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // No direct calls to this script
4
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
5
+ die('No direct calls allowed!');
6
+ }
7
+
8
+
9
+ /*
10
+ * Handle the $_POST for the Frontend on a new entry.
11
+ * Use this action, since $post is populated and we can use get_the_ID().
12
+ */
13
+ function gwolle_gb_handle_post() {
14
+ if ( !is_admin() ) {
15
+ // Frontend Handling of $_POST, only one form
16
+ if ( isset($_POST['gwolle_gb_function']) && $_POST['gwolle_gb_function'] == 'add_entry' ) {
17
+ gwolle_gb_frontend_posthandling();
18
+ }
19
+ }
20
+ }
21
+ add_action('wp', 'gwolle_gb_handle_post');
22
+
23
+
24
+ /*
25
+ * Save new entries to the database, when valid.
26
+ * Handle $_POST and check and save entry.
27
+ *
28
+ * global vars used:
29
+ * $gwolle_gb_formdata: the data that was submitted, and will be used to fill the form for resubmit.
30
+ *
31
+ * returns entry->ID when saved.
32
+ * returns false when not saved, and should return the form with an error.
33
+ */
34
+ function gwolle_gb_frontend_posthandling() {
35
+
36
+ if ( isset($_POST['gwolle_gb_function']) && $_POST['gwolle_gb_function'] == 'add_entry' ) {
37
+
38
+ // Option to allow only logged-in users to post. Don't show the form if not logged-in.
39
+ if ( !is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true' ) {
40
+ gwolle_gb_add_message( '<p class="require_login"><strong>' . esc_html__('Submitting a new guestbook entry is only allowed for logged-in users.', 'gwolle-gb') . '</strong></p>', true, false);
41
+ return false;
42
+ }
43
+
44
+
45
+ /*
46
+ * Collect data from the Form
47
+ */
48
+ $gwolle_gb_formdata = array(); // used to set the data in the entry
49
+ $form_setting = gwolle_gb_get_setting( 'form' );
50
+
51
+ /* Name */
52
+ if ( isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true' ) {
53
+ if (isset($_POST['gwolle_gb_author_name'])) {
54
+ $author_name = trim($_POST['gwolle_gb_author_name']);
55
+ $author_name = gwolle_gb_maybe_encode_emoji( $author_name, 'author_name' );
56
+ $gwolle_gb_formdata['author_name'] = $author_name;
57
+ gwolle_gb_add_formdata( 'author_name', $author_name );
58
+ if ( $author_name == "" ) {
59
+ if ( isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true' ) {
60
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your name is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_name'); // mandatory
61
+ }
62
+ }
63
+ } else {
64
+ if ( isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true' ) {
65
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your name is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_name'); // mandatory
66
+ }
67
+ }
68
+ }
69
+
70
+ /* City / Origin */
71
+ if ( isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true' ) {
72
+ if (isset($_POST['gwolle_gb_author_origin'])) {
73
+ $author_origin = trim($_POST['gwolle_gb_author_origin']);
74
+ $author_origin = gwolle_gb_maybe_encode_emoji( $author_origin, 'author_origin' );
75
+ $gwolle_gb_formdata['author_origin'] = $author_origin;
76
+ gwolle_gb_add_formdata( 'author_origin', $author_origin );
77
+ if ( $author_origin == "" ) {
78
+ if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) {
79
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your origin is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_origin'); // mandatory
80
+ }
81
+ }
82
+ } else {
83
+ if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) {
84
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your origin is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_origin'); // mandatory
85
+ }
86
+ }
87
+ }
88
+
89
+ /* Email */
90
+ if ( isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true' ) {
91
+ if (isset($_POST['gwolle_gb_author_email'])) {
92
+ $author_email = trim($_POST['gwolle_gb_author_email']);
93
+ $gwolle_gb_formdata['author_email'] = $author_email;
94
+ gwolle_gb_add_formdata( 'author_email', $author_email );
95
+ if ( filter_var( $author_email, FILTER_VALIDATE_EMAIL ) ) {
96
+ // Valid Email address.
97
+ } else if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) {
98
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your e-mail address is not filled in correctly, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_email'); // mandatory
99
+ }
100
+ } else {
101
+ if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) {
102
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your e-mail address is not filled in correctly, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_email'); // mandatory
103
+ }
104
+ }
105
+ } else {
106
+ if (isset($_POST['gwolle_gb_author_email'])) {
107
+ $author_email = trim($_POST['gwolle_gb_author_email']);
108
+ $gwolle_gb_formdata['author_email'] = $author_email;
109
+ gwolle_gb_add_formdata( 'author_email', $author_email );
110
+ }
111
+ }
112
+
113
+ /* Website / Homepage */
114
+ if ( isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true' ) {
115
+ if (isset($_POST['gwolle_gb_author_website'])) {
116
+ $author_website = trim($_POST['gwolle_gb_author_website']);
117
+ $gwolle_gb_formdata['author_website'] = $author_website;
118
+ gwolle_gb_add_formdata( 'author_website', $author_website );
119
+ $pattern = '/^http/';
120
+ if ( !preg_match($pattern, $author_website, $matches) ) {
121
+ $author_website = "http://" . $author_website;
122
+ }
123
+ if ( filter_var( $author_website, FILTER_VALIDATE_URL ) ) {
124
+ // Valid Website URL.
125
+ } else if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) {
126
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your website is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_website'); // mandatory
127
+ }
128
+ } else {
129
+ if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) {
130
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('Your website is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'author_website'); // mandatory
131
+ }
132
+ }
133
+ }
134
+
135
+ /* Message */
136
+ if ( isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true' ) {
137
+ if (isset($_POST['gwolle_gb_content'])) {
138
+ $content = trim($_POST['gwolle_gb_content']);
139
+ if ( $content == "" ) {
140
+ if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) {
141
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('There is no message, even though it is mandatory.', 'gwolle-gb') . '</strong></p>',true, 'content'); // mandatory
142
+ }
143
+ } else {
144
+ $content = gwolle_gb_maybe_encode_emoji( $content, 'content' );
145
+ $gwolle_gb_formdata['content'] = $content;
146
+ gwolle_gb_add_formdata( 'content', $content );
147
+ }
148
+ } else {
149
+ if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) {
150
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('There is no message, even though it is mandatory.', 'gwolle-gb') . '</strong></p>',true, 'content'); // mandatory
151
+ }
152
+ }
153
+ }
154
+
155
+ /* Custom Anti-Spam */
156
+ if ( isset($form_setting['form_antispam_enabled']) && $form_setting['form_antispam_enabled'] === 'true' ) {
157
+ $antispam_question = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-question') );
158
+ $antispam_answer = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-answer') );
159
+
160
+ if ( isset($antispam_question) && strlen($antispam_question) > 0 && isset($antispam_answer) && strlen($antispam_answer) > 0 ) {
161
+ if ( isset($_POST['gwolle_gb_antispam_answer']) && trim($_POST['gwolle_gb_antispam_answer']) == trim($antispam_answer) ) {
162
+ //echo "You got it!";
163
+ } else {
164
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('The anti-spam question was not answered correctly, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'antispam_answer'); // mandatory
165
+ }
166
+ }
167
+ if ( isset($_POST['gwolle_gb_antispam_answer']) ) {
168
+ $antispam = trim($_POST['gwolle_gb_antispam_answer']);
169
+ $gwolle_gb_formdata['antispam_answer'] = $antispam;
170
+ gwolle_gb_add_formdata( 'antispam_answer', $antispam );
171
+ }
172
+ }
173
+
174
+ /* CAPTCHA */
175
+ if ( isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true' ) {
176
+ if ( class_exists('ReallySimpleCaptcha') ) {
177
+ $gwolle_gb_captcha = new ReallySimpleCaptcha();
178
+ // This variable holds the CAPTCHA image prefix, which corresponds to the correct answer
179
+ $gwolle_gb_captcha_prefix = $_POST['gwolle_gb_captcha_prefix'];
180
+ // This variable holds the CAPTCHA response, entered by the user
181
+ $gwolle_gb_captcha_code = $_POST['gwolle_gb_captcha_code'];
182
+ // Validate the CAPTCHA response
183
+ $gwolle_gb_captcha_correct = $gwolle_gb_captcha->check( $gwolle_gb_captcha_prefix, $gwolle_gb_captcha_code );
184
+ // If CAPTCHA validation fails (incorrect value entered in CAPTCHA field) mark comment as spam.
185
+ if ( true != $gwolle_gb_captcha_correct ) {
186
+ gwolle_gb_add_message( '<p class="error_fields"><strong>' . esc_html__('The CAPTCHA was not filled in correctly, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'captcha_code' );
187
+ //gwolle_gb_add_message( '<p style="display_:none"><strong>' . $gwolle_gb_captcha_correct . '</strong></p>' );
188
+ } else {
189
+ // verified!
190
+ //gwolle_gb_add_message( '<p class="error_fields"><strong>Verified.</strong></p>', false, false );
191
+ }
192
+ // Clean up the tmp directory.
193
+ $gwolle_gb_captcha->cleanup();
194
+ }
195
+ }
196
+
197
+
198
+ /* New Instance of gwolle_gb_entry. */
199
+ $entry = new gwolle_gb_entry();
200
+
201
+
202
+ /* If there are errors, stop here and return false */
203
+ $gwolle_gb_error_fields = gwolle_gb_get_error_fields();
204
+ if ( is_array( $gwolle_gb_error_fields ) && !empty( $gwolle_gb_error_fields ) ) {
205
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
206
+ return false; // no need to check and save
207
+ }
208
+
209
+
210
+ /* Set the data in the instance */
211
+ $set_data = $entry->set_data( $gwolle_gb_formdata );
212
+ if ( ! $set_data ) {
213
+ // Data is not set in the Instance, something happened
214
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
215
+ gwolle_gb_add_message( '<p class="set_data"><strong>' . esc_html__('There were errors submitting your guestbook entry.', 'gwolle-gb') . '</strong></p>', true, false );
216
+ return false;
217
+ }
218
+
219
+
220
+ /* Akismet: check for spam and set accordingly */
221
+ $marked_by_akismet = false;
222
+ $isspam = gwolle_gb_akismet( $entry, 'comment-check' );
223
+ if ( $isspam ) {
224
+ // Returned true, so considered spam
225
+ $entry->set_isspam(true);
226
+ $marked_by_akismet = true;
227
+ if (get_option( 'gwolle_gb-refuse-spam', 'false') == 'true') {
228
+ gwolle_gb_add_message( '<p class="refuse-spam-akismet"><strong>' . esc_html__('Your entry was marked as spam. Please try again.', 'gwolle-gb') . '</strong></p>', true, false );
229
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
230
+ return false;
231
+ }
232
+ }
233
+
234
+
235
+ /* Stop Forum Spam: check for spam and set accordingly */
236
+ $marked_by_sfs = false;
237
+ if ( get_option( 'gwolle_gb-sfs', 'false') == 'true' ) {
238
+ $isspam = gwolle_gb_stop_forum_spam( $entry );
239
+ if ( $isspam ) {
240
+ // Returned true, so considered spam
241
+ $entry->set_isspam(true);
242
+ $marked_by_sfs = true;
243
+ if (get_option( 'gwolle_gb-refuse-spam', 'false') == 'true') {
244
+ gwolle_gb_add_message( '<p class="refuse-spam-sfs"><strong>' . esc_html__('Your entry was marked as spam. Please try again.', 'gwolle-gb') . '</strong></p>', true, false );
245
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
246
+ return false;
247
+ }
248
+ }
249
+ }
250
+
251
+
252
+ /* Honeypot: check for spam and set accordingly */
253
+ $marked_by_honeypot = false;
254
+ if ( isset($_POST["gwolle_gb_subject"]) && strlen($_POST["gwolle_gb_subject"]) > 0 ) {
255
+ // Input field was filled in, so considered spam
256
+ $entry->set_isspam(true);
257
+ $marked_by_honeypot = true;
258
+ if (get_option( 'gwolle_gb-refuse-spam', 'false') == 'true') {
259
+ gwolle_gb_add_message( '<p class="refuse-spam-honeypot"><strong>' . esc_html__('Your entry was marked as spam. Please try again.', 'gwolle-gb') . '</strong></p>', true, false );
260
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
261
+ return false;
262
+ }
263
+ }
264
+
265
+
266
+ /* Nonce: check for spam and set accordingly */
267
+ $marked_by_nonce = false;
268
+ if (get_option( 'gwolle_gb-nonce', 'true') == 'true') {
269
+ $verified = wp_verify_nonce( $_REQUEST['gwolle_gb_wpnonce'], 'gwolle_gb_add_entry' );
270
+ if ( $verified == false ) {
271
+ // Nonce is invalid, so considered spam
272
+ $entry->set_isspam(true);
273
+ $marked_by_nonce = true;
274
+ if (get_option( 'gwolle_gb-refuse-spam', 'false') == 'true') {
275
+ gwolle_gb_add_message( '<p class="refuse-spam-nonce"><strong>' . esc_html__('Your entry was marked as spam. Please try again.', 'gwolle-gb') . '</strong></p>', true, false );
276
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
277
+ return false;
278
+ }
279
+ }
280
+ }
281
+
282
+
283
+ /* If Moderation is off, set it to "ischecked" */
284
+ $user_id = get_current_user_id(); // Returns 0 if no current user.
285
+ if ( get_option('gwolle_gb-moderate-entries', 'true') == 'true' ) {
286
+ // Moderation, only set to checked for moderators.
287
+ if ( gwolle_gb_is_moderator($user_id) ) {
288
+ $entry->set_ischecked( true );
289
+ } else {
290
+ $entry->set_ischecked( false );
291
+ }
292
+ } else {
293
+ // No moderation, set to checked.
294
+ $entry->set_ischecked( true );
295
+ }
296
+
297
+
298
+ /* Scan for long and abusive text. */
299
+ $marked_by_longtext = false;
300
+ if ( get_option( 'gwolle_gb-longtext', 'true') == 'true' ) {
301
+ // Check for abusive content (too long words). Set it to unchecked, so manual moderation is needed.
302
+ $maxlength = 100;
303
+ $words = explode( " ", $entry->get_content() );
304
+ foreach ( $words as $word ) {
305
+ $pattern = '/^href=http/';
306
+ if ( preg_match($pattern, $word, $matches) ) {
307
+ continue;
308
+ }
309
+ $pattern = '/^href=ftp/';
310
+ if ( preg_match($pattern, $word, $matches) ) {
311
+ continue;
312
+ }
313
+ $pattern = '/^\[img\]http/';
314
+ if ( preg_match($pattern, $word, $matches) ) {
315
+ continue;
316
+ }
317
+ if ( strlen($word) > $maxlength ) {
318
+ $entry->set_ischecked( false );
319
+ $marked_by_longtext = true;
320
+ break;
321
+ }
322
+ }
323
+ $maxlength = 60;
324
+ $words = explode( " ", $entry->get_author_name() );
325
+ foreach ( $words as $word ) {
326
+ if ( strlen($word) > $maxlength ) {
327
+ $entry->set_ischecked( false );
328
+ $marked_by_longtext = true;
329
+ break;
330
+ }
331
+ }
332
+ }
333
+
334
+
335
+ /* Check for logged in user, and set the userid as author_id, just in case someone is also admin, or gets promoted some day */
336
+ $entry->set_author_id( $user_id );
337
+
338
+
339
+ /*
340
+ * Network Information
341
+ */
342
+ $set_author_ip = apply_filters( 'gwolle_gb_set_author_ip', true );
343
+ if ( $set_author_ip ) {
344
+ $entry->set_author_ip( $_SERVER['REMOTE_ADDR'] );
345
+ $entry->set_author_host( gethostbyaddr( $_SERVER['REMOTE_ADDR'] ) );
346
+ }
347
+
348
+
349
+ /*
350
+ * Book ID
351
+ */
352
+ if ( isset( $_POST['gwolle_gb_book_id'] ) ) {
353
+ $book_id = (int) $_POST['gwolle_gb_book_id'];
354
+ gwolle_gb_add_formdata( 'book_id', $book_id );
355
+ }
356
+ if ( $book_id < 1 ) {
357
+ $book_id = 1;
358
+ gwolle_gb_add_formdata( 'book_id', $book_id );
359
+ }
360
+ $entry->set_book_id( $book_id );
361
+
362
+
363
+ /*
364
+ * Check for double post using email field and content.
365
+ * Only if content is mandatory.
366
+ */
367
+ if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) {
368
+ $entries = gwolle_gb_get_entries(array(
369
+ 'email' => $entry->get_author_email(),
370
+ 'book_id' => $entry->get_book_id()
371
+ ));
372
+ if ( is_array( $entries ) && !empty( $entries ) ) {
373
+ foreach ( $entries as $entry_email ) {
374
+ if ( $entry_email->get_content() == $entry->get_content() ) {
375
+ // Match is double entry
376
+ gwolle_gb_add_message( '<p class="double_post"><strong>' . esc_html__('Double post: An entry with the data you entered has already been saved.', 'gwolle-gb') . '</strong></p>', true, 'content' );
377
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
378
+ return false;
379
+ }
380
+ }
381
+ }
382
+ }
383
+
384
+
385
+ /*
386
+ * Save the Entry
387
+ */
388
+ $save = $entry->save();
389
+
390
+ //if ( WP_DEBUG ) { echo "save: "; var_dump($save); }
391
+
392
+
393
+ if ( $save ) {
394
+ // We have been saved to the Database.
395
+
396
+ gwolle_gb_add_message( '<p class="entry_saved">' . esc_html__('Thank you for your entry.','gwolle-gb') . '</p>', false, false );
397
+ if ( $entry->get_ischecked() == 0 || $entry->get_isspam() == 1 ) {
398
+ gwolle_gb_add_message( '<p>' . esc_html__('We will review it and unlock it in a short while.','gwolle-gb') . '</p>', false, false );
399
+ }
400
+
401
+
402
+ /*
403
+ * No Log for the Entry needed, it has a default post date in the Entry itself.
404
+ * Only log when something specific happened:
405
+ */
406
+ if ( $marked_by_akismet ) {
407
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-by-akismet' );
408
+ }
409
+ if ( $marked_by_sfs ) {
410
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-by-sfs' );
411
+ }
412
+ if ( $marked_by_honeypot ) {
413
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-by-honeypot' );
414
+ }
415
+ if ( $marked_by_nonce ) {
416
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-by-nonce' );
417
+ }
418
+ if ( $marked_by_longtext ) {
419
+ gwolle_gb_add_log_entry( $entry->get_id(), 'marked-by-longtext' );
420
+ }
421
+
422
+
423
+ /*
424
+ * Hooks gwolle_gb_clear_cache(), gwolle_gb_mail_moderators() and gwolle_gb_mail_author().
425
+ */
426
+ do_action( 'gwolle_gb_save_entry_frontend', $entry );
427
+
428
+ return $entry->get_id();
429
+
430
+ } else {
431
+ // We have not been saved to the Database.
432
+
433
+ do_action( 'gwolle_gb_notsaved_entry_frontend', $entry );
434
+
435
+ gwolle_gb_add_message( '<p class="entry_notsaved">' . esc_html__('Sorry, something went wrong with saving your entry. Please contact a site admin.','gwolle-gb') . '</p>', true, false );
436
+
437
+ return false;
438
+
439
+ }
440
+ }
441
+ }
frontend/gb-form.php ADDED
@@ -0,0 +1,502 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // No direct calls to this script
4
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
5
+ die('No direct calls allowed!');
6
+ }
7
+
8
+
9
+ /*
10
+ * Build up a form for the user, including possible error_fields
11
+ */
12
+
13
+ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
14
+
15
+ /* Get the messages and formdata from the form handling in posthandling.php. */
16
+ $gwolle_gb_messages = gwolle_gb_get_messages();
17
+ $gwolle_gb_errors = gwolle_gb_get_errors();
18
+ $gwolle_gb_error_fields = gwolle_gb_get_error_fields();
19
+ $gwolle_gb_formdata = gwolle_gb_get_formdata();
20
+
21
+ $html5 = current_theme_supports( 'html5' );
22
+ $output = '';
23
+
24
+
25
+ // Set data up for prefilling an already submitted form that had errors.
26
+ $name = '';
27
+ $origin = '';
28
+ $email = '';
29
+ $website = '';
30
+ $antispam = '';
31
+ $content = '';
32
+
33
+ // Auto-fill the form if the user is already logged in.
34
+ $user_id = get_current_user_id(); // returns 0 if no current user
35
+ if ( $user_id > 0 ) {
36
+ $userdata = get_userdata( $user_id );
37
+ if ( is_object( $userdata ) ) {
38
+ if ( isset( $userdata->display_name ) ) {
39
+ $name = $userdata->display_name;
40
+ } else {
41
+ $name = $userdata->user_login;
42
+ }
43
+ $email = $userdata->user_email;
44
+ $website = $userdata->user_url;
45
+
46
+ $name = apply_filters( 'gwolle_gb_author_name_prefill', $name);
47
+ $email = apply_filters( 'gwolle_gb_author_email_prefill', $email);
48
+ $website = apply_filters( 'gwolle_gb_author_website_prefill', $website);
49
+ }
50
+ }
51
+
52
+ // Only show old data when there are errors.
53
+ if ( $gwolle_gb_errors ) {
54
+ if ( is_array($gwolle_gb_formdata) && !empty($gwolle_gb_formdata) ) {
55
+ if (isset($gwolle_gb_formdata['author_name'])) {
56
+ $name = stripslashes($gwolle_gb_formdata['author_name']);
57
+ }
58
+ if (isset($gwolle_gb_formdata['author_origin'])) {
59
+ $origin = stripslashes($gwolle_gb_formdata['author_origin']);
60
+ }
61
+ if (isset($gwolle_gb_formdata['author_email'])) {
62
+ $email = stripslashes($gwolle_gb_formdata['author_email']);
63
+ }
64
+ if (isset($gwolle_gb_formdata['author_website'])) {
65
+ $website = stripslashes($gwolle_gb_formdata['author_website']);
66
+ }
67
+ if (isset($gwolle_gb_formdata['antispam_answer'])) {
68
+ $antispam = stripslashes($gwolle_gb_formdata['antispam_answer']);
69
+ }
70
+ if (isset($gwolle_gb_formdata['content'])) {
71
+ $content = stripslashes($gwolle_gb_formdata['content']);
72
+ }
73
+ }
74
+ }
75
+
76
+
77
+ /*
78
+ * Handle Messaging to the user
79
+ */
80
+
81
+ $messageclass = '';
82
+ if ( $gwolle_gb_errors ) {
83
+ $messageclass = 'error';
84
+ }
85
+ $output .= '<div id="gwolle_gb_messages_top_container">';
86
+ if ( isset($gwolle_gb_messages) && $gwolle_gb_messages != '') {
87
+ $output .= '<div id="gwolle_gb_messages" class="' . $messageclass . '">';
88
+ $output .= $gwolle_gb_messages;
89
+ $output .= '</div>';
90
+ }
91
+ $output .= '</div>';
92
+
93
+
94
+ // Option to allow only logged-in users to post. Don't show the form if not logged-in. We still see the messages above.
95
+ if ( !is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true' ) {
96
+ $output .= '
97
+ <div id="gwolle_gb_new_entry">
98
+ <h3>' . esc_html__('Log in to post an entry', 'gwolle-gb') . '</h3>';
99
+
100
+ $args = array(
101
+ 'echo' => false,
102
+ 'redirect' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
103
+ );
104
+ $output .= wp_login_form( $args );
105
+
106
+ $output .= wp_register('', '', false);
107
+
108
+ $output .= '</div>';
109
+
110
+ return $output;
111
+ }
112
+
113
+
114
+ /*
115
+ * Button 'write a new entry.'
116
+ * Only show when shortcode [gwolle_gb] is used and there are no errors.
117
+ */
118
+
119
+ $formclass = '';
120
+ if ( ( $shortcode_atts['button'] == 'true' ) && ( ! $gwolle_gb_errors ) ) {
121
+ $button = '
122
+ <div id="gwolle_gb_write_button">
123
+ <input type="button" class="button btn btn-default" value="&raquo; ' . /* translators: Button text */ esc_attr__('Write a new entry.', 'gwolle-gb') . '" />
124
+ </div>';
125
+ $output .= apply_filters( 'gwolle_gb_button', $button);
126
+
127
+ $formclass .= 'gwolle_gb_hide';
128
+ }
129
+
130
+
131
+ /*
132
+ * Build up Form including possible error_fields
133
+ */
134
+
135
+ $form_setting = gwolle_gb_get_setting( 'form' );
136
+ $autofocus = ' autofocus="autofocus"';
137
+ if ( get_option( 'gwolle_gb-labels_float', 'true' ) === 'true' ) {
138
+ $formclass .= ' gwolle_gb_float';
139
+ }
140
+ if ( get_option( 'gwolle_gb-form_ajax', 'true' ) === 'true' ) {
141
+ $formclass .= ' gwolle_gb_form_ajax';
142
+ }
143
+
144
+ // Form for submitting new entries
145
+ $header = gwolle_gb_sanitize_output( get_option('gwolle_gb-header', false) );
146
+ if ( $header == false ) {
147
+ $header = esc_html__('Write a new entry for the Guestbook', 'gwolle-gb');
148
+ }
149
+
150
+ $output .= '
151
+ <form id="gwolle_gb_new_entry" action="#" method="POST" class="' . $formclass . '">
152
+ <h3>' . $header . '</h3>
153
+ <input type="hidden" name="gwolle_gb_function" id="gwolle_gb_function" value="add_entry" />';
154
+
155
+ // The book_id from the shortcode, to be used by the posthandling function again.
156
+ $output .= '<input type="hidden" name="gwolle_gb_book_id" id="gwolle_gb_book_id" value="' . $shortcode_atts['book_id'] . '" />';
157
+
158
+ // Use this filter to just add something
159
+ $output .= apply_filters( 'gwolle_gb_write_add_before', '' );
160
+
161
+
162
+ /* Name */
163
+ if ( isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true' ) {
164
+ $label = apply_filters( 'gwolle_gb_author_name_label', esc_html__('Name', 'gwolle-gb') );
165
+ $output .= '<div class="gwolle_gb_author_name">
166
+ <div class="label"><label for="gwolle_gb_author_name" class="text-info">' . $label . ':';
167
+ if ( isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true' ) { $output .= ' *';}
168
+ $output .= '</label></div>
169
+ <div class="input"><input class="wp-exclude-emoji ';
170
+ if (in_array('author_name', $gwolle_gb_error_fields)) {
171
+ $output .= ' error';
172
+ }
173
+ $output .= '" value="' . $name . '" type="text" name="gwolle_gb_author_name" id="gwolle_gb_author_name" placeholder="' . $label . '"';
174
+ if ( in_array('author_name', $gwolle_gb_error_fields) && isset($autofocus) ) {
175
+ $output .= $autofocus;
176
+ $autofocus = false; // disable it for the next error.
177
+ }
178
+ if ( isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true' ) {
179
+ $output .= ' required';
180
+ }
181
+ $output .= ' /></div>
182
+ </div>
183
+ <div class="clearBoth">&nbsp;</div>';
184
+ }
185
+ $output .= apply_filters( 'gwolle_gb_write_add_after_name', '' );
186
+
187
+
188
+ /* City / Origin */
189
+ if ( isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true' ) {
190
+ $label = apply_filters( 'gwolle_gb_author_origin_label', esc_html__('City', 'gwolle-gb') );
191
+ $output .= '<div class="gwolle_gb_author_origin">
192
+ <div class="label"><label for="gwolle_gb_author_origin" class="text-info">' . $label . ':';
193
+ if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) { $output .= ' *';}
194
+ $output .= '</label></div>
195
+ <div class="input"><input class="wp-exclude-emoji ';
196
+ if (in_array('author_origin', $gwolle_gb_error_fields)) {
197
+ $output .= ' error';
198
+ }
199
+ $output .= '" value="' . $origin . '" type="text" name="gwolle_gb_author_origin" id="gwolle_gb_author_origin" placeholder="' . $label . '"';
200
+ if ( in_array('author_origin', $gwolle_gb_error_fields) && isset($autofocus) ) {
201
+ $output .= $autofocus;
202
+ $autofocus = false; // disable it for the next error.
203
+ }
204
+ if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) {
205
+ $output .= ' required';
206
+ }
207
+ $output .= ' /></div>
208
+ </div>
209
+ <div class="clearBoth">&nbsp;</div>';
210
+ }
211
+ $output .= apply_filters( 'gwolle_gb_write_add_after_origin', '' );
212
+
213
+ /* Email */
214
+ if ( isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true' ) {
215
+ $label = apply_filters( 'gwolle_gb_author_email_label', esc_html__('Email', 'gwolle-gb') );
216
+ $output .= '<div class="gwolle_gb_author_email">
217
+ <div class="label"><label for="gwolle_gb_author_email" class="text-info">' . $label . ':';
218
+ if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) { $output .= ' *';}
219
+ $output .= '</label></div>
220
+ <div class="input"><input class="';
221
+ if (in_array('author_email', $gwolle_gb_error_fields)) {
222
+ $output .= ' error';
223
+ }
224
+ $output .= '" value="' . $email . '" ' . ($html5 ? 'type="email"' : 'type="text"') . ' name="gwolle_gb_author_email" id="gwolle_gb_author_email" placeholder="' . $label . '" ';
225
+ if ( in_array('author_email', $gwolle_gb_error_fields) && isset($autofocus) ) {
226
+ $output .= $autofocus;
227
+ $autofocus = false; // disable it for the next error.
228
+ }
229
+ if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) {
230
+ $output .= ' required';
231
+ }
232
+ $output .= ' /></div>
233
+ </div>
234
+ <div class="clearBoth">&nbsp;</div>';
235
+ } else {
236
+ if ( isset($email) && strlen($email) > 0 ) {
237
+ // For logged in users, just save the email anyway.
238
+ $output .= '<input class="" value="' . $email . '" type="hidden" name="gwolle_gb_author_email" id="gwolle_gb_author_email" />';
239
+ }
240
+ }
241
+ $output .= apply_filters( 'gwolle_gb_write_add_after_email', '' );
242
+
243
+ /* Website / Homepage */
244
+ if ( isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true' ) {
245
+ $label = apply_filters( 'gwolle_gb_author_website_label', esc_html__('Website', 'gwolle-gb') );
246
+ $output .= '<div class="gwolle_gb_author_website">
247
+ <div class="label"><label for="gwolle_gb_author_website" class="text-info">' . $label . ':';
248
+ if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) { $output .= ' *';}
249
+ $output .= '</label></div>
250
+ <div class="input"><input class="';
251
+ if (in_array('author_website', $gwolle_gb_error_fields)) {
252
+ $output .= ' error';
253
+ }
254
+ $output .= '" value="' . $website . '" ' . ($html5 ? 'type="url"' : 'type="text"') . ' name="gwolle_gb_author_website" id="gwolle_gb_author_website" placeholder="' . $label . '" ';
255
+ if ( in_array('author_website', $gwolle_gb_error_fields) && isset($autofocus) ) {
256
+ $output .= $autofocus;
257
+ $autofocus = false; // disable it for the next error.
258
+ }
259
+ if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) {
260
+ $output .= ' required';
261
+ }
262
+ // $output .= ' pattern="[a-z0-9]+\.[a-z]$"'; // try to relax validation to work without http://
263
+ $output .= ' /></div>
264
+ </div>
265
+ <div class="clearBoth">&nbsp;</div>';
266
+ }
267
+ $output .= apply_filters( 'gwolle_gb_write_add_after_website', '' );
268
+
269
+ /* Honeypot */
270
+ if (get_option( 'gwolle_gb-honeypot', 'true') == 'true') {
271
+ $output .= '
272
+ <div class="gwolle_gb_subject" style="display:none;">
273
+ <div class="label"><label for="gwolle_gb_subject" class="text-primary">' . esc_html__('Do not fill this in', 'gwolle-gb') . ':
274
+ </label></div>
275
+ <div class="input">
276
+ <input value="" type="text" name="gwolle_gb_subject" id="gwolle_gb_subject" placeholder="" />
277
+ </div>
278
+ </div>
279
+ <div class="clearBoth"></div>';
280
+ }
281
+
282
+ /* Content */
283
+ if ( isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true' ) {
284
+ $label = apply_filters( 'gwolle_gb_content_label', esc_html__('Guestbook entry', 'gwolle-gb') );
285
+ $output .= '<div class="gwolle_gb_content">
286
+ <div class="label"><label for="gwolle_gb_content" class="text-info">' . $label . ':';
287
+ if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) { $output .= ' *';}
288
+ $output .= '</label></div>
289
+ <div class="input"><textarea name="gwolle_gb_content" id="gwolle_gb_content" class="wp-exclude-emoji ';
290
+ if (in_array('content', $gwolle_gb_error_fields)) {
291
+ $output .= ' error';
292
+ }
293
+ $output .= '" placeholder="' . $label . '" ';
294
+ if ( in_array('content', $gwolle_gb_error_fields) && isset($autofocus) ) {
295
+ $output .= $autofocus;
296
+ $autofocus = false; // disable it for the next error.
297
+ }
298
+ if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) {
299
+ $output .= ' required';
300
+ }
301
+ $output .= ' >' . $content . '</textarea>';
302
+
303
+ if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
304
+ // BBcode and MarkItUp
305
+ wp_enqueue_script( 'markitup', plugins_url('markitup/jquery.markitup.js', __FILE__), 'jquery', GWOLLE_GB_VER, false );
306
+ wp_enqueue_script( 'markitup_set', plugins_url('markitup/set.js', __FILE__), 'jquery', GWOLLE_GB_VER, false );
307
+ wp_enqueue_style('gwolle_gb_markitup_css', plugins_url('markitup/style.css', __FILE__), false, GWOLLE_GB_VER, 'screen');
308
+
309
+ $dataToBePassed = array(
310
+ 'bold' => /* translators: MarkItUp menu item */ esc_html__('Bold', 'gwolle-gb' ),
311
+ 'italic' => /* translators: MarkItUp menu item */ esc_html__('Italic', 'gwolle-gb' ),
312
+ 'bullet' => /* translators: MarkItUp menu item */ esc_html__('Bulleted List', 'gwolle-gb' ),
313
+ 'numeric' => /* translators: MarkItUp menu item */ esc_html__('Numeric List', 'gwolle-gb' ),
314
+ 'picture' => /* translators: MarkItUp menu item */ esc_html__('Picture', 'gwolle-gb' ),
315
+ 'source' => /* translators: MarkItUp menu item */ esc_html__('Source', 'gwolle-gb' ),
316
+ 'link' => /* translators: MarkItUp menu item */ esc_html__('Link', 'gwolle-gb' ),
317
+ 'linktext' => /* translators: MarkItUp menu item */ esc_html__('Your text to link...', 'gwolle-gb' ),
318
+ 'clean' => /* translators: MarkItUp menu item */ esc_html__('Clean', 'gwolle-gb' ),
319
+ 'emoji' => /* translators: MarkItUp menu item */ esc_html__('Emoji', 'gwolle-gb' )
320
+ );
321
+ wp_localize_script( 'markitup_set', 'gwolle_gb_localize', $dataToBePassed );
322
+
323
+ // Emoji symbols
324
+ $output .= '<div class="gwolle_gb_emoji gwolle_gb_hide">';
325
+ $output .= gwolle_gb_get_emoji();
326
+ $output .= '</div>';
327
+ }
328
+
329
+ $output .= '</div>'; // .input
330
+
331
+ $output .= '
332
+ </div>
333
+ <div class="clearBoth">&nbsp;</div>';
334
+ }
335
+ $output .= apply_filters( 'gwolle_gb_write_add_after_content', '' );
336
+
337
+ /* Custom Anti-Spam */
338
+ if ( isset($form_setting['form_antispam_enabled']) && $form_setting['form_antispam_enabled'] === 'true' ) {
339
+ $label = apply_filters( 'gwolle_gb_antispam_label', esc_html__('Anti-spam', 'gwolle-gb') );
340
+ $antispam_question = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-question') );
341
+ $antispam_answer = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-answer') );
342
+
343
+ if ( isset($antispam_question) && strlen($antispam_question) > 0 && isset($antispam_answer) && strlen($antispam_answer) > 0 ) {
344
+ $output .= '
345
+ <div class="gwolle_gb_antispam">
346
+ <div class="label">
347
+ <label for="gwolle_gb_antispam_answer" class="text-info">' . $label . ': *<br />
348
+ ' . esc_html__('Question:', 'gwolle-gb') . ' ' . $antispam_question . '</label>
349
+ </div>
350
+ <div class="input"><input class="';
351
+ if (in_array('antispam_answer', $gwolle_gb_error_fields)) {
352
+ $output .= ' error';
353
+ }
354
+ $output .= '" value="' . $antispam . '" type="text" name="gwolle_gb_antispam_answer" id="gwolle_gb_antispam_answer" placeholder="' . esc_attr__('Answer', 'gwolle-gb') . '" ';
355
+ if ( in_array('antispam_answer', $gwolle_gb_error_fields) && isset($autofocus) ) {
356
+ $output .= $autofocus;
357
+ $autofocus = false; // disable it for the next error.
358
+ }
359
+ $output .= ' required'; // always required.
360
+ $output .= ' />
361
+ </div>
362
+ </div>
363
+ <div class="clearBoth">&nbsp;</div>';
364
+ }
365
+ }
366
+ $output .= apply_filters( 'gwolle_gb_write_add_after_antispam', '' );
367
+
368
+ /* CAPTCHA */
369
+ if ( isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true' ) {
370
+ if ( class_exists('ReallySimpleCaptcha') ) {
371
+ // Disable page caching, we want a new CAPTCHA image each time.
372
+ if ( ! defined( 'DONOTCACHEPAGE' ) )
373
+ define( 'DONOTCACHEPAGE', 'true' );
374
+
375
+ // Instantiate the ReallySimpleCaptcha class, which will handle all of the heavy lifting
376
+ $gwolle_gb_captcha = new ReallySimpleCaptcha();
377
+
378
+ // Set Really Simple CAPTCHA Options
379
+ $gwolle_gb_captcha->chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
380
+ $gwolle_gb_captcha->char_length = '4';
381
+ $gwolle_gb_captcha->img_size = array( '72', '24' );
382
+ $gwolle_gb_captcha->fg = array( '0', '0', '0' );
383
+ $gwolle_gb_captcha->bg = array( '255', '255', '255' );
384
+ $gwolle_gb_captcha->font_size = '16';
385
+ $gwolle_gb_captcha->font_char_width = '15';
386
+ $gwolle_gb_captcha->img_type = 'png';
387
+ $gwolle_gb_captcha->base = array( '6', '18' );
388
+
389
+ // Generate random word and image prefix
390
+ $gwolle_gb_captcha_word = $gwolle_gb_captcha->generate_random_word();
391
+ $gwolle_gb_captcha_prefix = mt_rand();
392
+ // Generate CAPTCHA image
393
+ $gwolle_gb_captcha_image_name = $gwolle_gb_captcha->generate_image($gwolle_gb_captcha_prefix, $gwolle_gb_captcha_word);
394
+ // Define values for CAPTCHA fields
395
+ $gwolle_gb_captcha_image_url = content_url('plugins/really-simple-captcha/tmp/');
396
+ $gwolle_gb_captcha_image_src = $gwolle_gb_captcha_image_url . $gwolle_gb_captcha_image_name;
397
+ $gwolle_gb_captcha_image_width = $gwolle_gb_captcha->img_size[0];
398
+ $gwolle_gb_captcha_image_height = $gwolle_gb_captcha->img_size[1];
399
+ $gwolle_gb_captcha_field_size = $gwolle_gb_captcha->char_length;
400
+
401
+ // Enqueue and localize the frontend script for CAPTCHA.
402
+ wp_enqueue_script('gwolle_gb_captcha_js', plugins_url('js/captcha.js', __FILE__), 'jquery', GWOLLE_GB_VER, true );
403
+ $dataToBePassed = array(
404
+ // URL to wp-admin/admin-ajax.php to process the request
405
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
406
+ // generate a nonce with a unique ID "gwolle_gb_captcha_ajax"
407
+ // so that you can check it later when an AJAX request is sent
408
+ 'security' => wp_create_nonce( 'gwolle_gb_captcha_ajax' ),
409
+ 'correct' => esc_html__ ('Correct CAPTCHA value.', 'gwolle-gb' ),
410
+ 'incorrect' => esc_html__( 'Incorrect CAPTCHA value.', 'gwolle-gb' ),
411
+ 'gwolle_gb_captcha_prefix' => $gwolle_gb_captcha_prefix
412
+ );
413
+ wp_localize_script( 'gwolle_gb_captcha_js', 'gwolle_gb_captcha', $dataToBePassed );
414
+
415
+ // Output the CAPTCHA fields
416
+ $label = apply_filters( 'gwolle_gb_antispam_label', esc_html__('Anti-spam', 'gwolle-gb') );
417
+ $output .= '
418
+ <div class="gwolle_gb_captcha">
419
+ <div class="label">
420
+ <label for="gwolle_gb_captcha_code" class="text-info">' . $label . ': *<br />
421
+ <img src="' . $gwolle_gb_captcha_image_src . '" alt="captcha" width="' . $gwolle_gb_captcha_image_width . '" height="' . $gwolle_gb_captcha_image_height . '" />
422
+ </label>
423
+ </div>
424
+ <div class="input">
425
+ <input class="';
426
+ if (in_array('captcha_code', $gwolle_gb_error_fields)) {
427
+ $output .= 'error';
428
+ }
429
+ $output .= '" value="" type="text" name="gwolle_gb_captcha_code" id="gwolle_gb_captcha_code" placeholder="' . esc_attr__('CAPTCHA', 'gwolle-gb') . '" ';
430
+ if ( in_array('captcha_code', $gwolle_gb_error_fields) && isset($autofocus) ) {
431
+ $output .= $autofocus;
432
+ $autofocus = false; // disable it for the next error.
433
+ }
434
+ $output .= ' required'; // always required.
435
+ $output .= ' />
436
+ <input type="hidden" name="gwolle_gb_captcha_prefix" id="gwolle_gb_captcha_prefix" value="' . $gwolle_gb_captcha_prefix . '" />
437
+ <span id="gwolle_gb_captcha_verify"></span>
438
+ </div>
439
+ </div>
440
+ <div class="clearBoth">&nbsp;</div>';
441
+ }
442
+ }
443
+ $output .= apply_filters( 'gwolle_gb_write_add_after_captcha', '' );
444
+
445
+ /* Nonce */
446
+ if (get_option( 'gwolle_gb-nonce', 'true') == 'true') {
447
+ $nonce = wp_create_nonce( 'gwolle_gb_add_entry' );
448
+ $output .= '<input type="hidden" id="gwolle_gb_wpnonce" name="gwolle_gb_wpnonce" value="' . $nonce . '" />';
449
+ }
450
+
451
+ /* Use this filter to just add something */
452
+ $output .= apply_filters( 'gwolle_gb_write_add_form', '' );
453
+
454
+ $output .= '
455
+ <div id="gwolle_gb_messages_bottom_container"></div>
456
+
457
+ <div class="gwolle_gb_submit">
458
+ <div class="label gwolle_gb_invisible text-muted">&nbsp;</div>
459
+ <div class="input">
460
+ <input type="submit" name="gwolle_gb_submit" id="gwolle_gb_submit" class="button btn btn-primary" value="' . esc_attr__('Submit', 'gwolle-gb') . '" />
461
+ <span class="gwolle_gb_submit_ajax_icon"></span>
462
+ ';
463
+
464
+ $output .= apply_filters( 'gwolle_gb_write_add_after_submit', '' );
465
+
466
+ $output .= '
467
+ </div>
468
+ </div>
469
+ <div class="clearBoth">&nbsp;</div>
470
+
471
+ <div class="gwolle_gb_notice">
472
+ ';
473
+
474
+ $notice = gwolle_gb_sanitize_output( get_option('gwolle_gb-notice', false), 'setting_textarea' );
475
+ if ( $notice == false ) { // No text set by the user. Use the default text.
476
+ $notice = __("
477
+ Fields marked with * are required.
478
+ Your E-mail address won't be published.
479
+ For security reasons we save the IP address %ip%.
480
+ It's possible that your entry will only be visible in the guestbook after we reviewed it.
481
+ We reserve the right to edit, delete, or not publish entries.
482
+ "
483
+ , 'gwolle-gb');
484
+ }
485
+
486
+ $notice = nl2br($notice);
487
+ $output .= str_replace('%ip%', $_SERVER['REMOTE_ADDR'], $notice);
488
+
489
+ $output .= '
490
+ </div>';
491
+
492
+ // Use this filter to just add something
493
+ $output .= apply_filters( 'gwolle_gb_write_add_after', '' );
494
+
495
+ $output .= '</form>';
496
+
497
+
498
+ // Add filter for the form, so devs can manipulate it.
499
+ $output = apply_filters( 'gwolle_gb_write', $output);
500
+
501
+ return $output;
502
+ }
frontend/gb-pagination.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // No direct calls to this script
4
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
5
+ die('No direct calls allowed!');
6
+ }
7
+
8
+
9
+ /*
10
+ * gwolle_gb_pagination_frontend
11
+ * Pagination of the entries for the guestbook frontend
12
+ *
13
+ * @args: $pageNum, int with the number of the requested page.
14
+ * $pages_total, int with the total number of pages.
15
+ * @return: $pagination, string with the html of the pagination.
16
+ */
17
+ function gwolle_gb_pagination_frontend( $pageNum, $pages_total ) {
18
+
19
+ $permalink = get_permalink(get_the_ID());
20
+ $highDotsMade = false;
21
+ $pages_done = array();
22
+
23
+ $pagination = '<div class="page-navigation">';
24
+
25
+ if ($pageNum > 1) {
26
+ $pagination .= '<a href="' . add_query_arg( 'pageNum', round($pageNum - 1), $permalink ) . '" title="' . esc_attr__('Previous page', 'gwolle-gb') . '" rel="prev">&laquo;</a>';
27
+ }
28
+
29
+ if ($pageNum < 5) {
30
+ $showRange = 5;
31
+ if ($pages_total < 6) {
32
+ $showRange = $pages_total;
33
+ $highDotsMade = true; // no need for highdots.
34
+ }
35
+ for ($i = 1; $i < ($showRange + 1); $i++) {
36
+ if ($i == $pageNum) {
37
+ if ( in_array( $i, $pages_done ) ) { continue; }
38
+ $pagination .= '<span class="page-numbers current">' . $i . '</span>';
39
+ $pages_done[] = $i;
40
+ } else {
41
+ if ( in_array( $i, $pages_done ) ) { continue; }
42
+ $pagination .= '<a href="' . add_query_arg( 'pageNum', $i, $permalink ) . '" title="' . esc_attr__('Page', 'gwolle-gb') . ' ' . $i . '">' . $i . '</a>';
43
+ $pages_done[] = $i;
44
+ if ( $i == $pages_total ) { break; }
45
+ }
46
+ }
47
+
48
+ if ( ($pageNum + 4 < $pages_total) && ( ! $highDotsMade) ) {
49
+ $pagination .= '<span class="page-numbers dots">...</span>';
50
+ $highDotsMade = true;
51
+ }
52
+ } elseif ($pageNum > 4) {
53
+ $pagination .= '<a href="' . add_query_arg( 'pageNum', 1, $permalink ) . '" title="' . esc_attr__('Page', 'gwolle-gb') . ' 1">1</a>';
54
+ if ($pages_total > 4) {
55
+ $pagination .= '<span class="page-numbers dots">...</span>';
56
+ }
57
+ if ($pageNum + 2 < $pages_total) {
58
+ $minRange = $pageNum - 2;
59
+ $showRange = $pageNum + 2;
60
+ } else {
61
+ $minRange = $pageNum - 3;
62
+ $showRange = $pages_total - 1;
63
+ }
64
+ for ($i = $minRange; $i <= $showRange; $i++) {
65
+ if ($i == $pageNum) {
66
+ $pagination .= '<span class="page-numbers current">' . $i . '</span>';
67
+ } else {
68
+ $pagination .= '<a href="' . add_query_arg( 'pageNum', $i, $permalink ) . '" title="' . esc_attr__('Page', 'gwolle-gb') . ' ' . $i . '">' . $i . '</a>';
69
+ }
70
+ }
71
+ if ($pageNum == $pages_total) {
72
+ $pagination .= '<span class="page-numbers current">' . $pageNum . '</span>';
73
+ }
74
+ }
75
+
76
+ if ($pageNum < $pages_total) {
77
+ if ( ($pageNum + 3 < $pages_total) && ( ! $highDotsMade) ) {
78
+ $pagination .= '<span class="page-numbers dots">...</span>';
79
+ $highDotsMade = true;
80
+ }
81
+ if ( ! in_array( $pages_total, $pages_done ) ) {
82
+ $pagination .= '<a href="' . add_query_arg( 'pageNum', $pages_total, $permalink ) . '" title="' . esc_attr__('Page', 'gwolle-gb') . ' ' . $pages_total . '">' . $pages_total . '</a>';
83
+ }
84
+ $pagination .= '<a href="' . add_query_arg( 'pageNum', round($pageNum + 1), $permalink ) . '" title="' . esc_attr__('Next page', 'gwolle-gb') . '" rel="next">&raquo;</a>';
85
+ }
86
+
87
+ // 'All' link
88
+ if ( $pages_total >= 2 && get_option( 'gwolle_gb-paginate_all', 'false' ) === 'true' ) {
89
+ if ( isset($_GET['show_all']) && $_GET['show_all'] == 'true' ) {
90
+ $pagination .= '<span class="page-numbers all">' . esc_html__('All', 'gwolle-gb') . '</span>';
91
+ } else {
92
+ $pagination .= '<a href="' . add_query_arg( 'show_all', 'true', $permalink ) . '" title="' . esc_attr__('All entries', 'gwolle-gb') . '">' . esc_html__('All', 'gwolle-gb') . '</a>';
93
+ }
94
+ }
95
+
96
+ $pagination .= '</div>
97
+ ';
98
+
99
+ if ($pages_total > 1) {
100
+ return $pagination;
101
+ }
102
+
103
+ }
frontend/gb-read.php ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // No direct calls to this script
4
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
5
+ die('No direct calls allowed!');
6
+ }
7
+
8
+
9
+ /*
10
+ * gwolle_gb_frontend_read
11
+ * Reading mode of the guestbook frontend
12
+ */
13
+
14
+ function gwolle_gb_frontend_read( $shortcode_atts, $shortcode ) {
15
+
16
+ $output = '';
17
+
18
+ /* Show single entry if requested... */
19
+ if ( ((int) $shortcode_atts['entry_id'] > 0) || ( isset($_GET['entry_id']) && (int) $_GET['entry_id'] > 0 ) ) {
20
+
21
+ if ( (int) $shortcode_atts['entry_id'] > 0 ) {
22
+ $entry_id = (int) $shortcode_atts['entry_id'];
23
+ } else {
24
+ $entry_id = (int) $_GET['entry_id'];
25
+ }
26
+
27
+ $entry = new gwolle_gb_entry();
28
+ $result = $entry->load( $entry_id );
29
+ $entry_book_id = $entry->get_book_id();
30
+ if ( ! $result ) {
31
+ // No entry loaded.
32
+ $output .= esc_html__( 'Sorry, but this entry does not seem to exist.', 'gwolle-gb' );
33
+ } else if ( $entry->get_isspam() === 1 || $entry->get_istrash() === 1 || $entry->get_ischecked() === 0 ) {
34
+ // Not visible.
35
+ $output .= esc_html__( 'Sorry, but this entry does not seem to exist.', 'gwolle-gb' );
36
+ } else if ( $entry_book_id != $shortcode_atts['book_id'] ) {
37
+ // Not the right book.
38
+ $output .= esc_html__( 'Sorry, but this entry does not seem to exist.', 'gwolle-gb' );
39
+ } else {
40
+
41
+ $entries_list_class = apply_filters( 'gwolle_gb_entries_list_class', '' );
42
+ $output .= '<div id="gwolle_gb_entries" class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
43
+
44
+ $first = true;
45
+ $counter = 0;
46
+ $output .= gwolle_gb_single_view( $entry, $first, $counter );
47
+
48
+ $output .= '</div>';
49
+
50
+ // Add filter for the complete output.
51
+ $output = apply_filters( 'gwolle_gb_entries_read', $output);
52
+
53
+ }
54
+
55
+ return $output;
56
+
57
+ }
58
+
59
+ /* List view. */
60
+ $num_entries = (int) get_option('gwolle_gb-entriesPerPage', 20);
61
+ $num_entries = (int) apply_filters( 'gwolle_gb_read_num_entries', $num_entries, $shortcode_atts );
62
+
63
+ $key = 'gwolle_gb_frontend_pagination_book_' . $shortcode_atts['book_id'];
64
+ $entries_total = get_transient( $key );
65
+ if ( false === $entries_total ) {
66
+ $entries_total = gwolle_gb_get_entry_count(
67
+ array(
68
+ 'checked' => 'checked',
69
+ 'trash' => 'notrash',
70
+ 'spam' => 'nospam',
71
+ 'book_id' => $shortcode_atts['book_id']
72
+ )
73
+ );
74
+ set_transient( $key, $entries_total, DAY_IN_SECONDS );
75
+ }
76
+ $pages_total = ceil( $entries_total / $num_entries );
77
+
78
+ $pageNum = 1;
79
+ if ( isset($_GET['pageNum']) && is_numeric($_GET['pageNum']) ) {
80
+ $pageNum = intval($_GET['pageNum']);
81
+ }
82
+
83
+ if ( $pageNum > $pages_total ) {
84
+ // Page doesnot exist
85
+ $pageNum = 1;
86
+ }
87
+
88
+ if ( $pageNum == 1 && $entries_total > 0 ) {
89
+ $offset = 0;
90
+ } elseif ( $entries_total == 0 ) {
91
+ $offset = 0;
92
+ } else {
93
+ $offset = ( $pageNum - 1 ) * $num_entries;
94
+ }
95
+
96
+
97
+ /* Get the entries for the frontend */
98
+ if ( isset($_GET['show_all']) && $_GET['show_all'] == 'true' ) {
99
+ $entries = gwolle_gb_get_entries(
100
+ array(
101
+ 'offset' => 0,
102
+ 'num_entries' => -1,
103
+ 'checked' => 'checked',
104
+ 'trash' => 'notrash',
105
+ 'spam' => 'nospam',
106
+ 'book_id' => $shortcode_atts['book_id']
107
+ )
108
+ );
109
+ $pageNum = 0; // do not have it set to 1, this way the '1' will be clickable too.
110
+ } else {
111
+ $entries = gwolle_gb_get_entries(
112
+ array(
113
+ 'offset' => $offset,
114
+ 'num_entries' => $num_entries,
115
+ 'checked' => 'checked',
116
+ 'trash' => 'notrash',
117
+ 'spam' => 'nospam',
118
+ 'book_id' => $shortcode_atts['book_id']
119
+ )
120
+ );
121
+ }
122
+
123
+
124
+ /* Page navigation on top */
125
+ $navigation = get_option( 'gwolle_gb-navigation', 0 );
126
+ $entries_list_class = '';
127
+ if ( $navigation == 0 ) {
128
+ $pagination = gwolle_gb_pagination_frontend( $pageNum, $pages_total );
129
+ $output .= $pagination;
130
+ } else if ( $navigation == 1 ) {
131
+ $entries_list_class .= 'gwolle_gb_infinite';
132
+ }
133
+ $entries_list_class = apply_filters( 'gwolle_gb_entries_list_class', $entries_list_class );
134
+
135
+ /* Entries from the template */
136
+ if ( !is_array($entries) || empty($entries) ) {
137
+ $no_entries = apply_filters( 'gwolle_gb_read_no_entries', __('(no entries yet)', 'gwolle-gb') );
138
+ $output .= '<div id="gwolle_gb_entries" class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
139
+ $output .= $no_entries;
140
+ $output .= '</div>';
141
+ } else {
142
+ $first = true;
143
+
144
+ $output .= '<div id="gwolle_gb_entries" class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
145
+
146
+ $args = array(
147
+ 'checked' => 'checked',
148
+ 'trash' => 'notrash',
149
+ 'spam' => 'nospam',
150
+ 'book_id' => $shortcode_atts['book_id']
151
+ );
152
+ $output .= apply_filters( 'gwolle_gb_entries_list_before', '', $args );
153
+
154
+
155
+ // Try to load and require_once the template from the themes folders.
156
+ if ( locate_template( array('gwolle_gb-entry.php'), true, true ) == '') {
157
+
158
+ $output .= '<!-- Gwolle-GB Entry: Default Template Loaded -->
159
+ ';
160
+
161
+ // No template found and loaded in the theme folders.
162
+ // Load the template from the plugin folder.
163
+ require_once( GWOLLE_GB_DIR . '/frontend/gwolle_gb-entry.php' );
164
+
165
+ } else {
166
+
167
+ $output .= '<!-- Gwolle-GB Entry: Custom Template Loaded -->
168
+ ';
169
+
170
+ }
171
+
172
+ $counter = 0;
173
+ foreach ($entries as $entry) {
174
+ $counter++;
175
+
176
+ // Run the function from the template to get the entry.
177
+ $entry_output = gwolle_gb_entry_template( $entry, $first, $counter );
178
+
179
+ $first = false;
180
+
181
+ // Add a filter for each entry, so devs can add or remove parts.
182
+ $output .= apply_filters( 'gwolle_gb_entry_read', $entry_output, $entry );
183
+
184
+ }
185
+
186
+ $output .= '</div>';
187
+
188
+ }
189
+
190
+
191
+ /* Page navigation on bottom */
192
+ if ( $navigation == 0 ) {
193
+ $output .= $pagination;
194
+ }
195
+
196
+
197
+ // Add filter for the complete output.
198
+ $output = apply_filters( 'gwolle_gb_entries_read', $output);
199
+
200
+ return $output;
201
+ }
frontend/gb-rss.php ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /* Add the feed. */
11
+ function gwolle_gb_rss_init(){
12
+ add_feed('gwolle_gb', 'gwolle_gb_rss');
13
+ }
14
+ add_action('init', 'gwolle_gb_rss_init');
15
+
16
+
17
+ /*
18
+ * Add the RSS link to the html head.
19
+ * There is no post_content yet, but we do have get_the_ID().
20
+ */
21
+ function gwolle_gb_rss_head() {
22
+ if ( is_singular() && function_exists('has_shortcode') ) {
23
+ $post = get_post( get_the_ID() );
24
+ if ( has_shortcode( $post->post_content, 'gwolle_gb' ) || has_shortcode( $post->post_content, 'gwolle_gb_read' ) ) {
25
+
26
+ // Remove standard RSS links.
27
+ remove_action( 'wp_head', 'feed_links', 2 );
28
+ remove_action( 'wp_head', 'feed_links_extra', 3 );
29
+
30
+ // And add our own RSS link.
31
+ global $wp_rewrite;
32
+ $permalinks = $wp_rewrite->permalink_structure;
33
+ if ( $permalinks ) {
34
+ ?>
35
+ <link rel="alternate" type="application/rss+xml" title="<?php esc_attr_e("Guestbook Feed", 'gwolle-gb'); ?>" href="<?php bloginfo('url'); ?>/feed/gwolle_gb" />
36
+ <?php
37
+ } else {
38
+ ?>
39
+ <link rel="alternate" type="application/rss+xml" title="<?php esc_attr_e("Guestbook Feed", 'gwolle-gb'); ?>" href="<?php bloginfo('url'); ?>/?feed=gwolle_gb" />
40
+ <?php
41
+ }
42
+ }
43
+ }
44
+ }
45
+ add_action('wp_head', 'gwolle_gb_rss_head', 1);
46
+
47
+
48
+ /* Set the correct HTTP header for Content-type. */
49
+ function gwolle_gb_rss_content_type( $content_type, $type ) {
50
+ if ( 'gwolle_gb' === $type ) {
51
+ return feed_content_type( 'rss2' );
52
+ }
53
+ return $content_type;
54
+ }
55
+ add_filter( 'feed_content_type', 'gwolle_gb_rss_content_type', 10, 2 );
56
+
57
+
58
+ /* Show the XML Feed */
59
+ function gwolle_gb_rss() {
60
+
61
+ // Only show the first page of entries.
62
+ $entriesPerPage = (int) apply_filters( 'gwolle_gb_rss_nr_entries', 20 );
63
+
64
+ /* Get the entries for the RSS Feed */
65
+ $entries = gwolle_gb_get_entries(
66
+ array(
67
+ 'offset' => 0,
68
+ 'num_entries' => $entriesPerPage,
69
+ 'checked' => 'checked',
70
+ 'trash' => 'notrash',
71
+ 'spam' => 'nospam'
72
+ )
73
+ );
74
+
75
+ /* Get the time of the last entry, else of the last edited post */
76
+ if ( is_array($entries) && !empty($entries) ) {
77
+ $lastbuild = gmdate( 'D, d M Y H:i:s', $entries[0]->get_datetime() );
78
+ } else {
79
+ $lastbuild = mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false);
80
+ }
81
+
82
+ $postid = gwolle_gb_get_postid();
83
+ if ( $postid ) {
84
+ $permalink = get_bloginfo('url') . '?p=' . $postid;
85
+ } else {
86
+ $permalink = get_bloginfo('url');
87
+ }
88
+
89
+ /* Get the Language setting */
90
+ $WPLANG = get_option('WPLANG', false);
91
+ if ( ! $WPLANG ) {
92
+ $WPLANG = WPLANG;
93
+ }
94
+ if ( ! $WPLANG ) {
95
+ $WPLANG = 'en-us';
96
+ }
97
+ $WPLANG = str_replace( '_', '-', $WPLANG );
98
+ $WPLANG = strtolower( $WPLANG );
99
+
100
+ /* Build the XML content */
101
+ header('Content-Type: ' . feed_content_type('rss2') . '; charset=' . get_option('blog_charset'), true);
102
+ echo '<?xml version="1.0" encoding="' . get_option('blog_charset') . '"?' . '>';
103
+ ?>
104
+
105
+ <rss version="2.0"
106
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
107
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
108
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
109
+ xmlns:atom="http://www.w3.org/2005/Atom"
110
+ xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
111
+ xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
112
+ <?php do_action('rss2_ns'); ?>>
113
+
114
+ <channel>
115
+ <title><?php bloginfo_rss('name'); echo " - " . esc_html__('Guestbook Feed', 'gwolle-gb'); ?></title>
116
+ <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
117
+ <link><?php echo $permalink; ?></link>
118
+ <description><?php bloginfo_rss('description'); echo " - " . esc_html__('Guestbook Feed', 'gwolle-gb'); ?></description>
119
+ <lastBuildDate><?php echo $lastbuild; ?></lastBuildDate>
120
+ <language><?php echo $WPLANG; ?></language>
121
+ <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
122
+ <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
123
+ <?php do_action('rss2_head'); ?>
124
+
125
+ <?php
126
+ if ( is_array($entries) && !empty($entries) ) {
127
+ foreach ( $entries as $entry ) { ?>
128
+ <item>
129
+ <title>
130
+ <?php esc_html_e('Guestbook Entry by', 'gwolle-gb'); echo " " . trim( $entry->get_author_name() ) . " (" . trim(date_i18n( get_option('date_format'), $entry->get_datetime() )) . " " . trim(date_i18n( get_option('time_format'), $entry->get_datetime() )) . ")"; ?>
131
+ </title>
132
+ <link><?php
133
+ $permalink_entry = add_query_arg( 'entry_id', $entry->get_id(), $permalink );
134
+ $permalink_entry = htmlspecialchars($permalink_entry, ENT_COMPAT, 'UTF-8');
135
+ echo $permalink_entry; ?>
136
+ </link>
137
+ <pubDate><?php echo gmdate( 'D, d M Y H:i:s', $entry->get_datetime() ); ?></pubDate>
138
+ <dc:creator><?php echo trim( $entry->get_author_name() ); ?></dc:creator>
139
+ <guid isPermaLink="false"><?php echo $permalink; ?></guid>
140
+ <description><![CDATA[<?php echo wp_trim_words( $entry->get_content(), 12, '...' ) ?>]]></description>
141
+ <content:encoded><![CDATA[<?php echo wp_trim_words( $entry->get_content(), 25, '...' ) ?>]]></content:encoded>
142
+ <?php rss_enclosure(); ?>
143
+ <?php do_action('rss2_item'); ?>
144
+ </item>
145
+ <?php
146
+ }
147
+ } ?>
148
+ </channel>
149
+ </rss>
150
+ <?php
151
+ }
frontend/gb-shortcode-widget.php ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // No direct calls to this script
4
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
5
+ die('No direct calls allowed!');
6
+ }
7
+
8
+
9
+ /* Widget Function for simple layout.
10
+ *
11
+ * For multiple guestbooks, use it like this:
12
+ * gwolle_gb_shortcode_widget( array('book_id'=>2) );
13
+ * which will show Book ID 2 in widget layout.
14
+ */
15
+
16
+ function gwolle_gb_shortcode_widget( $atts ) {
17
+ echo get_gwolle_gb_shortcode_widget( $atts );
18
+ }
19
+
20
+
21
+ /* Frontend function to show the list of entries in widget layout.
22
+ *
23
+ * Parameters:
24
+ * - book_id, int with an ID.
25
+ * - num_entries, int with the shown number of messages.
26
+ * - num_words, int with the shown number of words per entry.
27
+ */
28
+ function get_gwolle_gb_shortcode_widget( $atts ) {
29
+
30
+ $shortcode_atts = shortcode_atts( array(
31
+ 'book_id' => 0,
32
+ 'num_entries' => 5,
33
+ 'num_words' => 10,
34
+ ), $atts );
35
+
36
+ if ( $shortcode_atts['book_id'] === 'post_id' ) {
37
+ $shortcode_atts['book_id'] = get_the_ID();
38
+ }
39
+
40
+ // Load Frontend CSS in Footer, only when it's active.
41
+ wp_enqueue_style('gwolle_gb_frontend_css');
42
+
43
+ $widget_title = esc_html__('Guestbook', 'gwolle-gb');
44
+ $book_id = $shortcode_atts['book_id'];
45
+ $num_entries = $shortcode_atts['num_entries'];
46
+ $num_words = $shortcode_atts['num_words'];
47
+ $postid = 0;
48
+
49
+ $html5 = current_theme_supports( 'html5' );
50
+
51
+ $widget_class = 'gwolle_gb_widget';
52
+ $widget_class = apply_filters( 'gwolle_gb_widget_list_class', $widget_class );
53
+ $widget_item_class = 'gwolle_gb_widget';
54
+ $widget_item_class = apply_filters( 'gwolle_gb_widget_item_class', $widget_item_class );
55
+
56
+
57
+ $widget_html = '
58
+ <div class="gwolle_gb_widget">';
59
+ $widget_html .= apply_filters('widget_title', $widget_title);
60
+
61
+ $widget_html .= '
62
+ <ul class="' . $widget_class . '">';
63
+
64
+ // Get the latest $num_entries guestbook entries
65
+ $entries = gwolle_gb_get_entries(
66
+ array(
67
+ 'num_entries' => $num_entries,
68
+ 'checked' => 'checked',
69
+ 'trash' => 'notrash',
70
+ 'spam' => 'nospam',
71
+ 'book_id' => $book_id,
72
+ )
73
+ );
74
+
75
+ if ( is_array( $entries ) && ! empty( $entries ) ) {
76
+ foreach( $entries as $entry ) {
77
+ $widget_html .= '
78
+ <li class="' . $widget_item_class . '">';
79
+
80
+ if ( $html5 ) {
81
+ $widget_html .= '
82
+ <article>';
83
+ }
84
+
85
+ // Use this filter to just add something
86
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_before', '', $entry );
87
+
88
+ $widget_html .= '
89
+ <span class="gb-author-name">' . $entry->get_author_name() . '</span>';
90
+ $widget_html .= ' / ';
91
+ $widget_html .= '
92
+ <span class="gb-date">' . date_i18n( get_option('date_format'), $entry->get_datetime() ) . '</span>';
93
+ $widget_html .= ':<br />';
94
+
95
+ $entry_content = gwolle_gb_get_excerpt( gwolle_gb_bbcode_strip($entry->get_content()), $num_words );
96
+ if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
97
+ $entry_content = convert_smilies($entry_content);
98
+ }
99
+ $widget_html .= '
100
+ <span class="gb-entry-content">' . $entry_content;
101
+
102
+ // Use this filter to just add something
103
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_content', '', $entry );
104
+
105
+ $widget_html .= '</span>';
106
+
107
+ // Use this filter to just add something
108
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_after', '', $entry );
109
+
110
+ if ( $html5 ) {
111
+ $widget_html .= '
112
+ </article>';
113
+ }
114
+
115
+ $widget_html .= '
116
+ </li>';
117
+ }
118
+ }
119
+
120
+ $widget_html .= '
121
+ </ul>';
122
+ $widget_html .= '
123
+ </div>';
124
+
125
+ // Add a filter for the entries, so devs can add or remove parts.
126
+ $widget_html = apply_filters( 'gwolle_gb_widget', $widget_html);
127
+
128
+ return $widget_html;
129
+ }
130
+ add_shortcode( 'gwolle_gb_widget', 'get_gwolle_gb_shortcode_widget' );
frontend/gb-shortcodes.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Guestbook frontend
4
+ * Called by using the shortcode [gwolle_gb] in a page or post.
5
+ * $output will be used as replacement for that shortcode using the Shortcode API.
6
+ */
7
+
8
+
9
+ // No direct calls to this script
10
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
11
+ die('No direct calls allowed!');
12
+ }
13
+
14
+
15
+ /* Frontend Function
16
+ * Use this to display the guestbook on a page without using a shortcode.
17
+ *
18
+ * For multiple guestbooks, use it like this:
19
+ * show_gwolle_gb( array('book_id'=>2) );
20
+ * which will show Book ID 2.
21
+ */
22
+
23
+ function show_gwolle_gb( $atts ) {
24
+ echo get_gwolle_gb( $atts );
25
+ }
26
+
27
+
28
+ /* Frontend Function
29
+ * Used for the main shortcode.
30
+ *
31
+ * Parameters:
32
+ * shortcode_atts:
33
+ * - book_id = 1 (default)
34
+ * Can be any integer. Can also be post_id, which will set it to the ID of that post.
35
+ */
36
+
37
+ function get_gwolle_gb( $atts ) {
38
+
39
+ $shortcode = 'gwolle_gb';
40
+
41
+ $shortcode_atts = shortcode_atts( array(
42
+ 'book_id' => 1,
43
+ 'entry_id' => 0,
44
+ 'button' => 'true', // default when main shortcode is used.
45
+ ), $atts );
46
+
47
+ if ( $shortcode_atts['book_id'] === 'post_id' ) {
48
+ $shortcode_atts['book_id'] = get_the_ID();
49
+ }
50
+
51
+ // Set Meta_keys
52
+ //gwolle_gb_set_meta_keys( 'write', $shortcode_atts );
53
+ gwolle_gb_set_meta_keys( 'read', $shortcode_atts );
54
+
55
+ // Load Frontend CSS in Footer, only when it's active
56
+ wp_enqueue_style('gwolle_gb_frontend_css');
57
+ //wp_enqueue_script('jquery');
58
+ wp_enqueue_script('gwolle_gb_frontend_js');
59
+
60
+
61
+ // Define $output
62
+ $output = '<div id="gwolle_gb">';
63
+
64
+ // Add the form
65
+ $output .= gwolle_gb_frontend_write( $shortcode_atts, $shortcode );
66
+
67
+ // Add the list of entries to show
68
+ $output .= gwolle_gb_frontend_read( $shortcode_atts, $shortcode );
69
+
70
+ $output .= '</div>';
71
+
72
+ return $output;
73
+ }
74
+ add_shortcode( 'gwolle-gb', 'get_gwolle_gb' ); // deprecated, do not use dashes in Shortcode API
75
+ add_shortcode( 'gwolle_gb', 'get_gwolle_gb' );
76
+
77
+
78
+ /* Frontend function to show just the form */
79
+ function get_gwolle_gb_write( $atts ) {
80
+
81
+ $shortcode = 'gwolle_gb_write';
82
+
83
+ $shortcode_atts = shortcode_atts( array(
84
+ 'book_id' => 1,
85
+ 'entry_id' => 0,
86
+ 'button' => 'false', // default when only the write shortcode is used.
87
+ ), $atts );
88
+
89
+ if ( $shortcode_atts['book_id'] === 'post_id' ) {
90
+ $shortcode_atts['book_id'] = get_the_ID();
91
+ }
92
+
93
+ // Set Meta_keys
94
+ //gwolle_gb_set_meta_keys( 'write', $shortcode_atts );
95
+
96
+ // Load Frontend CSS in Footer, only when it's active
97
+ wp_enqueue_style('gwolle_gb_frontend_css');
98
+ //wp_enqueue_script('jquery');
99
+ wp_enqueue_script('gwolle_gb_frontend_js');
100
+
101
+
102
+ // Define $output
103
+ $output = '<div id="gwolle_gb">';
104
+
105
+ // Add the form
106
+ $output .= gwolle_gb_frontend_write( $shortcode_atts, $shortcode );
107
+
108
+ $output .= '</div>';
109
+
110
+ return $output;
111
+ }
112
+ add_shortcode( 'gwolle_gb_write', 'get_gwolle_gb_write' );
113
+
114
+
115
+ /* Frontend function to show just the list of entries */
116
+ function get_gwolle_gb_read( $atts ) {
117
+
118
+ $shortcode = 'gwolle_gb_read';
119
+
120
+ $shortcode_atts = shortcode_atts( array(
121
+ 'book_id' => 1,
122
+ 'entry_id' => 0,
123
+ ), $atts );
124
+
125
+ if ( $shortcode_atts['book_id'] === 'post_id' ) {
126
+ $shortcode_atts['book_id'] = get_the_ID();
127
+ }
128
+
129
+ // Set Meta_keys
130
+ gwolle_gb_set_meta_keys( 'read', $shortcode_atts );
131
+
132
+ // Load Frontend CSS in Footer, only when it's active
133
+ wp_enqueue_style('gwolle_gb_frontend_css');
134
+ //wp_enqueue_script('jquery');
135
+ wp_enqueue_script('gwolle_gb_frontend_js');
136
+
137
+
138
+ // Define $output
139
+ $output = '<div id="gwolle_gb">';
140
+
141
+ // Add the list of entries to show
142
+ $output .= gwolle_gb_frontend_read( $shortcode_atts, $shortcode );
143
+
144
+ $output .= '</div>';
145
+
146
+ return $output;
147
+ }
148
+ add_shortcode( 'gwolle_gb_read', 'get_gwolle_gb_read' );
frontend/gb-widget.php ADDED
@@ -0,0 +1,447 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * widget.php
4
+ * Gwolle-GB Widget
5
+ */
6
+
7
+
8
+ // No direct calls to this script
9
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
10
+ die('No direct calls allowed!');
11
+ }
12
+
13
+
14
+ if (function_exists('register_sidebar') && class_exists('WP_Widget')) {
15
+ class GwolleGB_Widget extends WP_Widget {
16
+
17
+ /* Constructor */
18
+ function __construct() {
19
+ $widget_ops = array( 'classname' => 'gwolle_gb', 'description' => esc_html__('Displays the recent guestbook entries.','gwolle-gb') );
20
+ parent::__construct('gwolle_gb', esc_html__('Gwolle Guestbook', 'gwolle-gb'), $widget_ops);
21
+ $this->alt_option_name = 'gwolle_gb';
22
+ }
23
+
24
+ /** @see WP_Widget::widget */
25
+ function widget($args, $instance) {
26
+ extract($args);
27
+
28
+ $default_value = array(
29
+ 'title' => esc_html__('Guestbook', 'gwolle-gb'),
30
+ 'num_entries' => 5,
31
+ 'best' => '',
32
+ 'no_mod' => 0,
33
+ 'name' => 1,
34
+ 'date' => 1,
35
+ 'slider' => 0,
36
+ 'num_words' => 10,
37
+ 'book_id' => 0,
38
+ 'link_text' => esc_html__('Visit guestbook', 'gwolle-gb'),
39
+ 'postid' => 0
40
+ );
41
+ $instance = wp_parse_args( (array) $instance, $default_value );
42
+
43
+ $widget_title = esc_attr($instance['title']);
44
+ $num_entries = (int) esc_attr($instance['num_entries']);
45
+ $best = esc_attr($instance['best']);
46
+ $best = explode(",", $best);
47
+ $no_mod = (int) esc_attr($instance['no_mod']);
48
+ if ( $no_mod ) { $no_mod = 'true'; }
49
+ $name = (int) esc_attr($instance['name']);
50
+ $date = (int) esc_attr($instance['date']);
51
+ $slider = (int) esc_attr($instance['slider']);
52
+ $num_words = (int) esc_attr($instance['num_words']);
53
+ $book_id = (int) esc_attr($instance['book_id']);
54
+ $link_text = esc_attr($instance['link_text']);
55
+ $postid = (int) esc_attr($instance['postid']);
56
+
57
+ $html5 = current_theme_supports( 'html5' );
58
+
59
+ // Prepare for SSS Slider. Registers Script with WordPress to wp_footer().
60
+ $widget_class = 'gwolle_gb_widget';
61
+ if ( $slider ) {
62
+ wp_register_script( 'gwolle_gb_widget_sss', plugins_url( '/js/sss/sss.js', __FILE__ ), 'jquery', GWOLLE_GB_VER, true );
63
+ wp_enqueue_script( 'gwolle_gb_widget_sss' );
64
+ $widget_class .= ' gwolle_gb_widget_slider';
65
+ }
66
+ $widget_class = apply_filters( 'gwolle_gb_widget_list_class', $widget_class );
67
+ $widget_item_class = 'gwolle_gb_widget';
68
+ $widget_item_class = apply_filters( 'gwolle_gb_widget_item_class', $widget_item_class );
69
+
70
+ // Init
71
+ $widget_html = '';
72
+
73
+ $widget_html .= $before_widget;
74
+ $widget_html .= '
75
+ <div class="gwolle_gb_widget">';
76
+
77
+ if ($widget_title !== FALSE) {
78
+ $widget_html .= $before_title . apply_filters('widget_title', $widget_title) . $after_title;
79
+ }
80
+
81
+ $raquo = '';
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') . '">&raquo;</a>';
86
+ }
87
+
88
+ $widget_html .= '
89
+ <ul class="' . $widget_class . '">';
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();
97
+ $entry_id = intval($entry_id);
98
+ if ( isset($entry_id) && $entry_id > 0 ) {
99
+ $result = $entry->load( $entry_id );
100
+ if ( !$result ) {
101
+ // No entry loaded
102
+ continue;
103
+ }
104
+ // Main Content
105
+ $widget_html .= '
106
+ <li class="' . $widget_item_class . '">';
107
+
108
+ if ( $html5 ) {
109
+ $widget_html .= '
110
+ <article>';
111
+ }
112
+
113
+ // Use this filter to just add something
114
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_before', '', $entry );
115
+
116
+ if ( $name ) {
117
+ $widget_html .= '
118
+ <span class="gb-author-name">' . $entry->get_author_name() . '</span>';
119
+ }
120
+ if ( $name && $date ) {
121
+ $widget_html .= ' / ';
122
+ }
123
+ if ( $date ) {
124
+ $widget_html .= '
125
+ <span class="gb-date">' . date_i18n( get_option('date_format'), $entry->get_datetime() ) . '</span>';
126
+ }
127
+ if ( $name || $date ) {
128
+ $widget_html .= ':<br />';
129
+ }
130
+
131
+ $entry_content = gwolle_gb_get_excerpt( gwolle_gb_bbcode_strip($entry->get_content()), $num_words );
132
+ if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
133
+ $entry_content = convert_smilies($entry_content);
134
+ }
135
+ $widget_html .= '
136
+ <span class="gb-entry-content">' . $entry_content . $raquo;
137
+
138
+ // Use this filter to just add something
139
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_content', '', $entry );
140
+
141
+ $widget_html .= '</span>';
142
+
143
+ // Use this filter to just add something
144
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_after', '', $entry );
145
+
146
+ if ( $html5 ) {
147
+ $widget_html .= '
148
+ </article>';
149
+ }
150
+
151
+ $widget_html .= '
152
+ </li>';
153
+
154
+ $counter++;
155
+ }
156
+ }
157
+ }
158
+
159
+ // Get the latest $num_entries guestbook entries
160
+ if ( $counter != $num_entries) { // we have enough
161
+ $entries = gwolle_gb_get_entries(
162
+ array(
163
+ 'num_entries' => $num_entries,
164
+ 'checked' => 'checked',
165
+ 'trash' => 'notrash',
166
+ 'spam' => 'nospam',
167
+ 'book_id' => $book_id,
168
+ 'no_moderators' => $no_mod
169
+ )
170
+ );
171
+ if ( is_array( $entries ) && !empty( $entries ) ) {
172
+ foreach( $entries as $entry ) {
173
+ if ( $counter == $num_entries) { break; } // we have enough
174
+ if ( is_array( $best) && in_array( $entry->get_id(), $best ) ) { continue; } // already listed
175
+ // Main Content
176
+ $widget_html .= '
177
+ <li class="' . $widget_item_class . '">';
178
+
179
+ if ( $html5 ) {
180
+ $widget_html .= '
181
+ <article>';
182
+ }
183
+
184
+ // Use this filter to just add something
185
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_before', '', $entry );
186
+
187
+ if ( $name ) {
188
+ $widget_html .= '
189
+ <span class="gb-author-name">' . $entry->get_author_name() . '</span>';
190
+ }
191
+ if ( $name && $date ) {
192
+ $widget_html .= ' / ';
193
+ }
194
+ if ( $date ) {
195
+ $widget_html .= '
196
+ <span class="gb-date">' . date_i18n( get_option('date_format'), $entry->get_datetime() ) . '</span>';
197
+ }
198
+ if ( $name || $date ) {
199
+ $widget_html .= ':<br />';
200
+ }
201
+
202
+ $entry_content = gwolle_gb_get_excerpt( gwolle_gb_bbcode_strip($entry->get_content()), $num_words );
203
+ if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
204
+ $entry_content = convert_smilies($entry_content);
205
+ }
206
+ $widget_html .= '
207
+ <span class="gb-entry-content">' . $entry_content . $raquo;
208
+
209
+ // Use this filter to just add something
210
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_content', '', $entry );
211
+
212
+ $widget_html .= '</span>';
213
+
214
+ // Use this filter to just add something
215
+ $widget_html .= apply_filters( 'gwolle_gb_entry_widget_add_after', '', $entry );
216
+
217
+ if ( $html5 ) {
218
+ $widget_html .= '
219
+ </article>';
220
+ }
221
+
222
+ $widget_html .= '
223
+ </li>';
224
+
225
+ $counter++;
226
+ }
227
+ }
228
+ }
229
+
230
+ $widget_html .= '
231
+ </ul>';
232
+
233
+ // Post the link to the Guestbook.
234
+ if ( (int) $postid > 0 ) {
235
+ $widget_html .= '
236
+ <p class="gwolle_gb_link">
237
+ <a href="' . $permalink . '" title="' . esc_attr__('Click here to get to the guestbook.', 'gwolle-gb') . '">' . $link_text . ' &raquo;</a>
238
+ </p>';
239
+ }
240
+ $widget_html .= '
241
+ </div>
242
+ ' . $after_widget;
243
+
244
+ // Add a filter for the entries, so devs can add or remove parts.
245
+ $widget_html = apply_filters( 'gwolle_gb_widget', $widget_html);
246
+
247
+ if ( $counter > 0 ) {
248
+ // Only display widget if there are any entries.
249
+ echo $widget_html;
250
+
251
+ // Load Frontend CSS in Footer, only when it's active.
252
+ wp_enqueue_style('gwolle_gb_frontend_css');
253
+ }
254
+ }
255
+
256
+ /** @see WP_Widget::update */
257
+ function update($new_instance, $old_instance) {
258
+ $instance = $old_instance;
259
+ $instance['title'] = strip_tags($new_instance['title']);
260
+ $instance['num_entries'] = (int) strip_tags($new_instance['num_entries']);
261
+ $instance['best'] = strip_tags($new_instance['best']);
262
+ if ( isset($new_instance['no_mod']) ) {
263
+ $instance['no_mod'] = (int) $new_instance['no_mod'];
264
+ } else {
265
+ $instance['no_mod'] = 0;
266
+ }
267
+ if ( isset($new_instance['name']) ) {
268
+ $instance['name'] = (int) $new_instance['name'];
269
+ } else {
270
+ $instance['name'] = 0;
271
+ }
272
+ if ( isset($new_instance['date']) ) {
273
+ $instance['date'] = (int) $new_instance['date'];
274
+ } else {
275
+ $instance['date'] = 0;
276
+ }
277
+ if ( isset($new_instance['slider']) ) {
278
+ $instance['slider'] = (int) $new_instance['slider'];
279
+ } else {
280
+ $instance['slider'] = 0;
281
+ }
282
+ $instance['num_words'] = (int) $new_instance['num_words'];
283
+ $instance['book_id'] = (int) $new_instance['book_id'];
284
+ $instance['link_text'] = strip_tags($new_instance['link_text']);
285
+ $instance['postid'] = (int) $new_instance['postid'];
286
+
287
+ return $instance;
288
+ }
289
+
290
+ /** @see WP_Widget::form */
291
+ function form($instance) {
292
+
293
+ $default_value = array(
294
+ 'title' => esc_html__('Guestbook', 'gwolle-gb'),
295
+ 'num_entries' => 5,
296
+ 'best' => '',
297
+ 'no_mod' => 0,
298
+ 'name' => 1,
299
+ 'date' => 1,
300
+ 'slider' => 0,
301
+ 'num_words' => 10,
302
+ 'book_id' => 0,
303
+ 'link_text' => esc_html__('Visit guestbook', 'gwolle-gb'),
304
+ 'postid' => 0
305
+ );
306
+ $instance = wp_parse_args( (array) $instance, $default_value );
307
+
308
+ $title = esc_attr($instance['title']);
309
+ $num_entries = (int) esc_attr($instance['num_entries']);
310
+ $best = esc_attr($instance['best']);
311
+ $no_mod = (int) esc_attr($instance['no_mod']);
312
+ $name = (int) esc_attr($instance['name']);
313
+ $date = (int) esc_attr($instance['date']);
314
+ $slider = (int) esc_attr($instance['slider']);
315
+ $num_words = (int) esc_attr($instance['num_words']);
316
+ $book_id = (int) esc_attr($instance['book_id']);
317
+ $link_text = esc_attr($instance['link_text']);
318
+ $postid = (int) esc_attr($instance['postid']);
319
+ ?>
320
+
321
+ <p>
322
+ <label for="<?php echo $this->get_field_id('title'); ?>" /><?php esc_html_e('Title:', 'gwolle-gb'); ?></label>
323
+ <br />
324
+ <input type="text" id="<?php echo $this->get_field_id('title'); ?>" value="<?php echo $title; ?>" name="<?php echo $this->get_field_name('title'); ?>" />
325
+ </p>
326
+
327
+ <p>
328
+ <label for="<?php echo $this->get_field_id('num_entries'); ?>" /><?php esc_html_e('Number of entries:', 'gwolle-gb'); ?></label>
329
+ <br />
330
+ <select id="<?php echo $this->get_field_id('num_entries'); ?>" name="<?php echo $this->get_field_name('num_entries'); ?>">
331
+ <?php
332
+ for ($i = 1; $i <= 15; $i++) {
333
+ echo '<option value="' . $i . '"';
334
+ if ( $i === $num_entries ) {
335
+ echo ' selected="selected"';
336
+ }
337
+ echo '>' . $i . '</option>';
338
+ }
339
+ ?>
340
+ </select>
341
+ </p>
342
+
343
+ <p>
344
+ <label for="<?php echo $this->get_field_id('best'); ?>" /><?php esc_html_e('Best entries to show:', 'gwolle-gb'); ?></label>
345
+ <br />
346
+ <input type="text" id="<?php echo $this->get_field_id('best'); ?>" value="<?php echo $best; ?>" name="<?php echo $this->get_field_name('best'); ?>" placeholder="<?php esc_attr_e('List of entry_id\'s, comma-separated', 'gwolle-gb'); ?>" />
347
+ </p>
348
+
349
+ <p>
350
+ <label for="<?php echo $this->get_field_id('no_mod'); ?>">
351
+ <input type="checkbox" id="<?php echo $this->get_field_id('no_mod'); ?>" <?php checked(1, $no_mod ); ?> name="<?php echo $this->get_field_name('no_mod'); ?>" value="1" />
352
+ <?php esc_html_e('Do not show admin entries.', 'gwolle-gb'); ?></label>
353
+ </p>
354
+
355
+ <p>
356
+ <label for="<?php echo $this->get_field_id('name'); ?>">
357
+ <input type="checkbox" id="<?php echo $this->get_field_id('name'); ?>" <?php checked(1, $name ); ?> name="<?php echo $this->get_field_name('name'); ?>" value="1" />
358
+ <?php esc_html_e('Show name of author.', 'gwolle-gb'); ?></label>
359
+ </p>
360
+
361
+ <p>
362
+ <label for="<?php echo $this->get_field_id('date'); ?>">
363
+ <input type="checkbox" id="<?php echo $this->get_field_id('date'); ?>" <?php checked(1, $date ); ?> name="<?php echo $this->get_field_name('date'); ?>" value="1" />
364
+ <?php esc_html_e('Show date of entry.', 'gwolle-gb'); ?></label>
365
+ </p>
366
+
367
+ <p>
368
+ <label for="<?php echo $this->get_field_id('slider'); ?>">
369
+ <input type="checkbox" id="<?php echo $this->get_field_id('slider'); ?>" <?php checked(1, $slider ); ?> name="<?php echo $this->get_field_name('slider'); ?>" value="1" />
370
+ <?php esc_html_e('Use Slider View.', 'gwolle-gb'); ?></label>
371
+ </p>
372
+
373
+ <p>
374
+ <label for="<?php echo $this->get_field_id('num_words'); ?>" /><?php esc_html_e('Number of words for each entry:', 'gwolle-gb'); ?></label>
375
+ <br />
376
+ <select id="<?php echo $this->get_field_id('num_words'); ?>" name="<?php echo $this->get_field_name('num_words'); ?>">
377
+ <?php
378
+ for ($i = 1; $i <= 25; $i++) {
379
+ echo '<option value="' . $i . '"';
380
+ if ( $i === $num_words ) {
381
+ echo ' selected="selected"';
382
+ }
383
+ echo '>' . $i . '</option>';
384
+ }
385
+ ?>
386
+ </select>
387
+ </p>
388
+
389
+ <p>
390
+ <label for="<?php echo $this->get_field_id('book_id'); ?>" /><?php esc_html_e('Book ID:', 'gwolle-gb'); ?></label>
391
+ <br />
392
+ <input type="text" id="<?php echo $this->get_field_id('book_id'); ?>" value="<?php echo $book_id; ?>" name="<?php echo $this->get_field_name('book_id'); ?>" /><br />
393
+ <?php esc_html_e('0 means all.', 'gwolle-gb'); ?>
394
+ </p>
395
+
396
+ <p>
397
+ <label for="<?php echo $this->get_field_id('link_text'); ?>" /><?php esc_html_e('Link text:', 'gwolle-gb'); ?></label>
398
+ <br />
399
+ <input type="text" id="<?php echo $this->get_field_id('link_text'); ?>" value="<?php echo $link_text; ?>" name="<?php echo $this->get_field_name('link_text'); ?>" />
400
+ </p>
401
+
402
+ <p>
403
+ <label for="<?php echo $this->get_field_id('postid'); ?>"><?php esc_html_e('Select the page of the guestbook:', 'gwolle-gb'); ?></label>
404
+ <br />
405
+ <select id="<?php echo $this->get_field_id('postid'); ?>" name="<?php echo $this->get_field_name('postid'); ?>">
406
+ <option value="0"><?php esc_html_e('Select page', 'gwolle-gb'); ?></option>
407
+ <?php
408
+ $args = array(
409
+ 'post_type' => 'any',
410
+ 'orderby' => 'title',
411
+ 'order' => 'ASC',
412
+ 'posts_per_page' => 500,
413
+ 'meta_query' => array(
414
+ array(
415
+ 'key' => 'gwolle_gb_read',
416
+ 'value' => 'true',
417
+ ),
418
+ ),
419
+ 'update_post_term_cache' => false,
420
+ 'update_post_meta_cache' => false
421
+ );
422
+
423
+ $sel_query = new WP_Query( $args );
424
+ if ( $sel_query->have_posts() ) {
425
+ while ( $sel_query->have_posts() ) : $sel_query->the_post();
426
+ $selected = false;
427
+ if ( get_the_ID() == $postid ) {
428
+ $selected = true;
429
+ }
430
+ echo '<option value="' . get_the_ID() . '"'
431
+ . selected( $selected )
432
+ . '>'. get_the_title() . '</option>';
433
+ endwhile;
434
+ }
435
+ wp_reset_postdata(); ?>
436
+ </select>
437
+ </p>
438
+ <?php
439
+ }
440
+
441
+ }
442
+
443
+ function gwolle_gb_widget() {
444
+ register_widget('GwolleGB_Widget');
445
+ }
446
+ add_action('widgets_init', 'gwolle_gb_widget' );
447
+ }
frontend/gwolle_gb-entry.php ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * File: gwolle_gb-entry.php
4
+ * Template with function: gwolle_gb_entry_template()
5
+ *
6
+ * By default this file will be loaded from /wp-content/plugins/gwolle-gb-frontend/gwolle_gb-entry.php.
7
+ * If you place it in your childtheme or parenttheme, it will be overridden.
8
+ * Make sure you only return values, and not to use echo statements.
9
+ *
10
+ *
11
+ * $args: $entry, instance of gwolle_gb_entry.
12
+ * $first, boolean with true if it is the first entry.
13
+ * $counter,int with the number of the entry. (since 1.4.7)
14
+ *
15
+ * return: string, html with a single guestbook entry.
16
+ */
17
+
18
+
19
+ // No direct calls to this script
20
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
21
+ die('No direct calls allowed!');
22
+ }
23
+
24
+
25
+ if ( ! function_exists('gwolle_gb_entry_template') ) {
26
+ function gwolle_gb_entry_template( $entry, $first, $counter ) {
27
+
28
+ $html5 = current_theme_supports( 'html5' );
29
+
30
+ // Get the needed settings.
31
+ $form_setting = gwolle_gb_get_setting( 'form' );
32
+ $read_setting = gwolle_gb_get_setting( 'read' );
33
+
34
+ // Main Author div
35
+ $entry_output = '<div class="gb-entry';
36
+ $entry_class = ' gb-entry_' . $entry->get_id();
37
+ $entry_class .= ' gb-entry-count_' . $counter;
38
+ if ( is_int( $counter / 2 ) ) {
39
+ $entry_class .= ' gwolle_gb_even';
40
+ } else {
41
+ $entry_class .= ' gwolle_gb_uneven';
42
+ }
43
+ if ( $first == true ) {
44
+ $entry_class .= ' gwolle_gb_first';
45
+ }
46
+
47
+ if ( get_option( 'gwolle_gb-admin_style', 'false' ) === 'true' ) {
48
+ $author_id = $entry->get_author_id();
49
+ $is_moderator = gwolle_gb_is_moderator( $author_id );
50
+ if ( $is_moderator ) {
51
+ $entry_class .= ' admin-entry';
52
+ }
53
+ }
54
+ $entry_class = apply_filters( 'gwolle_gb_entry_class', $entry_class );
55
+ $entry_output .= $entry_class . '">';
56
+
57
+ if ( $html5 ) {
58
+ $entry_output .= '
59
+ <article>';
60
+ }
61
+
62
+ // Use this filter to just add something
63
+ $entry_output .= apply_filters( 'gwolle_gb_entry_read_add_before', '', $entry );
64
+
65
+ // Author Info
66
+ $entry_output .= '
67
+ <div class="gb-author-info">';
68
+
69
+ // Author Avatar
70
+ if ( isset($read_setting['read_avatar']) && $read_setting['read_avatar'] === 'true' ) {
71
+ $avatar = get_avatar( $entry->get_author_email(), 32, '', $entry->get_author_name() );
72
+ if ($avatar) {
73
+ $entry_output .= '
74
+ <span class="gb-author-avatar">' . $avatar . '</span>';
75
+ }
76
+ }
77
+
78
+ // Author Name
79
+ if ( isset($read_setting['read_name']) && $read_setting['read_name'] === 'true' ) {
80
+ $author_name_html = gwolle_gb_get_author_name_html($entry);
81
+ $entry_output .= '
82
+ <span class="gb-author-name">' . $author_name_html . '
83
+ </span>';
84
+ }
85
+
86
+ // Author Origin
87
+ if ( isset($read_setting['read_city']) && $read_setting['read_city'] === 'true' ) {
88
+ $origin = $entry->get_author_origin();
89
+ if ( strlen(str_replace(' ', '', $origin)) > 0 ) {
90
+ $entry_output .= '
91
+ <span class="gb-author-origin"> ' . /* translators: city or origin */ esc_html__('from', 'gwolle-gb') . ' ' . gwolle_gb_sanitize_output($origin) . '</span>';
92
+ }
93
+ }
94
+
95
+ // Entry Date and Time
96
+ if ( ( isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true' ) || ( isset($read_setting['read_date']) && $read_setting['read_date'] === 'true' ) ) {
97
+ $entry_output .= '
98
+ <span class="gb-datetime">
99
+ <span class="gb-date"> ';
100
+ if ( isset($read_setting['read_name']) && $read_setting['read_name'] === 'true' ) {
101
+ $entry_output .= /* translators: on a certain date */ esc_html__('wrote on', 'gwolle-gb') . ' ';
102
+ }
103
+ $entry_output .= date_i18n( get_option('date_format'), $entry->get_datetime() ) . '</span>';
104
+ if ( isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true' ) {
105
+ // Use 'at'. Follow WordPress Core: class-walker-comment.php
106
+ $entry_output .= '<span class="gb-time"> ' . /* translators: at a certain time */ esc_html__('at', 'gwolle-gb') . ' ' . trim(date_i18n( get_option('time_format'), $entry->get_datetime() )) . '</span>';
107
+ }
108
+ $entry_output .= ':
109
+ </span> ';
110
+ }
111
+
112
+ $entry_output .= '
113
+ </div>'; // <div class="gb-author-info">
114
+
115
+ // Main Content
116
+ if ( isset($read_setting['read_content']) && $read_setting['read_content'] === 'true' ) {
117
+ $entry_output .= '
118
+ <div class="gb-entry-content">';
119
+
120
+ // Use this filter to just add something
121
+ $entry_output .= apply_filters( 'gwolle_gb_entry_read_add_content_before', '', $entry );
122
+
123
+ $entry_content = gwolle_gb_sanitize_output( $entry->get_content(), 'content' );
124
+ if ( get_option( 'gwolle_gb-showLineBreaks', 'false' ) === 'true' ) {
125
+ $entry_content = nl2br($entry_content);
126
+ }
127
+ if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
128
+ $entry_content = gwolle_gb_bbcode_parse($entry_content);
129
+ } else {
130
+ $entry_content = gwolle_gb_bbcode_strip($entry_content);
131
+ }
132
+ $excerpt_length = (int) get_option( 'gwolle_gb-excerpt_length', 0 );
133
+ if ( $excerpt_length > 0 ) {
134
+ $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>';
135
+ $entry_excerpt = wp_trim_words( $entry_content, $excerpt_length, $readmore );
136
+ $entry_content = '
137
+ <div class="gb-entry-excerpt">' . $entry_excerpt . '</div>
138
+ <div class="gb-entry-full_content gwolle_gb_hide">' . $entry_content . '</div>';
139
+ }
140
+ if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
141
+ // should be done after wp_trim_words to keep all the smileys intact.
142
+ $entry_content = convert_smilies($entry_content);
143
+ }
144
+ $entry_output .= $entry_content;
145
+
146
+ // Use this filter to just add something
147
+ $entry_output .= apply_filters( 'gwolle_gb_entry_read_add_content', '', $entry );
148
+
149
+ $entry_output .= '
150
+ </div>';
151
+
152
+ /* Admin Reply */
153
+ $admin_reply_content = gwolle_gb_sanitize_output( $entry->get_admin_reply(), 'admin_reply' );
154
+ if ( $admin_reply_content != '' ) {
155
+
156
+ $class = '';
157
+ if ( get_option( 'gwolle_gb-admin_style', 'false' ) === 'true' ) {
158
+ $class = ' admin-entry';
159
+ }
160
+
161
+ $admin_reply = '
162
+ <div class="gb-entry-admin_reply' . $class . '">';
163
+
164
+ /* Admin Reply Author */
165
+ $admin_reply .= '
166
+ <div class="gb-admin_reply_uid">';
167
+ $admin_reply_name = gwolle_gb_is_moderator( $entry->get_admin_reply_uid() );
168
+ /* Admin Avatar */
169
+ if ( isset($read_setting['read_aavatar']) && $read_setting['read_aavatar'] === 'true' ) {
170
+ $user_info = get_userdata( $entry->get_admin_reply_uid() );
171
+ $admin_reply_email = $user_info->user_email;
172
+ $avatar = get_avatar( $admin_reply_email, 32, '', $admin_reply_name );
173
+ if ($avatar) {
174
+ $admin_reply .= '
175
+ <span class="gb-admin-avatar">' . $avatar . '</span>';
176
+ }
177
+ }
178
+ /* Admin Header */
179
+ if ( isset($read_setting['read_name']) && $read_setting['read_name'] === 'true' && $admin_reply_name ) {
180
+ $admin_reply_header = '
181
+ <em>' . esc_html__('Admin Reply by:', 'gwolle-gb') . ' ' . $admin_reply_name . '</em>';
182
+ } else {
183
+ $admin_reply_header = '
184
+ <em>' . esc_html__('Admin Reply:', 'gwolle-gb') . '</em>';
185
+ }
186
+ $admin_reply .= apply_filters( 'gwolle_gb_admin_reply_header', $admin_reply_header, $entry );
187
+ $admin_reply .= '
188
+ </div> ';
189
+
190
+ /* Admin Reply Content */
191
+ if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
192
+ $admin_reply_content = convert_smilies($admin_reply_content);
193
+ }
194
+ if ( get_option( 'gwolle_gb-showLineBreaks', 'false' ) === 'true' ) {
195
+ $admin_reply_content = nl2br($admin_reply_content);
196
+ }
197
+ if ( $excerpt_length > 0 ) {
198
+ $admin_reply_content = wp_trim_words( $admin_reply_content, $excerpt_length, '...' );
199
+ }
200
+ if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
201
+ $admin_reply_content = gwolle_gb_bbcode_parse($admin_reply_content);
202
+ } else {
203
+ $admin_reply_content = gwolle_gb_bbcode_strip($admin_reply_content);
204
+ }
205
+ $admin_reply .= '
206
+ <div class="gb-admin_reply_content">
207
+ ' . $admin_reply_content . '
208
+ </div>
209
+ </div>';
210
+
211
+ $entry_output .= $admin_reply;
212
+ }
213
+ }
214
+
215
+ /* Metabox for entry. */
216
+ $gb_metabox = apply_filters( 'gwolle_gb_entry_metabox_lines', '', $entry );
217
+ if ( $gb_metabox ) {
218
+ $entry_output .= '
219
+ <div class="gb-metabox-handle">' . esc_html__('...', 'gwolle-gb' ) . '</div>
220
+ <div class="gb-metabox gwolle_gb_invisible">' .
221
+ $gb_metabox . '
222
+ </div>';
223
+ }
224
+
225
+ /* Use this filter to just add something. */
226
+ $entry_output .= apply_filters( 'gwolle_gb_entry_read_add_after', '', $entry );
227
+
228
+ if ( $html5 ) {
229
+ $entry_output .= '
230
+ </article>';
231
+ }
232
+
233
+ $entry_output .= '
234
+ </div>
235
+ ';
236
+
237
+ return $entry_output;
238
+ }
239
+ }
frontend/images/index.html ADDED
File without changes
frontend/images/loading.gif ADDED
Binary file
frontend/index.html ADDED
File without changes
frontend/js/captcha.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /*
3
+ * JavaScript for CAPTCHA for Gwolle Guestbook Frontend.
4
+ * AJAX event for the CAPTCHA check.
5
+ */
6
+ jQuery(document).ready(function($) {
7
+ jQuery( "#gwolle_gb_captcha_code" ).focusout(function() {
8
+
9
+ var gwolle_gb_captcha_code = jQuery( '#gwolle_gb_captcha_code' ).val();
10
+
11
+ var data = {
12
+ action: 'gwolle_gb_captcha_ajax',
13
+ security: gwolle_gb_captcha.security,
14
+ gwolle_gb_captcha_prefix: gwolle_gb_captcha.gwolle_gb_captcha_prefix,
15
+ gwolle_gb_captcha_code: gwolle_gb_captcha_code
16
+ };
17
+
18
+ jQuery.post( gwolle_gb_captcha.ajaxurl, data, function(response) {
19
+
20
+ // Update form verification feedback
21
+ if ( 'true' == response ) {
22
+ document.getElementById( 'gwolle_gb_captcha_verify' ).innerHTML = '<span style="color:green">' + gwolle_gb_captcha.correct + '</span>';
23
+ jQuery( '#gwolle_gb_captcha_code' ).removeClass('error');
24
+ } else if ( 'false' == response ) {
25
+ document.getElementById( 'gwolle_gb_captcha_verify' ).innerHTML = '<span style="color:red">' + gwolle_gb_captcha.incorrect + '</span>';
26
+ jQuery( '#gwolle_gb_captcha_code' ).addClass('error');
27
+ }
28
+
29
+ });
30
+
31
+ });
32
+ });
frontend/js/gwolle-gb-frontend.js ADDED
@@ -0,0 +1,262 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * JavaScript for Gwolle Guestbook Frontend.
3
+ */
4
+
5
+
6
+ /*
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
+ document.getElementById("gwolle_gb_write_button").style.display = "none";
12
+ jQuery("#gwolle_gb_new_entry").slideDown(1000);
13
+ return false;
14
+ });
15
+ });
16
+
17
+
18
+ /*
19
+ * Event for clicking the readmore, and getting the full content of that entry visible.
20
+ */
21
+ jQuery(document).ready(function($) {
22
+ gwolle_gb_readmore();
23
+ gwolle_gb_scroll_callback.add( gwolle_gb_readmore );
24
+ gwolle_gb_ajax_callback.add( gwolle_gb_readmore );
25
+ });
26
+ function gwolle_gb_readmore() {
27
+ jQuery(".gwolle_gb_readmore").off('click');
28
+ jQuery(".gwolle_gb_readmore").on('click', function() {
29
+ var content_div = jQuery(this).parent().parent();
30
+ jQuery( content_div ).find('.gb-entry-excerpt').css( 'display', 'none' );
31
+ jQuery( content_div ).find('.gb-entry-full_content').slideDown(500);
32
+ return false;
33
+ });
34
+ }
35
+
36
+
37
+ /*
38
+ * Event for the metabox, toggle on and off.
39
+ */
40
+ jQuery(document).ready(function($) {
41
+ gwolle_gb_metabox_handle();
42
+ gwolle_gb_scroll_callback.add( gwolle_gb_metabox_handle );
43
+ gwolle_gb_ajax_callback.add( gwolle_gb_metabox_handle );
44
+ });
45
+ function gwolle_gb_metabox_handle() {
46
+ jQuery('div.gb-metabox-handle').off('click');
47
+ jQuery('div.gb-metabox-handle').on('click', function() {
48
+ var metabox_parent = jQuery(this).parent();
49
+ jQuery( metabox_parent ).find('div.gb-metabox').toggleClass( 'gwolle_gb_invisible' );
50
+ return false;
51
+ });
52
+ return false;
53
+ }
54
+
55
+
56
+ /*
57
+ * Event for Infinite Scroll. Get more pages when you are at the bottom.
58
+ */
59
+ var gwolle_gb_scroll_on = true; // The end has not been reached yet. We still get entries back.
60
+ var gwolle_gb_scroll_busy = false; // Handle async well. Only one request at a time.
61
+ var gwolle_gb_scroll_callback = jQuery.Callbacks(); // Callback function to be fired after AJAX request.
62
+
63
+ jQuery(document).ready(function($) {
64
+ if ( jQuery( "#gwolle_gb_entries" ).hasClass( 'gwolle_gb_infinite' ) ) {
65
+ var gwolle_gb_scroll_count = 2; // We already have page 1 listed.
66
+
67
+ var gwolle_gb_load_message = '<div class="gb-entry gwolle_gb_load_message">' + gwolle_gb_frontend_script.load_message + '</div>' ;
68
+ jQuery( "#gwolle_gb_entries" ).append( gwolle_gb_load_message );
69
+
70
+ jQuery(window).scroll(function() {
71
+ // have 10px diff for sensitivity.
72
+ if ( ( jQuery(window).scrollTop() > jQuery(document).height() - jQuery(window).height() -10 ) && gwolle_gb_scroll_on == true && gwolle_gb_scroll_busy == false) {
73
+ gwolle_gb_scroll_busy = true;
74
+ gwolle_gb_load_page(gwolle_gb_scroll_count);
75
+ gwolle_gb_scroll_count++;
76
+ }
77
+ });
78
+ }
79
+
80
+ function gwolle_gb_load_page( page ) {
81
+
82
+ jQuery('.gwolle_gb_load_message').toggle();
83
+
84
+ var gwolle_gb_end_message = '<div class="gb-entry gwolle_gb_end_message">' + gwolle_gb_frontend_script.end_message + '</div>' ;
85
+
86
+ var data = {
87
+ action: 'gwolle_gb_infinite_scroll',
88
+ pageNum: page,
89
+ permalink: window.location.href,
90
+ book_id: jQuery( "#gwolle_gb_entries" ).attr( "data-book_id" )
91
+ };
92
+
93
+ jQuery.post( gwolle_gb_frontend_script.ajax_url, data, function(response) {
94
+
95
+ jQuery('.gwolle_gb_load_message').toggle();
96
+ if ( response == 'false' ) {
97
+ jQuery( "#gwolle_gb_entries" ).append( gwolle_gb_end_message );
98
+ gwolle_gb_scroll_on = false;
99
+ } else {
100
+ jQuery( "#gwolle_gb_entries" ).append( response );
101
+ }
102
+
103
+ /*
104
+ * Add callback for after infinite scroll event. Used for metabox-handle for new entries.
105
+ *
106
+ * @since 2.3.0
107
+ *
108
+ * Example code for using the callback:
109
+ *
110
+ * jQuery(document).ready(function($) {
111
+ * gwolle_gb_scroll_callback.add( my_callback_function );
112
+ * });
113
+ *
114
+ * function my_callback_function() {
115
+ * console.log('This is the callback');
116
+ * return false;
117
+ * }
118
+ *
119
+ */
120
+ gwolle_gb_scroll_callback.fire();
121
+
122
+ gwolle_gb_scroll_busy = false;
123
+
124
+ });
125
+
126
+ return true;
127
+ }
128
+ });
129
+
130
+
131
+ /*
132
+ * AJAX Submit for Gwolle Guestbook Frontend.
133
+ */
134
+ var gwolle_gb_ajax_data = {};
135
+ gwolle_gb_ajax_data['permalink'] = window.location.href;
136
+
137
+ var gwolle_gb_ajax_callback = jQuery.Callbacks(); // Callback function to be fired after AJAX request.
138
+
139
+ jQuery(document).ready(function($) {
140
+ jQuery( '.gwolle_gb_form_ajax #gwolle_gb_submit' ).click( function( submit_button ) {
141
+
142
+ jQuery( '#gwolle_gb .gwolle_gb_submit_ajax_icon' ).css( 'display', 'inline' );
143
+
144
+ jQuery('.gwolle_gb_form_ajax input').each(function( index, value ) {
145
+ var val = jQuery( value ).val();
146
+ var id = jQuery( value ).attr('id');
147
+ gwolle_gb_ajax_data[id] = val;
148
+ });
149
+ jQuery('.gwolle_gb_form_ajax textarea').each(function( index, value ) {
150
+ var val = jQuery( value ).val();
151
+ var id = jQuery( value ).attr('id');
152
+ gwolle_gb_ajax_data[id] = val;
153
+ });
154
+ gwolle_gb_ajax_data['action'] = 'gwolle_gb_form_ajax';
155
+
156
+ jQuery.post( gwolle_gb_frontend_script.ajax_url, gwolle_gb_ajax_data, function( response ) {
157
+
158
+ if ( gwolle_gb_is_json( response ) ) {
159
+ data = JSON.parse( response );
160
+
161
+ if ( ( typeof data['saved'] == 'boolean' || typeof data['saved'] == 'number' )
162
+ && typeof data['gwolle_gb_messages'] == 'string'
163
+ && typeof data['gwolle_gb_errors'] == 'boolean'
164
+ && typeof data['gwolle_gb_error_fields'] == 'object' ) { // Too strict in testing?
165
+
166
+ var saved = data['saved'];
167
+ var gwolle_gb_messages = data['gwolle_gb_messages'];
168
+ var gwolle_gb_errors = data['gwolle_gb_errors'];
169
+ var gwolle_gb_error_fields = data['gwolle_gb_error_fields'];
170
+
171
+ // we have all the data we expect.
172
+ if ( typeof data['saved'] == 'number' ) {
173
+
174
+ // Show returned messages.
175
+ document.getElementById( 'gwolle_gb_messages_bottom_container' ).innerHTML = '';
176
+ document.getElementById( 'gwolle_gb_messages_top_container' ).innerHTML = '<div id="gwolle_gb_messages">' + data['gwolle_gb_messages'] + '</div>';
177
+ jQuery( '#gwolle_gb_messages' ).removeClass( 'error' );
178
+
179
+ // Remove error class from input fields.
180
+ jQuery( '#gwolle_gb_new_entry input' ).removeClass( 'error' );
181
+ jQuery( '#gwolle_gb_new_entry textarea' ).removeClass( 'error' );
182
+
183
+ // Remove form from view.
184
+ jQuery( '#gwolle_gb_new_entry' ).css( 'display', 'none' );
185
+ jQuery( '#gwolle_gb_write_button' ).css( 'display', 'block' );
186
+
187
+ // Prepend entry to the entry list if desired.
188
+ if ( typeof data['entry'] == 'string' ) {
189
+ jQuery( '#gwolle_gb_entries' ).prepend( data['entry'] );
190
+ }
191
+
192
+ // Scroll to messages div. Add 80px to offset for themes with fixed headers.
193
+ var offset = jQuery( '#gwolle_gb_messages_top_container' ).offset().top - 80;
194
+ jQuery('html, body').animate({
195
+ scrollTop: offset
196
+ }, 200, function() {
197
+ // Animation complete.
198
+ });
199
+
200
+ // Reset content textarea.
201
+ jQuery( '#gwolle_gb_content' ).val('');
202
+
203
+ jQuery( '#gwolle_gb .gwolle_gb_submit_ajax_icon' ).css( 'display', 'none' );
204
+
205
+ /*
206
+ * Add callback for after AJAX request. Used for metabox-handle for new entries.
207
+ *
208
+ * @since 2.3.0
209
+ *
210
+ * Example code for using the callback:
211
+ *
212
+ * jQuery(document).ready(function($) {
213
+ * gwolle_gb_ajax_callback.add( my_callback_function );
214
+ * });
215
+ *
216
+ * function my_callback_function() {
217
+ * console.log('This is the callback');
218
+ * return false;
219
+ * }
220
+ *
221
+ */
222
+ gwolle_gb_ajax_callback.fire();
223
+
224
+ } else {
225
+ // Not saved...
226
+
227
+ // Show returned messages.
228
+ document.getElementById( 'gwolle_gb_messages_top_container' ).innerHTML = '';
229
+ document.getElementById( 'gwolle_gb_messages_bottom_container' ).innerHTML = '<div id="gwolle_gb_messages" class="error">' + data['gwolle_gb_messages'] + '</div>';
230
+
231
+ // Add error class to failed input fields.
232
+ jQuery( '#gwolle_gb_new_entry input' ).removeClass( 'error' );
233
+ jQuery( '#gwolle_gb_new_entry textarea' ).removeClass( 'error' );
234
+ jQuery.each( gwolle_gb_error_fields, function( index, value ) {
235
+ jQuery( '#gwolle_gb_' + value ).addClass( 'error' );
236
+ });
237
+
238
+ jQuery( '#gwolle_gb .gwolle_gb_submit_ajax_icon' ).css( 'display', 'none' );
239
+
240
+ }
241
+ } else if (typeof console != "undefined") {
242
+ console.log( 'Gwolle Error: Something unexpected happened. (not the data that is expected)' );
243
+ }
244
+ } else {
245
+ if (typeof console != "undefined") {
246
+ console.log( 'Gwolle Error: Something unexpected happened. (not json data)' );
247
+ }
248
+ }
249
+ });
250
+ return false;
251
+ });
252
+ });
253
+
254
+
255
+ function gwolle_gb_is_json( string ) {
256
+ try {
257
+ JSON.parse( string );
258
+ } catch (e) {
259
+ return false;
260
+ }
261
+ return true;
262
+ }
frontend/js/index.html ADDED
File without changes
frontend/js/sss/license.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2
+ Version 2, December 2004
3
+
4
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
5
+
6
+ Everyone is permitted to copy and distribute verbatim or modified
7
+ copies of this license document, and changing it is allowed as long
8
+ as the name is changed.
9
+
10
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
11
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
12
+
13
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
14
+
frontend/js/sss/sss.js ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /** Super Simple Slider by @intllgnt **/
2
+
3
+ ;(function($, window, document, undefined ) {
4
+
5
+ $.fn.sss = function(options) {
6
+
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() {
18
+
19
+ // Variables
20
+
21
+ var
22
+ wrapper = $(this),
23
+ slides = wrapper.children().wrapAll('<div class="sss"/>').addClass('ssslide'),
24
+ slider = wrapper.find('.sss'),
25
+ slide_count = slides.length,
26
+ transition = settings.transition,
27
+ starting_slide = settings.startOn,
28
+ target = starting_slide > slide_count - 1 ? 0 : starting_slide,
29
+ animating = false,
30
+ clicked,
31
+ timer,
32
+ key,
33
+ prev,
34
+ next,
35
+
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'),
84
+ prev = slider.find('.sssprev');
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
+
105
+ });
106
+
107
+ };
108
+ })(jQuery, window, document);
109
+
110
+
111
+ //jQuery(document).ready(function($) {
112
+ jQuery('.gwolle_gb_widget_slider').sss({
113
+ slideShow : true, // Set to false to prevent SSS from automatically animating.
114
+ startOn : 0, // Slide to display first. Uses array notation (0 = first slide).
115
+ transition : 600, // Length (in milliseconds) of the fade transition.
116
+ speed : 5000, // Slideshow speed in milliseconds.
117
+ showNav : false // Set to false to hide navigation arrows.
118
+ });
119
+ //});
120
+
frontend/markitup/images/bold.png ADDED
Binary file
frontend/markitup/images/clean.png ADDED
Binary file
frontend/markitup/images/emoji.png ADDED
Binary file
frontend/markitup/images/handle.png ADDED
Binary file
frontend/markitup/images/image.png ADDED
Binary file
frontend/markitup/images/index.html ADDED
File without changes
frontend/markitup/images/italic.png ADDED
Binary file
frontend/markitup/images/link.png ADDED
Binary file
frontend/markitup/images/list-bullet.png ADDED
Binary file
frontend/markitup/images/list-numeric.png ADDED
Binary file
frontend/markitup/images/picture.png ADDED
Binary file
frontend/markitup/index.html ADDED
File without changes
frontend/markitup/jquery.markitup.js ADDED
@@ -0,0 +1,665 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ----------------------------------------------------------------------------
2
+ // markItUp! Universal MarkUp Engine, JQuery plugin
3
+ // v 1.1.14
4
+ // Dual licensed under the MIT and GPL licenses.
5
+ // ----------------------------------------------------------------------------
6
+ // Copyright (C) 2007-2012 Jay Salvat
7
+ // http://markitup.jaysalvat.com/
8
+ // ----------------------------------------------------------------------------
9
+ // Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ // of this software and associated documentation files (the "Software"), to deal
11
+ // in the Software without restriction, including without limitation the rights
12
+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ // copies of the Software, and to permit persons to whom the Software is
14
+ // furnished to do so, subject to the following conditions:
15
+ //
16
+ // The above copyright notice and this permission notice shall be included in
17
+ // all copies or substantial portions of the Software.
18
+ //
19
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ // THE SOFTWARE.
26
+ // ----------------------------------------------------------------------------
27
+ (function(jQuery) {
28
+ jQuery.fn.markItUp = function(settings, extraSettings) {
29
+ var method, params, options, ctrlKey, shiftKey, altKey; ctrlKey = shiftKey = altKey = false;
30
+
31
+ if (typeof settings == 'string') {
32
+ method = settings;
33
+ params = extraSettings;
34
+ }
35
+
36
+ options = { id: '',
37
+ nameSpace: '',
38
+ root: '',
39
+ previewHandler: false,
40
+ previewInWindow: '', // 'width=800, height=600, resizable=yes, scrollbars=yes'
41
+ previewInElement: '',
42
+ previewAutoRefresh: true,
43
+ previewPosition: 'after',
44
+ previewTemplatePath: '~/templates/preview.html',
45
+ previewParser: false,
46
+ previewParserPath: '',
47
+ previewParserVar: 'data',
48
+ resizeHandle: true,
49
+ beforeInsert: '',
50
+ afterInsert: '',
51
+ onEnter: {},
52
+ onShiftEnter: {},
53
+ onCtrlEnter: {},
54
+ onTab: {},
55
+ markupSet: [ { /* set */ } ]
56
+ };
57
+ jQuery.extend(options, settings, extraSettings);
58
+
59
+ // compute markItUp! path
60
+ if (!options.root) {
61
+ jQuery('script').each(function(a, tag) {
62
+ miuScript = jQuery(tag).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.jsjQuery/);
63
+ if (miuScript !== null) {
64
+ options.root = miuScript[1];
65
+ }
66
+ });
67
+ }
68
+
69
+ // Quick patch to keep compatibility with jQuery 1.9
70
+ var uaMatch = function(ua) {
71
+ ua = ua.toLowerCase();
72
+
73
+ var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
74
+ /(webkit)[ \/]([\w.]+)/.exec(ua) ||
75
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
76
+ /(msie) ([\w.]+)/.exec(ua) ||
77
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
78
+ [];
79
+
80
+ return {
81
+ browser: match[ 1 ] || "",
82
+ version: match[ 2 ] || "0"
83
+ };
84
+ };
85
+ var matched = uaMatch( navigator.userAgent );
86
+ var browser = {};
87
+
88
+ if (matched.browser) {
89
+ browser[matched.browser] = true;
90
+ browser.version = matched.version;
91
+ }
92
+ if (browser.chrome) {
93
+ browser.webkit = true;
94
+ } else if (browser.webkit) {
95
+ browser.safari = true;
96
+ }
97
+
98
+ return this.each(function() {
99
+ var jQueryjQuery, textarea, levels, scrollPosition, caretPosition, caretOffset,
100
+ clicked, hash, header, footer, previewWindow, template, iFrame, abort;
101
+ jQueryjQuery = jQuery(this);
102
+ textarea = this;
103
+ levels = [];
104
+ abort = false;
105
+ scrollPosition = caretPosition = 0;
106
+ caretOffset = -1;
107
+
108
+ options.previewParserPath = localize(options.previewParserPath);
109
+ options.previewTemplatePath = localize(options.previewTemplatePath);
110
+
111
+ if (method) {
112
+ switch(method) {
113
+ case 'remove':
114
+ remove();
115
+ break;
116
+ case 'insert':
117
+ markup(params);
118
+ break;
119
+ default:
120
+ jQuery.error('Method ' + method + ' does not exist on jQuery.markItUp');
121
+ }
122
+ return;
123
+ }
124
+
125
+ // apply the computed path to ~/
126
+ function localize(data, inText) {
127
+ if (inText) {
128
+ return data.replace(/("|')~\//g, "jQuery1"+options.root);
129
+ }
130
+ return data.replace(/^~\//, options.root);
131
+ }
132
+
133
+ // init and build editor
134
+ function init() {
135
+ id = ''; nameSpace = '';
136
+ if (options.id) {
137
+ id = 'id="'+options.id+'"';
138
+ } else if (jQueryjQuery.attr("id")) {
139
+ id = 'id="markItUp'+(jQueryjQuery.attr("id").substr(0, 1).toUpperCase())+(jQueryjQuery.attr("id").substr(1))+'"';
140
+
141
+ }
142
+ if (options.nameSpace) {
143
+ nameSpace = 'class="'+options.nameSpace+'"';
144
+ }
145
+ jQueryjQuery.wrap('<div '+nameSpace+'></div>');
146
+ jQueryjQuery.wrap('<div '+id+' class="markItUp"></div>');
147
+ jQueryjQuery.wrap('<div class="markItUpContainer"></div>');
148
+ jQueryjQuery.addClass("markItUpEditor");
149
+
150
+ // add the header before the textarea
151
+ header = jQuery('<div class="markItUpHeader"></div>').insertBefore(jQueryjQuery);
152
+ jQuery(dropMenus(options.markupSet)).appendTo(header);
153
+
154
+ // add the footer after the textarea
155
+ footer = jQuery('<div class="markItUpFooter"></div>').insertAfter(jQueryjQuery);
156
+
157
+ // add the resize handle after textarea
158
+ if (options.resizeHandle === true && browser.safari !== true) {
159
+ resizeHandle = jQuery('<div class="markItUpResizeHandle"></div>')
160
+ .insertAfter(jQueryjQuery)
161
+ .bind("mousedown.markItUp", function(e) {
162
+ var h = jQueryjQuery.height(), y = e.clientY, mouseMove, mouseUp;
163
+ mouseMove = function(e) {
164
+ jQueryjQuery.css("height", Math.max(20, e.clientY+h-y)+"px");
165
+ return false;
166
+ };
167
+ mouseUp = function(e) {
168
+ jQuery("html").unbind("mousemove.markItUp", mouseMove).unbind("mouseup.markItUp", mouseUp);
169
+ return false;
170
+ };
171
+ jQuery("html").bind("mousemove.markItUp", mouseMove).bind("mouseup.markItUp", mouseUp);
172
+ });
173
+ footer.append(resizeHandle);
174
+ }
175
+
176
+ // listen key events
177
+ jQueryjQuery.bind('keydown.markItUp', keyPressed).bind('keyup', keyPressed);
178
+
179
+ // bind an event to catch external calls
180
+ jQueryjQuery.bind("insertion.markItUp", function(e, settings) {
181
+ if (settings.target !== false) {
182
+ get();
183
+ }
184
+ if (textarea === jQuery.markItUp.focused) {
185
+ markup(settings);
186
+ }
187
+ });
188
+
189
+ // remember the last focus
190
+ jQueryjQuery.bind('focus.markItUp', function() {
191
+ jQuery.markItUp.focused = this;
192
+ });
193
+
194
+ if (options.previewInElement) {
195
+ refreshPreview();
196
+ }
197
+ }
198
+
199
+ // recursively build header with dropMenus from markupset
200
+ function dropMenus(markupSet) {
201
+ var ul = jQuery('<ul></ul>'), i = 0;
202
+ jQuery('li:hover > ul', ul).css('display', 'block');
203
+ jQuery.each(markupSet, function() {
204
+ var button = this, t = '', title, li, j;
205
+ title = (button.key) ? (button.name||'')+' [Ctrl+'+button.key+']' : (button.name||'');
206
+ key = (button.key) ? 'accesskey="'+button.key+'"' : '';
207
+ if (button.separator) {
208
+ li = jQuery('<li class="markItUpSeparator">'+(button.separator||'')+'</li>').appendTo(ul);
209
+ } else {
210
+ i++;
211
+ for (j = levels.length -1; j >= 0; j--) {
212
+ t += levels[j]+"-";
213
+ }
214
+ li = jQuery('<li class="markItUpButton markItUpButton'+t+(i)+' '+(button.className||'')+'"><a href="" '+key+' title="'+title+'">'+(button.name||'')+'</a></li>')
215
+ .bind("contextmenu.markItUp", function() { // prevent contextmenu on mac and allow ctrl+click
216
+ return false;
217
+ }).bind('click.markItUp', function(e) {
218
+ e.preventDefault();
219
+ }).bind("focusin.markItUp", function(){
220
+ jQueryjQuery.focus();
221
+ }).bind('mouseup', function() {
222
+ if (button.call) {
223
+ eval(button.call)();
224
+ }
225
+ setTimeout(function() { markup(button) },1);
226
+ return false;
227
+ }).bind('mouseenter.markItUp', function() {
228
+ jQuery('> ul', this).show();
229
+ jQuery(document).one('click', function() { // close dropmenu if click outside
230
+ jQuery('ul ul', header).hide();
231
+ }
232
+ );
233
+ }).bind('mouseleave.markItUp', function() {
234
+ jQuery('> ul', this).hide();
235
+ }).appendTo(ul);
236
+ if (button.dropMenu) {
237
+ levels.push(i);
238
+ jQuery(li).addClass('markItUpDropMenu').append(dropMenus(button.dropMenu));
239
+ }
240
+ }
241
+ });
242
+ levels.pop();
243
+ return ul;
244
+ }
245
+
246
+ // markItUp! markups
247
+ function magicMarkups(string) {
248
+ if (string) {
249
+ string = string.toString();
250
+ string = string.replace(/\(\!\(([\s\S]*?)\)\!\)/g,
251
+ function(x, a) {
252
+ var b = a.split('|!|');
253
+ if (altKey === true) {
254
+ return (b[1] !== undefined) ? b[1] : b[0];
255
+ } else {
256
+ return (b[1] === undefined) ? "" : b[0];
257
+ }
258
+ }
259
+ );
260
+ // [![prompt]!], [![prompt:!:value]!]
261
+ string = string.replace(/\[\!\[([\s\S]*?)\]\!\]/g,
262
+ function(x, a) {
263
+ var b = a.split(':!:');
264
+ if (abort === true) {
265
+ return false;
266
+ }
267
+ value = prompt(b[0], (b[1]) ? b[1] : '');
268
+ if (value === null) {
269
+ abort = true;
270
+ }
271
+ return value;
272
+ }
273
+ );
274
+ return string;
275
+ }
276
+ return "";
277
+ }
278
+
279
+ // prepare action
280
+ function prepare(action) {
281
+ if (jQuery.isFunction(action)) {
282
+ action = action(hash);
283
+ }
284
+ return magicMarkups(action);
285
+ }
286
+
287
+ // build block to insert
288
+ function build(string) {
289
+ var openWith = prepare(clicked.openWith);
290
+ var placeHolder = prepare(clicked.placeHolder);
291
+ var replaceWith = prepare(clicked.replaceWith);
292
+ var closeWith = prepare(clicked.closeWith);
293
+ var openBlockWith = prepare(clicked.openBlockWith);
294
+ var closeBlockWith = prepare(clicked.closeBlockWith);
295
+ var multiline = clicked.multiline;
296
+
297
+ if (replaceWith !== "") {
298
+ block = openWith + replaceWith + closeWith;
299
+ } else if (selection === '' && placeHolder !== '') {
300
+ block = openWith + placeHolder + closeWith;
301
+ } else {
302
+ string = string || selection;
303
+
304
+ var lines = [string], blocks = [];
305
+
306
+ if (multiline === true) {
307
+ lines = string.split(/\r?\n/);
308
+ }
309
+
310
+ for (var l = 0; l < lines.length; l++) {
311
+ line = lines[l];
312
+ var trailingSpaces;
313
+ if (trailingSpaces = line.match(/ *jQuery/)) {
314
+ blocks.push(openWith + line.replace(/ *jQuery/g, '') + closeWith + trailingSpaces);
315
+ } else {
316
+ blocks.push(openWith + line + closeWith);
317
+ }
318
+ }
319
+
320
+ block = blocks.join("\n");
321
+ }
322
+
323
+ block = openBlockWith + block + closeBlockWith;
324
+
325
+ return { block:block,
326
+ openBlockWith:openBlockWith,
327
+ openWith:openWith,
328
+ replaceWith:replaceWith,
329
+ placeHolder:placeHolder,
330
+ closeWith:closeWith,
331
+ closeBlockWith:closeBlockWith
332
+ };
333
+ }
334
+
335
+ // define markup to insert
336
+ function markup(button) {
337
+ var len, j, n, i;
338
+ hash = clicked = button;
339
+ get();
340
+ jQuery.extend(hash, { line:"",
341
+ root:options.root,
342
+ textarea:textarea,
343
+ selection:(selection||''),
344
+ caretPosition:caretPosition,
345
+ ctrlKey:ctrlKey,
346
+ shiftKey:shiftKey,
347
+ altKey:altKey
348
+ }
349
+ );
350
+ // callbacks before insertion
351
+ prepare(options.beforeInsert);
352
+ prepare(clicked.beforeInsert);
353
+ if ((ctrlKey === true && shiftKey === true) || button.multiline === true) {
354
+ prepare(clicked.beforeMultiInsert);
355
+ }
356
+ jQuery.extend(hash, { line:1 });
357
+
358
+ if ((ctrlKey === true && shiftKey === true)) {
359
+ lines = selection.split(/\r?\n/);
360
+ for (j = 0, n = lines.length, i = 0; i < n; i++) {
361
+ if (jQuery.trim(lines[i]) !== '') {
362
+ jQuery.extend(hash, { line:++j, selection:lines[i] } );
363
+ lines[i] = build(lines[i]).block;
364
+ } else {
365
+ lines[i] = "";
366
+ }
367
+ }
368
+
369
+ string = { block:lines.join('\n')};
370
+ start = caretPosition;
371
+ len = string.block.length + ((browser.opera) ? n-1 : 0);
372
+ } else if (ctrlKey === true) {
373
+ string = build(selection);
374
+ start = caretPosition + string.openWith.length;
375
+ len = string.block.length - string.openWith.length - string.closeWith.length;
376
+ len = len - (string.block.match(/ jQuery/) ? 1 : 0);
377
+ len -= fixIeBug(string.block);
378
+ } else if (shiftKey === true) {
379
+ string = build(selection);
380
+ start = caretPosition;
381
+ len = string.block.length;
382
+ len -= fixIeBug(string.block);
383
+ } else {
384
+ string = build(selection);
385
+ start = caretPosition + string.block.length ;
386
+ len = 0;
387
+ start -= fixIeBug(string.block);
388
+ }
389
+ if ((selection === '' && string.replaceWith === '')) {
390
+ caretOffset += fixOperaBug(string.block);
391
+
392
+ start = caretPosition + string.openBlockWith.length + string.openWith.length;
393
+ len = string.block.length - string.openBlockWith.length - string.openWith.length - string.closeWith.length - string.closeBlockWith.length;
394
+
395
+ caretOffset = jQueryjQuery.val().substring(caretPosition, jQueryjQuery.val().length).length;
396
+ caretOffset -= fixOperaBug(jQueryjQuery.val().substring(0, caretPosition));
397
+ }
398
+ jQuery.extend(hash, { caretPosition:caretPosition, scrollPosition:scrollPosition } );
399
+
400
+ if (string.block !== selection && abort === false) {
401
+ insert(string.block);
402
+ set(start, len);
403
+ } else {
404
+ caretOffset = -1;
405
+ }
406
+ get();
407
+
408
+ jQuery.extend(hash, { line:'', selection:selection });
409
+
410
+ // callbacks after insertion
411
+ if ((ctrlKey === true && shiftKey === true) || button.multiline === true) {
412
+ prepare(clicked.afterMultiInsert);
413
+ }
414
+ prepare(clicked.afterInsert);
415
+ prepare(options.afterInsert);
416
+
417
+ // refresh preview if opened
418
+ if (previewWindow && options.previewAutoRefresh) {
419
+ refreshPreview();
420
+ }
421
+
422
+ // reinit keyevent
423
+ shiftKey = altKey = ctrlKey = abort = false;
424
+ }
425
+
426
+ // Substract linefeed in Opera
427
+ function fixOperaBug(string) {
428
+ if (browser.opera) {
429
+ return string.length - string.replace(/\n*/g, '').length;
430
+ }
431
+ return 0;
432
+ }
433
+ // Substract linefeed in IE
434
+ function fixIeBug(string) {
435
+ if (browser.msie) {
436
+ return string.length - string.replace(/\r*/g, '').length;
437
+ }
438
+ return 0;
439
+ }
440
+
441
+ // add markup
442
+ function insert(block) {
443
+ if (document.selection) {
444
+ var newSelection = document.selection.createRange();
445
+ newSelection.text = block;
446
+ } else {
447
+ textarea.value = textarea.value.substring(0, caretPosition) + block + textarea.value.substring(caretPosition + selection.length, textarea.value.length);
448
+ }
449
+ }
450
+
451
+ // set a selection
452
+ function set(start, len) {
453
+ if (textarea.createTextRange){
454
+ // quick fix to make it work on Opera 9.5
455
+ if (browser.opera && browser.version >= 9.5 && len == 0) {
456
+ return false;
457
+ }
458
+ range = textarea.createTextRange();
459
+ range.collapse(true);
460
+ range.moveStart('character', start);
461
+ range.moveEnd('character', len);
462
+ range.select();
463
+ } else if (textarea.setSelectionRange ){
464
+ textarea.setSelectionRange(start, start + len);
465
+ }
466
+ textarea.scrollTop = scrollPosition;
467
+ textarea.focus();
468
+ }
469
+
470
+ // get the selection
471
+ function get() {
472
+ textarea.focus();
473
+
474
+ scrollPosition = textarea.scrollTop;
475
+ if (document.selection) {
476
+ selection = document.selection.createRange().text;
477
+ if (browser.msie) { // ie
478
+ var range = document.selection.createRange(), rangeCopy = range.duplicate();
479
+ rangeCopy.moveToElementText(textarea);
480
+ caretPosition = -1;
481
+ while(rangeCopy.inRange(range)) {
482
+ rangeCopy.moveStart('character');
483
+ caretPosition ++;
484
+ }
485
+ } else { // opera
486
+ caretPosition = textarea.selectionStart;
487
+ }
488
+ } else { // gecko & webkit
489
+ caretPosition = textarea.selectionStart;
490
+
491
+ selection = textarea.value.substring(caretPosition, textarea.selectionEnd);
492
+ }
493
+ return selection;
494
+ }
495
+
496
+ // open preview window
497
+ function preview() {
498
+ if (typeof options.previewHandler === 'function') {
499
+ previewWindow = true;
500
+ } else if (options.previewInElement) {
501
+ previewWindow = jQuery(options.previewInElement);
502
+ } else if (!previewWindow || previewWindow.closed) {
503
+ if (options.previewInWindow) {
504
+ previewWindow = window.open('', 'preview', options.previewInWindow);
505
+ jQuery(window).unload(function() {
506
+ previewWindow.close();
507
+ });
508
+ } else {
509
+ iFrame = jQuery('<iframe class="markItUpPreviewFrame"></iframe>');
510
+ if (options.previewPosition == 'after') {
511
+ iFrame.insertAfter(footer);
512
+ } else {
513
+ iFrame.insertBefore(header);
514
+ }
515
+ previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1];
516
+ }
517
+ } else if (altKey === true) {
518
+ if (iFrame) {
519
+ iFrame.remove();
520
+ } else {
521
+ previewWindow.close();
522
+ }
523
+ previewWindow = iFrame = false;
524
+ }
525
+ if (!options.previewAutoRefresh) {
526
+ refreshPreview();
527
+ }
528
+ if (options.previewInWindow) {
529
+ previewWindow.focus();
530
+ }
531
+ }
532
+
533
+ // refresh Preview window
534
+ function refreshPreview() {
535
+ renderPreview();
536
+ }
537
+
538
+ function renderPreview() {
539
+ var phtml;
540
+ if (options.previewHandler && typeof options.previewHandler === 'function') {
541
+ options.previewHandler( jQueryjQuery.val() );
542
+ } else if (options.previewParser && typeof options.previewParser === 'function') {
543
+ var data = options.previewParser( jQueryjQuery.val() );
544
+ writeInPreview(localize(data, 1) );
545
+ } else if (options.previewParserPath !== '') {
546
+ jQuery.ajax({
547
+ type: 'POST',
548
+ dataType: 'text',
549
+ global: false,
550
+ url: options.previewParserPath,
551
+ data: options.previewParserVar+'='+encodeURIComponent(jQueryjQuery.val()),
552
+ success: function(data) {
553
+ writeInPreview( localize(data, 1) );
554
+ }
555
+ });
556
+ } else {
557
+ if (!template) {
558
+ jQuery.ajax({
559
+ url: options.previewTemplatePath,
560
+ dataType: 'text',
561
+ global: false,
562
+ success: function(data) {
563
+ writeInPreview( localize(data, 1).replace(/<!-- content -->/g, jQueryjQuery.val()) );
564
+ }
565
+ });
566
+ }
567
+ }
568
+ return false;
569
+ }
570
+
571
+ function writeInPreview(data) {
572
+ if (options.previewInElement) {
573
+ jQuery(options.previewInElement).html(data);
574
+ } else if (previewWindow && previewWindow.document) {
575
+ try {
576
+ sp = previewWindow.document.documentElement.scrollTop
577
+ } catch(e) {
578
+ sp = 0;
579
+ }
580
+ previewWindow.document.open();
581
+ previewWindow.document.write(data);
582
+ previewWindow.document.close();
583
+ previewWindow.document.documentElement.scrollTop = sp;
584
+ }
585
+ }
586
+
587
+ // set keys pressed
588
+ function keyPressed(e) {
589
+ shiftKey = e.shiftKey;
590
+ altKey = e.altKey;
591
+ ctrlKey = (!(e.altKey && e.ctrlKey)) ? (e.ctrlKey || e.metaKey) : false;
592
+
593
+ if (e.type === 'keydown') {
594
+ if (ctrlKey === true) {
595
+ li = jQuery('a[accesskey="'+((e.keyCode == 13) ? '\\n' : String.fromCharCode(e.keyCode))+'"]', header).parent('li');
596
+ if (li.length !== 0) {
597
+ ctrlKey = false;
598
+ setTimeout(function() {
599
+ li.triggerHandler('mouseup');
600
+ },1);
601
+ return false;
602
+ }
603
+ }
604
+ if (e.keyCode === 13 || e.keyCode === 10) { // Enter key
605
+ if (ctrlKey === true) { // Enter + Ctrl
606
+ ctrlKey = false;
607
+ markup(options.onCtrlEnter);
608
+ return options.onCtrlEnter.keepDefault;
609
+ } else if (shiftKey === true) { // Enter + Shift
610
+ shiftKey = false;
611
+ markup(options.onShiftEnter);
612
+ return options.onShiftEnter.keepDefault;
613
+ } else { // only Enter
614
+ markup(options.onEnter);
615
+ return options.onEnter.keepDefault;
616
+ }
617
+ }
618
+ if (e.keyCode === 9) { // Tab key
619
+ if (shiftKey == true || ctrlKey == true || altKey == true) {
620
+ return false;
621
+ }
622
+ if (caretOffset !== -1) {
623
+ get();
624
+ caretOffset = jQueryjQuery.val().length - caretOffset;
625
+ set(caretOffset, 0);
626
+ caretOffset = -1;
627
+ return false;
628
+ } else {
629
+ markup(options.onTab);
630
+ return options.onTab.keepDefault;
631
+ }
632
+ }
633
+ }
634
+ }
635
+
636
+ function remove() {
637
+ jQueryjQuery.unbind(".markItUp").removeClass('markItUpEditor');
638
+ jQueryjQuery.parent('div').parent('div.markItUp').parent('div').replaceWith(jQueryjQuery);
639
+ jQueryjQuery.data('markItUp', null);
640
+ }
641
+
642
+ init();
643
+ });
644
+ };
645
+
646
+ jQuery.fn.markItUpRemove = function() {
647
+ return this.each(function() {
648
+ jQuery(this).markItUp('remove');
649
+ }
650
+ );
651
+ };
652
+
653
+ jQuery.markItUp = function(settings) {
654
+ var options = { target:false };
655
+ jQuery.extend(options, settings);
656
+ if (options.target) {
657
+ return jQuery(options.target).each(function() {
658
+ jQuery(this).focus();
659
+ jQuery(this).trigger('insertion', [options]);
660
+ });
661
+ } else {
662
+ jQuery('textarea').trigger('insertion', [options]);
663
+ }
664
+ };
665
+ })(jQuery);
frontend/markitup/set.js ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // ----------------------------------------------------------------------------
2
+ // markItUp!
3
+ // ----------------------------------------------------------------------------
4
+ // Copyright (C) 2011 Jay Salvat
5
+ // http://markitup.jaysalvat.com/
6
+ // ----------------------------------------------------------------------------
7
+ // Html tags
8
+ // http://en.wikipedia.org/wiki/html
9
+ // ----------------------------------------------------------------------------
10
+ // Basic set. Feel free to add more tags
11
+ // ----------------------------------------------------------------------------
12
+ var marktitup_mySettings = {
13
+ onTab: { keepDefault:false, replaceWith:' ' },
14
+ markupSet: [
15
+ {name: gwolle_gb_localize.bold, key:'B', openWith:'(!([b]|!|<b>)!)', closeWith:'(!([/b]|!|</b>)!)' },
16
+ {name: gwolle_gb_localize.italic, key:'I', openWith:'(!([i]|!|<i>)!)', closeWith:'(!([/i]|!|</i>)!)' },
17
+ {separator:'---------------' },
18
+ {name: gwolle_gb_localize.bullet, openWith:'[li]', closeWith:'[/li]', multiline:true, openBlockWith:'[ul]\n', closeBlockWith:'\n[/ul]'},
19
+ {name: gwolle_gb_localize.numeric, openWith:'[li]', closeWith:'[/li]', multiline:true, openBlockWith:'[ol]\n', closeBlockWith:'\n[/ol]'},
20
+ {separator:'---------------' },
21
+ {name: gwolle_gb_localize.picture, key:'P', replaceWith:'[img][![' + gwolle_gb_localize.source + ':!:http://]!][/img]' },
22
+ {name: gwolle_gb_localize.link, key:'L', openWith:'[url href=[![' + gwolle_gb_localize.link + ':!:http://]!]]', closeWith:'[/url]', placeHolder: gwolle_gb_localize.linktext },
23
+ {separator:'---------------' },
24
+ {name: gwolle_gb_localize.clean, className:'clean', replaceWith:function(markitup) { return markitup.selection.replace(/\[(.*?)\]/g, "") } },
25
+ {separator:'---------------' },
26
+ {name: gwolle_gb_localize.emoji, className:'emoji' }
27
+ ]
28
+ }
29
+
30
+
31
+ jQuery(document).ready(function() {
32
+
33
+ /* Initialize BBcode editor */
34
+ jQuery('#gwolle_gb_content').markItUp(marktitup_mySettings);
35
+ jQuery('#gwolle_gb_admin_reply').markItUp(marktitup_mySettings);
36
+
37
+
38
+ /* Slide the Emoji rows (frontend, main editor) */
39
+ jQuery( '#markItUpGwolle_gb_content li.markItUpButton.emoji a' ).click(function() {
40
+ if ( jQuery('.gwolle_gb_emoji').css('display') == 'none' ) {
41
+ jQuery('.gwolle_gb_emoji').slideDown("slow");
42
+ } else {
43
+ jQuery('.gwolle_gb_emoji').slideUp("slow");
44
+ }
45
+ });
46
+ /* Slide the Emoji rows (admin_reply editor) */
47
+ jQuery( '#markItUpGwolle_gb_admin_reply li.markItUpButton.emoji a' ).click(function() {
48
+ if ( jQuery('.gwolle_gb_admin_reply_emoji').css('display') == 'none' ) {
49
+ jQuery('.gwolle_gb_admin_reply_emoji').slideDown("slow");
50
+ } else {
51
+ jQuery('.gwolle_gb_admin_reply_emoji').slideUp("slow");
52
+ }
53
+ });
54
+
55
+
56
+ /* Insert the Emoji symbol (frontend, main editor) */
57
+ jQuery('.gwolle_gb_emoji a').click(function() {
58
+ emoticon = jQuery(this).attr("title");
59
+ jQuery.markItUp( { target:'#gwolle_gb_content', replaceWith:emoticon } );
60
+ });
61
+ /* Insert the Emoji symbol (admin_reply editor) */
62
+ jQuery('.gwolle_gb_admin_reply_emoji a').click(function() {
63
+ emoticon = jQuery(this).attr("title");
64
+ jQuery.markItUp( { target:'#gwolle_gb_admin_reply', replaceWith:emoticon } );
65
+ });
66
+ });
67
+
frontend/markitup/style.css ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* -------------------------------------------------------------------
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;
9
+ outline:none;
10
+ }
11
+ .markItUp a:link,
12
+ .markItUp a:visited {
13
+ text-decoration:none;
14
+ }
15
+
16
+ .markItUpEditor {
17
+ clear:both;
18
+ overflow:auto;
19
+ }
20
+ .markItUpPreviewFrame {
21
+ overflow:auto;
22
+ background-color:#FFFFFF;
23
+ border:1px solid #3C769D;
24
+ width:99.9%;
25
+ height:300px;
26
+ margin:5px 0;
27
+ }
28
+ .markItUpFooter {
29
+ width:100%;
30
+ cursor:n-resize;
31
+ }
32
+ .markItUpResizeHandle {
33
+ overflow:hidden;
34
+ width:22px; height:5px;
35
+ margin-left:auto;
36
+ margin-right:auto;
37
+ background-image:url(images/handle.png);
38
+ cursor:n-resize;
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;
47
+ content: '';
48
+ /* End of reset */
49
+ list-style:none;
50
+ float:left;
51
+ position:relative;
52
+ }
53
+ .markItUpHeader ul li ul {
54
+ display:none;
55
+ }
56
+ .markItUpHeader ul li:hover > ul {
57
+ display:block;
58
+ }
59
+ .markItUpHeader ul .markItUpDropMenu {
60
+ background:transparent url(images/menu.png) no-repeat 115% 50%;
61
+ margin-right:5px;
62
+ }
63
+ .markItUpHeader ul .markItUpDropMenu li {
64
+ margin-right:0px;
65
+ }
66
+ .markItUpHeader ul .markItUpSeparator {
67
+ margin:0 5px;
68
+ width:1px;
69
+ height:16px;
70
+ overflow:hidden;
71
+ background-color:#CCC;
72
+ }
73
+ .markItUpHeader ul ul .markItUpSeparator {
74
+ width:auto; height:1px;
75
+ margin:0px;
76
+ }
77
+ /* next rows of buttons */
78
+ .markItUpHeader ul ul {
79
+ display:none;
80
+ position:absolute;
81
+ top:18px; left:0px;
82
+ background:#F5F5F5;
83
+ border:1px solid #3C769D;
84
+ height:inherit;
85
+ }
86
+ .markItUpHeader ul ul li {
87
+ float:none;
88
+ border-bottom:1px solid #3C769D;
89
+ }
90
+ .markItUpHeader ul ul .markItUpDropMenu {
91
+ background:#F5F5F5 url(images/submenu.png) no-repeat 100% 50%;
92
+ }
93
+ /* next rows of buttons */
94
+ .markItUpHeader ul ul ul {
95
+ position:absolute;
96
+ top:-1px; left:150px;
97
+ }
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:16px;
106
+ height:16px;
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 {
119
+ display:block;
120
+ padding-left:0px;
121
+ text-indent:0;
122
+ width:120px;
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
+ }
131
+ /***************************************************************************************/
132
+ .html .markItUpEditor {
133
+ background-image:url(images/bg-editor-html.png);
134
+ }
135
+ .markdown .markItUpEditor {
136
+ background-image:url(images/bg-editor-markdown.png);
137
+ }
138
+ .textile .markItUpEditor {
139
+ background-image:url(images/bg-editor-textile.png);
140
+ }
141
+ .bbcode .markItUpEditor {
142
+ background-image:url(images/bg-editor-bbcode.png);
143
+ }
144
+ .wiki .markItUpEditor,
145
+ .dotclear .markItUpEditor {
146
+ background-image:url(images/bg-editor-wiki.png);
147
+ }
148
+
149
+ /* -------------------------------------------------------------------
150
+ // markItUp!
151
+ // By Jay Salvat - http://markitup.jaysalvat.com/
152
+ // ------------------------------------------------------------------*/
153
+ .markItUp .markItUpButton a {
154
+ background-position: 50% 0;
155
+ }
156
+ .markItUp .markItUpButton1 a {
157
+ background-image:url(images/bold.png);
158
+ }
159
+ .markItUp .markItUpButton2 a {
160
+ background-image:url(images/italic.png);
161
+ }
162
+ .markItUp .markItUpButton3 a {
163
+ background-image:url(images/list-bullet.png);
164
+ }
165
+ .markItUp .markItUpButton4 a {
166
+ background-image:url(images/list-numeric.png);
167
+ }
168
+
169
+ .markItUp .markItUpButton5 a {
170
+ background-image:url(images/picture.png);
171
+ }
172
+ .markItUp .markItUpButton6 a {
173
+ background-image:url(images/link.png);
174
+ }
175
+
176
+ .markItUp .markItUpButton7 a {
177
+ background-image:url(images/clean.png);
178
+ }
179
+ .markItUp .markItUpButton8 a {
180
+ background-image:url(images/emoji.png);
181
+ }
182
+
functions/gb-akismet.php ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Akismet Function
4
+ * Akismet API: http://akismet.com/development/api/
5
+ * Copied and edited from Contact Form 7
6
+ */
7
+
8
+
9
+ // No direct calls to this script
10
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
11
+ die('No direct calls allowed!');
12
+ }
13
+
14
+
15
+ /*
16
+ * $params:
17
+ * $entry: object $gwolle_gb_entry with a guestbook entry to be checked
18
+ * should be an instance of the gwolle_gb_entry class
19
+ * $action: string with the requested action
20
+ * - comment-check: check with Akismet service if entry is considered spam or not
21
+ * - submit-ham: submit as ham to Akismet service
22
+ * - submit-spam: submit as spam to Akismet service
23
+ *
24
+ * Return: - true if the entry is considered spam by akismet
25
+ * - false if no spam, or no akismet functionality is found
26
+ */
27
+
28
+ function gwolle_gb_akismet( $entry, $action ) {
29
+
30
+ $actions = array(
31
+ 'comment-check',
32
+ 'submit-ham',
33
+ 'submit-spam'
34
+ );
35
+
36
+ if ( !in_array( $action, $actions ) ) {
37
+ return false;
38
+ }
39
+
40
+ $akismet_active = get_option( 'gwolle_gb-akismet-active', 'false' );
41
+ if ( $akismet_active != 'true' ) {
42
+ // Akismet is not active, so we don't do anything
43
+ return false;
44
+ }
45
+
46
+ if ( is_callable( array( 'Akismet', 'get_api_key' ) ) ) { // Akismet v3.0+
47
+ $api_key = (bool) Akismet::get_api_key();
48
+ } else if ( function_exists( 'akismet_get_key' ) ) {
49
+ $api_key = (bool) akismet_get_key();
50
+ }
51
+
52
+ if ( !$api_key ) {
53
+ // No api key, no glory
54
+ return false;
55
+ }
56
+
57
+ if ( !is_object( $entry ) ) {
58
+ // No object, no fuss
59
+ return false;
60
+ }
61
+
62
+ $comment = array();
63
+
64
+ $comment['comment_author'] = $entry->get_author_name();
65
+
66
+ $comment['comment_author_email'] = $entry->get_author_email();
67
+
68
+ $comment['comment_author_origin'] = $entry->get_author_origin();
69
+
70
+ $comment['comment_author_url'] = $entry->get_author_website();
71
+
72
+ $comment['comment_content'] = gwolle_gb_bbcode_strip( $entry->get_content() );
73
+
74
+ $comment['blog'] = get_option( 'home' );
75
+ $comment['blog_lang'] = get_locale();
76
+ $comment['blog_charset'] = get_option( 'blog_charset' );
77
+ $comment['user_ip'] = preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
78
+ $comment['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
79
+ if ( isset($_SERVER['HTTP_REFERER']) ) {
80
+ $comment['referrer'] = $_SERVER['HTTP_REFERER'];
81
+ }
82
+
83
+ // http://blog.akismet.com/2012/06/19/pro-tip-tell-us-your-comment_type/
84
+ $comment['comment_type'] = 'comment';
85
+
86
+ $permalink = get_permalink( get_the_ID() );
87
+ if ( $permalink ) {
88
+ $comment['permalink'] = $permalink;
89
+ }
90
+
91
+ $ignore = array( 'HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW' );
92
+ foreach ( $_SERVER as $key => $value ) {
93
+ if ( ! in_array( $key, (array) $ignore ) )
94
+ $comment["$key"] = $value;
95
+ }
96
+
97
+ // Send the thing to the Akismet service
98
+ return gwolle_gb_akismet_entry_check( $comment, $action );
99
+
100
+ }
101
+
102
+
103
+ /*
104
+ * Check the $comment against Akismet service
105
+ *
106
+ * Parameters:
107
+ * $comment: Array with the comment
108
+ * $action: string with 'comment-check', 'submit-ham', 'submit-spam'
109
+ *
110
+ * Return: true or false
111
+ */
112
+
113
+ function gwolle_gb_akismet_entry_check( $comment, $action ) {
114
+ global $akismet_api_host, $akismet_api_port;
115
+
116
+ $query_string = '';
117
+
118
+ foreach ( $comment as $key => $data ) {
119
+ if (is_array($data)) { continue; }
120
+ $query_string .= $key . '=' . urlencode( wp_unslash( (string) $data ) ) . '&';
121
+ }
122
+
123
+ if ( is_callable( array( 'Akismet', 'http_post' ) ) ) {
124
+ // Akismet v3.0+
125
+ $response = Akismet::http_post( $query_string, $action );
126
+ } else {
127
+ $response = akismet_http_post( $query_string, $akismet_api_host, '/1.1/' . $action, $akismet_api_port );
128
+ }
129
+
130
+ //if ( WP_DEBUG ) { echo "Akismet response: "; var_dump($response); }
131
+
132
+ if ( $action == 'comment-check' && isset( $response[1] ) && 'true' == $response[1] ) {
133
+ return true;
134
+ } else if ( $action == 'submit-ham' && isset( $response[1] ) ) {
135
+ return true;
136
+ } else if ( $action == 'submit-spam' && isset( $response[1] ) ) {
137
+ return true;
138
+ } else {
139
+ return false;
140
+ }
141
+
142
+ }
functions/gb-bbcode_emoji.php ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Parse the BBcode into HTML for output.
12
+ */
13
+ function gwolle_gb_bbcode_parse( $str ){
14
+ $bb[] = "#\[b\](.*?)\[/b\]#si";
15
+ $html[] = "<strong>\\1</strong>";
16
+ $bb[] = "#\[i\](.*?)\[/i\]#si";
17
+ $html[] = "<i>\\1</i>";
18
+ $bb[] = "#\[u\](.*?)\[/u\]#si";
19
+ $html[] = "<u>\\1</u>";
20
+ $bb[] = "#\[ul\](.*?)\[/ul\]#si";
21
+ $html[] = "<ul>\\1</ul>";
22
+ $bb[] = "#\[ol\](.*?)\[/ol\]#si";
23
+ $html[] = "<ol>\\1</ol>";
24
+ $bb[] = "#\[li\](.*?)\[/li\]#si";
25
+ $html[] = "<li>\\1</li>";
26
+ $str = preg_replace($bb, $html, $str);
27
+
28
+ $pattern="#\[url href=([^\]]*)\]([^\[]*)\[/url\]#i";
29
+ $bbcode_link_rel = apply_filters( 'gwolle_gb_bbcode_link_rel', 'nofollow' );
30
+ $replace='<a href="\\1" target="_blank" rel="' . $bbcode_link_rel . '">\\2</a>';
31
+ $str=preg_replace($pattern, $replace, $str);
32
+
33
+ $pattern="#\[img\]([^\[]*)\[/img\]#i";
34
+ $replace='<img src="\\1" alt=""/>';
35
+ $str=preg_replace($pattern, $replace, $str);
36
+
37
+ if ( get_option( 'gwolle_gb-showLineBreaks', 'false' ) === 'true' ) {
38
+ // fix nl2br adding <br />'s
39
+ $str = str_replace( '<br /><ol>', '<ol>', $str );
40
+ $str = str_replace( '<ol><br />', '<ol>', $str );
41
+ $str = str_replace( '</ol><br />', '</ol>', $str );
42
+ $str = str_replace( '<br /><ul>', '<ul>', $str );
43
+ $str = str_replace( '<ul><br />', '<ul>', $str );
44
+ $str = str_replace( '</ul><br />', '</ul>', $str );
45
+ $str = str_replace( '</li><br />', '</li>', $str );
46
+ }
47
+
48
+ return $str;
49
+ }
50
+
51
+
52
+ /*
53
+ * Strip the BBcode from the output.
54
+ */
55
+ function gwolle_gb_bbcode_strip( $str ){
56
+ $bb[] = "#\[b\](.*?)\[/b\]#si";
57
+ $html[] = "\\1";
58
+ $bb[] = "#\[i\](.*?)\[/i\]#si";
59
+ $html[] = "\\1";
60
+ $bb[] = "#\[u\](.*?)\[/u\]#si";
61
+ $html[] = "\\1";
62
+ $bb[] = "#\[ul\](.*?)\[/ul\]#si";
63
+ $html[] = "\\1";
64
+ $bb[] = "#\[ol\](.*?)\[/ol\]#si";
65
+ $html[] = "\\1";
66
+ $bb[] = "#\[li\](.*?)\[/li\]#si";
67
+ $html[] = "\\1";
68
+ $str = preg_replace($bb, $html, $str);
69
+
70
+ $pattern="#\[url href=([^\]]*)\]([^\[]*)\[/url\]#i";
71
+ $replace='\\1';
72
+ $str=preg_replace($pattern, $replace, $str);
73
+
74
+ $pattern="#\[img\]([^\[]*)\[/img\]#i";
75
+ $replace='';
76
+ $str=preg_replace($pattern, $replace, $str);
77
+
78
+ return $str;
79
+ }
80
+
81
+
82
+ /*
83
+ * Get the list of Emoji for the form.
84
+ */
85
+ function gwolle_gb_get_emoji() {
86
+ $emoji = '
87
+ <a title="😄" class="gwolle_gb_emoji_1 noslimstat">😄</a>
88
+ <a title="😃" class="gwolle_gb_emoji_2 noslimstat">😃</a>
89
+ <a title="😊" class="gwolle_gb_emoji_3 noslimstat">😊</a>
90
+ <a title="😉" class="gwolle_gb_emoji_4 noslimstat">😉</a>
91
+ <a title="😍" class="gwolle_gb_emoji_5 noslimstat">😍</a>
92
+ <a title="😚" class="gwolle_gb_emoji_6 noslimstat">😚</a>
93
+ <a title="😗" class="gwolle_gb_emoji_7 noslimstat">😗</a>
94
+ <a title="😜" class="gwolle_gb_emoji_8 noslimstat">😜</a>
95
+ <a title="😛" class="gwolle_gb_emoji_9 noslimstat">😛</a>
96
+ <a title="😳" class="gwolle_gb_emoji_10 noslimstat">😳</a>
97
+ <a title="😁" class="gwolle_gb_emoji_11 noslimstat">😁</a>
98
+ <a title="😬" class="gwolle_gb_emoji_12 noslimstat">😬</a>
99
+ <a title="😌" class="gwolle_gb_emoji_13 noslimstat">😌</a>
100
+ <a title="😞" class="gwolle_gb_emoji_14 noslimstat">😞</a>
101
+ <a title="😢" class="gwolle_gb_emoji_15 noslimstat">😢</a>
102
+ <a title="😂" class="gwolle_gb_emoji_16 noslimstat">😂</a>
103
+ <a title="😭" class="gwolle_gb_emoji_17 noslimstat">😭</a>
104
+ <a title="😅" class="gwolle_gb_emoji_18 noslimstat">😅</a>
105
+ <a title="😓" class="gwolle_gb_emoji_19 noslimstat">😓</a>
106
+ <a title="😩" class="gwolle_gb_emoji_20 noslimstat">😩</a>
107
+ <a title="😮" class="gwolle_gb_emoji_21 noslimstat">😮</a>
108
+ <a title="😱" class="gwolle_gb_emoji_22 noslimstat">😱</a>
109
+ <a title="😠" class="gwolle_gb_emoji_23 noslimstat">😠</a>
110
+ <a title="😡" class="gwolle_gb_emoji_24 noslimstat">😡</a>
111
+ <a title="😤" class="gwolle_gb_emoji_25 noslimstat">😤</a>
112
+ <a title="😋" class="gwolle_gb_emoji_26 noslimstat">😋</a>
113
+ <a title="😎" class="gwolle_gb_emoji_27 noslimstat">😎</a>
114
+ <a title="😴" class="gwolle_gb_emoji_28 noslimstat">😴</a>
115
+ <a title="😈" class="gwolle_gb_emoji_29 noslimstat">😈</a>
116
+ <a title="😇" class="gwolle_gb_emoji_30 noslimstat">😇</a>
117
+ <a title="😕" class="gwolle_gb_emoji_31 noslimstat">😕</a>
118
+ <a title="😏" class="gwolle_gb_emoji_32 noslimstat">😏</a>
119
+ <a title="😑" class="gwolle_gb_emoji_33 noslimstat">😑</a>
120
+ <a title="👲" class="gwolle_gb_emoji_34 noslimstat">👲</a>
121
+ <a title="👮" class="gwolle_gb_emoji_35 noslimstat">👮</a>
122
+ <a title="💂" class="gwolle_gb_emoji_36 noslimstat">💂</a>
123
+ <a title="👶" class="gwolle_gb_emoji_37 noslimstat">👶</a>
124
+ <a title="❤" class="gwolle_gb_emoji_38 noslimstat">❤</a>
125
+ <a title="💔" class="gwolle_gb_emoji_39 noslimstat">💔</a>
126
+ <a title="💕" class="gwolle_gb_emoji_40 noslimstat">💕</a>
127
+ <a title="💘" class="gwolle_gb_emoji_41 noslimstat">💘</a>
128
+ <a title="💌" class="gwolle_gb_emoji_42 noslimstat">💌</a>
129
+ <a title="💋" class="gwolle_gb_emoji_43 noslimstat">💋</a>
130
+ <a title="🎁" class="gwolle_gb_emoji_44 noslimstat">🎁</a>
131
+ <a title="💰" class="gwolle_gb_emoji_45 noslimstat">💰</a>
132
+ <a title="💍" class="gwolle_gb_emoji_46 noslimstat">💍</a>
133
+ <a title="👍" class="gwolle_gb_emoji_47 noslimstat">👍</a>
134
+ <a title="👎" class="gwolle_gb_emoji_48 noslimstat">👎</a>
135
+ <a title="👌" class="gwolle_gb_emoji_49 noslimstat">👌</a>
136
+ <a title="✌️" class="gwolle_gb_emoji_50 noslimstat">✌️</a>
137
+ <a title="🤘️" class="gwolle_gb_emoji_51 noslimstat">🤘</a>
138
+ <a title="👏" class="gwolle_gb_emoji_52 noslimstat">👏</a>
139
+ <a title="🎵" class="gwolle_gb_emoji_53 noslimstat">🎵</a>
140
+ <a title="☕️" class="gwolle_gb_emoji_54 noslimstat">☕️</a>
141
+ <a title="🍵" class="gwolle_gb_emoji_55 noslimstat">🍵</a>
142
+ <a title="🍺" class="gwolle_gb_emoji_56 noslimstat">🍺</a>
143
+ <a title="🍷" class="gwolle_gb_emoji_57 noslimstat">🍷</a>
144
+ <a title="🍼" class="gwolle_gb_emoji_58 noslimstat">🍼</a>
145
+ <a title="☀️" class="gwolle_gb_emoji_59 noslimstat">☀️</a>
146
+ <a title="🌤" class="gwolle_gb_emoji_60 noslimstat">🌤</a>
147
+ <a title="🌦" class="gwolle_gb_emoji_61 noslimstat">🌦</a>
148
+ <a title="🌧" class="gwolle_gb_emoji_62 noslimstat">🌧</a>
149
+ <a title="🌜" class="gwolle_gb_emoji_63 noslimstat">🌜</a>
150
+ <a title="🌈" class="gwolle_gb_emoji_64 noslimstat">🌈</a>
151
+ <a title="🏝" class="gwolle_gb_emoji_65 noslimstat">🏝</a>
152
+ ';
153
+ /*
154
+ * Filters the list of emoji shown on textarea/bbcode/emoji at the frontend form.
155
+ *
156
+ * Returning the altered string is the recommended way use this filter.
157
+ * You can add emoji characters or replace them with str_replace.
158
+ *
159
+ * @since 2.3.0
160
+ *
161
+ * @param string $emoji The list of Emoji.
162
+ */
163
+ $emoji = apply_filters( 'gwolle_gb_get_emoji', $emoji );
164
+ return $emoji;
165
+ }
166
+
167
+
168
+ /*
169
+ * Convert to 3byte Emoji for storing in db, if db-charset is not utf8mb4.
170
+ *
171
+ * $Args: - string, text string to encode
172
+ * - field, the database field that is used for that string, will be checked on charset.
173
+ *
174
+ * Return: string, encoded or not.
175
+ */
176
+ function gwolle_gb_maybe_encode_emoji( $string, $field ) {
177
+ global $wpdb;
178
+ $db_charset = $wpdb->charset;
179
+ if ( 'utf8mb4' != $db_charset ) {
180
+ if ( function_exists( 'wp_encode_emoji' ) && function_exists( 'mb_convert_encoding' ) ) {
181
+ // No support for the proper charset, so encode to html entities.
182
+ $string = wp_encode_emoji( $string );
183
+ // Enable this for debugging.
184
+ // gwolle_gb_add_message( '<p class="debug_emoji"><strong>Ran wp_encode_emoji function.</strong></p>', false, false );
185
+ }
186
+ // Enable this for debugging.
187
+ // gwolle_gb_add_message( '<p class="debug_emoji"><strong>MySQL Charset: ' . $charset . '</strong></p>', false, false );
188
+ }
189
+ return $string;
190
+ }
functions/gb-cache.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Clear the cache of the most common Cache plugins.
12
+ */
13
+ function gwolle_gb_clear_cache( $entry = false ) {
14
+
15
+ /* Default WordPress */
16
+ wp_cache_flush();
17
+
18
+
19
+ /* Gwolle: Transient for admin menu counter */
20
+ delete_transient( 'gwolle_gb_menu_counter' );
21
+
22
+ /* Gwolle: Transient for frontend pagination counter */
23
+ if ( is_object( $entry ) && is_a( $entry, 'gwolle_gb_entry' ) ) {
24
+ $book_id = $entry->get_book_id();
25
+ $key = 'gwolle_gb_frontend_pagination_book_' . $book_id;
26
+ delete_transient( $key );
27
+ }
28
+
29
+
30
+ /* Cachify */
31
+ if ( class_exists('Cachify') ) {
32
+ $cachify = new Cachify();
33
+ if ( method_exists($cachify, 'flush_total_cache') ) {
34
+ $cachify->flush_total_cache(true);
35
+ }
36
+ }
37
+
38
+ /* W3 Total Cache */
39
+ if ( function_exists('w3tc_pgcache_flush') ) {
40
+ w3tc_pgcache_flush();
41
+ }
42
+
43
+ /* WP Fastest Cache */
44
+ if ( class_exists('WpFastestCache') ) {
45
+ $WpFastestCache = new WpFastestCache();
46
+ if ( method_exists($WpFastestCache, 'deleteCache') ) {
47
+ $WpFastestCache->deleteCache();
48
+ }
49
+ }
50
+
51
+ /* WP Super Cache */
52
+ if ( function_exists('wp_cache_clear_cache') ) {
53
+ $GLOBALS["super_cache_enabled"] = 1;
54
+ wp_cache_clear_cache();
55
+ }
56
+
57
+ }
58
+ add_action( 'gwolle_gb_save_entry_admin', 'gwolle_gb_clear_cache' );
59
+ add_action( 'gwolle_gb_save_entry_frontend', 'gwolle_gb_clear_cache' );
functions/gb-class-entry.php ADDED
@@ -0,0 +1,656 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Gwolle Guestbook
12
+ *
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
+
38
+
39
+ class gwolle_gb_entry {
40
+
41
+ protected $id, $author_name, $author_id, $author_email, $author_origin, $author_website,
42
+ $author_ip, $author_host, $content, $datetime, $ischecked, $checkedby, $istrash, $isspam,
43
+ $admin_reply, $admin_reply_uid, $book_id;
44
+
45
+ /*
46
+ * Construct an instance
47
+ */
48
+
49
+ public function __construct() {
50
+ $this->id = (int) 0;
51
+ $this->author_name = (string) "";
52
+ $this->author_id = (int) 0;
53
+ $this->author_email = (string) "";
54
+ $this->author_origin = (string) "";
55
+ $this->author_website = (string) "";
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;
63
+ $this->isspam = (int) 0;
64
+ $this->admin_reply = (string) "";
65
+ $this->admin_reply_uid = (int) 0;
66
+ $this->book_id = (int) 1;
67
+ }
68
+
69
+
70
+ /*
71
+ * function load
72
+ * Loads the entry from database and sets the data in the instance
73
+ *
74
+ * Parameter:
75
+ * $id id of the entry to be loaded
76
+ *
77
+ * Return: true or false, depending on success
78
+ */
79
+
80
+ public function load( $id ) {
81
+ global $wpdb;
82
+
83
+ $where = " 1 = %d";
84
+ $values = Array(1);
85
+
86
+ if ( !is_numeric($id) ) {
87
+ return false;
88
+ }
89
+
90
+ if ((int) $id > 0) {
91
+ $where .= "
92
+ AND
93
+ id = %d";
94
+ $values[] = $id;
95
+ } else {
96
+ return false;
97
+ }
98
+
99
+ $tablename = $wpdb->prefix . "gwolle_gb_entries";
100
+
101
+ $sql = "
102
+ SELECT
103
+ `id`,
104
+ `author_name`,
105
+ `author_id`,
106
+ `author_email`,
107
+ `author_origin`,
108
+ `author_website`,
109
+ `author_ip`,
110
+ `author_host`,
111
+ `content`,
112
+ `datetime`,
113
+ `ischecked`,
114
+ `checkedby`,
115
+ `istrash`,
116
+ `isspam`,
117
+ `admin_reply`,
118
+ `admin_reply_uid`,
119
+ `book_id`
120
+ FROM
121
+ " . $tablename . "
122
+ WHERE
123
+ " . $where . "
124
+ ;";
125
+
126
+ $sql = $wpdb->prepare( $sql, $values );
127
+
128
+ /* Support caching of the entry. */
129
+ $key = md5( serialize( $sql ) );
130
+ $cache_key = "gwolle_gb_class_load:$key";
131
+ $cache_value = wp_cache_get( $cache_key );
132
+
133
+ if ( false === $cache_value ) {
134
+
135
+ // Do a real query.
136
+ $data = $wpdb->get_row( $sql, ARRAY_A );
137
+
138
+ wp_cache_add( $cache_key, $data );
139
+
140
+ // $wpdb->print_error();
141
+ // echo "number of rows: " . $wpdb->num_rows;
142
+
143
+ } else {
144
+
145
+ // This is data from cache.
146
+ $data = $cache_value;
147
+
148
+ }
149
+
150
+ if ( empty($data) ) {
151
+ return false;
152
+ }
153
+
154
+ // Use the fields that the setter method expects
155
+ $item = array(
156
+ 'id' => (int) $data['id'],
157
+ 'author_name' => stripslashes($data['author_name']),
158
+ 'author_id' => (int) $data['author_id'],
159
+ 'author_email' => stripslashes($data['author_email']),
160
+ 'author_origin' => stripslashes($data['author_origin']),
161
+ 'author_website' => stripslashes($data['author_website']),
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'],
169
+ 'isspam' => (int) $data['isspam'],
170
+ 'admin_reply' => stripslashes($data['admin_reply']),
171
+ 'admin_reply_uid' => (int) $data['admin_reply_uid'],
172
+ 'book_id' => (int) $data['book_id'],
173
+ );
174
+
175
+ $this->set_data( $item );
176
+
177
+ return true;
178
+ }
179
+
180
+
181
+ /* function save
182
+ * Saves the current $entry to database
183
+ * Return:
184
+ * - id: if saved
185
+ * - false: if not saved
186
+ */
187
+
188
+ public function save() {
189
+ global $wpdb;
190
+
191
+ // Add filter for the entry before saving, so devs can manipulate it. This is probably the right place.
192
+ $data = apply_filters( 'gwolle_gb_entry_save', get_object_vars( $this ) );
193
+ $this->set_data( $data );
194
+
195
+ $this->check_userids();
196
+
197
+ if ( $this->get_id() ) {
198
+ // entry exists, use UPDATE
199
+
200
+ //if ( WP_DEBUG ) { echo "Saving ID:: "; var_dump($this->get_id()); }
201
+
202
+ $sql = "
203
+ UPDATE $wpdb->gwolle_gb_entries
204
+ SET
205
+ author_name = %s,
206
+ author_id = %d,
207
+ author_email = %s,
208
+ author_origin = %s,
209
+ author_website = %s,
210
+ author_ip = %s,
211
+ author_host = %s,
212
+ content = %s,
213
+ datetime = %d,
214
+ isspam = %d,
215
+ ischecked = %s,
216
+ checkedby = %d,
217
+ istrash = %d,
218
+ admin_reply = %s,
219
+ admin_reply_uid = %d,
220
+ book_id = %d
221
+ WHERE
222
+ id = %d
223
+ ";
224
+
225
+ $values = array(
226
+ $this->get_author_name(),
227
+ $this->get_author_id(),
228
+ $this->get_author_email(),
229
+ $this->get_author_origin(),
230
+ $this->get_author_website(),
231
+ $this->get_author_ip(),
232
+ $this->get_author_host(),
233
+ $this->get_content(),
234
+ $this->get_datetime(),
235
+ $this->get_isspam(),
236
+ $this->get_ischecked(),
237
+ $this->get_checkedby(),
238
+ $this->get_istrash(),
239
+ $this->get_admin_reply(),
240
+ $this->get_admin_reply_uid(),
241
+ $this->get_book_id(),
242
+ $this->get_id()
243
+ );
244
+
245
+ $result = $wpdb->query(
246
+ $wpdb->prepare( $sql, $values )
247
+ );
248
+
249
+ } else {
250
+ // entry is new, use INSERT
251
+
252
+ $result = $wpdb->query( $wpdb->prepare(
253
+ "
254
+ INSERT INTO $wpdb->gwolle_gb_entries
255
+ (
256
+ author_name,
257
+ author_id,
258
+ author_email,
259
+ author_origin,
260
+ author_website,
261
+ author_ip,
262
+ author_host,
263
+ content,
264
+ datetime,
265
+ isspam,
266
+ ischecked,
267
+ checkedby,
268
+ istrash,
269
+ admin_reply,
270
+ admin_reply_uid,
271
+ book_id
272
+ ) VALUES (
273
+ %s,
274
+ %d,
275
+ %s,
276
+ %s,
277
+ %s,
278
+ %s,
279
+ %s,
280
+ %s,
281
+ %d,
282
+ %d,
283
+ %d,
284
+ %d,
285
+ %d,
286
+ %s,
287
+ %d,
288
+ %d
289
+ )
290
+ ",
291
+ array(
292
+ $this->get_author_name(),
293
+ $this->get_author_id(),
294
+ $this->get_author_email(),
295
+ $this->get_author_origin(),
296
+ $this->get_author_website(),
297
+ $this->get_author_ip(),
298
+ $this->get_author_host(),
299
+ $this->get_content(),
300
+ $this->get_datetime(),
301
+ $this->get_isspam(),
302
+ $this->get_ischecked(),
303
+ $this->get_checkedby(),
304
+ $this->get_istrash(),
305
+ $this->get_admin_reply(),
306
+ $this->get_admin_reply_uid(),
307
+ $this->get_book_id()
308
+ )
309
+ ) );
310
+
311
+ if ($result > 0) {
312
+ // Entry saved successfully.
313
+ $this->set_id( $wpdb->insert_id );
314
+ }
315
+ }
316
+
317
+
318
+ // Error handling
319
+ if ( false ) {
320
+ //$wpdb->print_error(); echo '<br />';
321
+ }
322
+
323
+
324
+ if ($result > 0) {
325
+ return $this->get_id();
326
+ }
327
+
328
+ return false;
329
+ }
330
+
331
+
332
+ /* The Setter methods */
333
+
334
+ /*
335
+ * Set all fields, $args is an array with fields
336
+ * Can be used after a $_POST or by the gwolle_gb_get_entries function
337
+ *
338
+ * Array $args:
339
+ * - id
340
+ * - author_name
341
+ * - author_id
342
+ * - author_email
343
+ * - author_origin
344
+ * - author_website
345
+ * - author_ip
346
+ * - author_host
347
+ * - content
348
+ * - datetime
349
+ * - ischecked
350
+ * - checkedby
351
+ * - istrash
352
+ * - isspam
353
+ * - admin_reply
354
+ * - admin_reply_uid
355
+ * - book_id
356
+
357
+ */
358
+
359
+ public function set_data($args) {
360
+
361
+ if ( isset( $args['id']) ) {
362
+ $this->set_id( $args['id'] );
363
+ }
364
+ if ( isset( $args['author_name']) ) {
365
+ $this->set_author_name( $args['author_name'] );
366
+ }
367
+ if ( isset( $args['author_id']) ) {
368
+ $this->set_author_id( $args['author_id'] );
369
+ }
370
+ if ( isset( $args['author_email'] ) ) {
371
+ $this->set_author_email( $args['author_email'] );
372
+ }
373
+ if ( isset( $args['author_origin'] ) ) {
374
+ $this->set_author_origin( $args['author_origin'] );
375
+ }
376
+ if ( isset( $args['author_website'] ) ) {
377
+ $this->set_author_website( $args['author_website'] );
378
+ }
379
+ if ( isset( $args['author_ip'] ) ) {
380
+ $this->set_author_ip( $args['author_ip'] );
381
+ } else if ( !$this->get_author_ip() ) {
382
+ $this->set_author_ip(); // set as new
383
+ }
384
+ if ( isset( $args['author_host'] ) ) {
385
+ $this->set_author_host( $args['author_host'] );
386
+ }
387
+ if ( isset( $args['content'] ) ) {
388
+ $this->set_content( $args['content'] );
389
+ }
390
+ if ( isset( $args['datetime'] ) ) {
391
+ $this->set_datetime( $args['datetime'] );
392
+ } else if ( !$this->get_datetime() ) {
393
+ $this->set_datetime(); // set as new
394
+ }
395
+ if ( isset( $args['ischecked'] ) ) {
396
+ $this->set_ischecked( $args['ischecked'] );
397
+ }
398
+ if ( isset( $args['checkedby'] ) ) {
399
+ $this->set_checkedby( $args['checkedby'] );
400
+ }
401
+ if ( isset( $args['istrash'] ) ) {
402
+ $this->set_istrash( $args['istrash'] );
403
+ }
404
+ if ( isset( $args['isspam'] ) ) {
405
+ $this->set_isspam( $args['isspam'] );
406
+ }
407
+ if ( isset( $args['admin_reply'] ) ) {
408
+ $this->set_admin_reply( $args['admin_reply'] );
409
+ }
410
+ if ( isset( $args['admin_reply_uid'] ) ) {
411
+ $this->set_admin_reply_uid( $args['admin_reply_uid'] );
412
+ }
413
+ if ( isset( $args['book_id'] ) ) {
414
+ $this->set_book_id( $args['book_id'] );
415
+ }
416
+
417
+ return true;
418
+ }
419
+
420
+ public function set_id($id) {
421
+ $id = intval($id);
422
+ if ($id) {
423
+ $this->id = $id;
424
+ }
425
+ }
426
+ public function set_author_name($author_name) {
427
+ // User input
428
+ $author_name = gwolle_gb_sanitize_input($author_name);
429
+ if ($author_name) {
430
+ $this->author_name = $author_name;
431
+ }
432
+ }
433
+ public function set_author_id($author_id) {
434
+ $author_id = intval($author_id);
435
+ if ($author_id) {
436
+ $this->author_id = $author_id;
437
+ }
438
+ }
439
+ public function set_author_email($author_email) {
440
+ // User input
441
+ $author_email = gwolle_gb_sanitize_input($author_email);
442
+ $author_email = filter_var($author_email, FILTER_VALIDATE_EMAIL);
443
+ if ($author_email) {
444
+ $this->author_email = $author_email;
445
+ }
446
+ }
447
+ public function set_author_origin($author_origin) {
448
+ // User input
449
+ $author_origin = gwolle_gb_sanitize_input($author_origin);
450
+ if ($author_origin) {
451
+ $this->author_origin = $author_origin;
452
+ }
453
+ }
454
+ public function set_author_website($author_website) {
455
+ // User input
456
+ $author_website = gwolle_gb_sanitize_input($author_website);
457
+ $pattern = '/^http/';
458
+ if ( !preg_match($pattern, $author_website, $matches) ) {
459
+ $author_website = "http://" . $author_website;
460
+ }
461
+ $author_website = filter_var($author_website, FILTER_VALIDATE_URL);
462
+ $this->author_website = $author_website;
463
+ }
464
+ public function set_author_ip($author_ip = NULL) {
465
+ $author_ip = gwolle_gb_sanitize_input($author_ip);
466
+ if ($author_ip) {
467
+ $this->author_ip = $author_ip;
468
+ }
469
+ }
470
+ public function set_author_host($author_host = NULL) {
471
+ $author_host = gwolle_gb_sanitize_input($author_host);
472
+ // Don't use this here, only when it is really needed, like on a new entry
473
+ // $author_host = gethostbyaddr( $author_ip );
474
+ if ($author_host) {
475
+ $this->author_host = $author_host;
476
+ }
477
+ }
478
+ public function set_content($content) {
479
+ // User input
480
+ $content = gwolle_gb_sanitize_input($content, 'content');
481
+ if ( strlen($content) > 0 ) {
482
+ $this->content = $content;
483
+ }
484
+ }
485
+ public function set_date($date = NULL) {
486
+ _deprecated_function( __FUNCTION__, ' 1.4.2', 'set_datetime()' );
487
+ }
488
+ public function set_datetime($date = NULL) {
489
+ $date = intval($date); // timestamp can be cast to int.
490
+ if ( !$date ) {
491
+ $date = current_time( 'timestamp' );
492
+ }
493
+ if ($date) {
494
+ $this->datetime = $date;
495
+ }
496
+ }
497
+ public function set_ischecked($ischecked) {
498
+ // $ischecked means the message has been moderated
499
+ $ischecked = intval($ischecked);
500
+ $this->ischecked = $ischecked;
501
+ }
502
+ public function set_checkedby($checkedby) {
503
+ // $checkedby is a userid of the moderator
504
+ $checkedby = intval($checkedby);
505
+ if ($checkedby) {
506
+ $this->checkedby = $checkedby;
507
+ }
508
+ }
509
+ public function set_istrash($istrash) {
510
+ $istrash = intval($istrash);
511
+ $this->istrash = $istrash;
512
+ }
513
+ public function set_isspam($isspam) {
514
+ $isspam = intval($isspam);
515
+ $this->isspam = $isspam;
516
+ }
517
+ public function set_admin_reply($admin_reply) {
518
+ // User input
519
+ $admin_reply = gwolle_gb_sanitize_input($admin_reply, 'admin_reply');
520
+ $this->admin_reply = $admin_reply;
521
+ }
522
+ public function set_admin_reply_uid($admin_reply_uid) {
523
+ $this->admin_reply_uid = intval($admin_reply_uid);
524
+ }
525
+ public function set_book_id($book_id) {
526
+ $this->book_id = intval($book_id);
527
+ if (!$book_id) {
528
+ $this->book_id = 1;
529
+ }
530
+ }
531
+
532
+
533
+ /* The Getter methods */
534
+
535
+ public function get_id() {
536
+ return $this->id;
537
+ }
538
+ public function get_author_name() {
539
+ return gwolle_gb_sanitize_output($this->author_name);
540
+ }
541
+ public function get_author_id() {
542
+ return $this->author_id;
543
+ }
544
+ public function get_author_email() {
545
+ return gwolle_gb_sanitize_output($this->author_email);
546
+ }
547
+ public function get_author_origin() {
548
+ return gwolle_gb_sanitize_output($this->author_origin);
549
+ }
550
+ public function get_author_website() {
551
+ return gwolle_gb_sanitize_output($this->author_website);
552
+ }
553
+ public function get_author_ip() {
554
+ return $this->author_ip;
555
+ }
556
+ public function get_author_host() {
557
+ return $this->author_host;
558
+ }
559
+ public function get_content() {
560
+ return gwolle_gb_sanitize_output($this->content, 'content');
561
+ }
562
+ public function get_date() {
563
+ _deprecated_function( __FUNCTION__, ' 1.4.2', 'get_datetime()' );
564
+ return $this->datetime;
565
+ }
566
+ public function get_datetime() {
567
+ return $this->datetime;
568
+ }
569
+ public function get_ischecked() {
570
+ return $this->ischecked;
571
+ }
572
+ public function get_checkedby() {
573
+ return $this->checkedby;
574
+ }
575
+ public function get_istrash() {
576
+ return $this->istrash;
577
+ }
578
+ public function get_isspam() {
579
+ return $this->isspam;
580
+ }
581
+ public function get_admin_reply() {
582
+ return gwolle_gb_sanitize_output($this->admin_reply, 'admin_reply');
583
+ }
584
+ public function get_admin_reply_uid() {
585
+ return $this->admin_reply_uid;
586
+ }
587
+ public function get_book_id() {
588
+ return $this->book_id;
589
+ }
590
+
591
+
592
+ /* function delete
593
+ * Deletes the current $entry from database
594
+ *
595
+ * Return:
596
+ * - true: deleted
597
+ * - false: not deleted
598
+ *
599
+ */
600
+
601
+ public function delete() {
602
+ global $wpdb;
603
+
604
+ if ( $this->get_isspam() == 0 && $this->get_istrash() == 0 ) {
605
+ // Do not delete the good stuff.
606
+ return false;
607
+ }
608
+
609
+ $id = $this->get_id();
610
+
611
+ $sql = "
612
+ DELETE
613
+ FROM
614
+ $wpdb->gwolle_gb_entries
615
+ WHERE
616
+ id = %d
617
+ LIMIT 1";
618
+
619
+ $values = array(
620
+ $id
621
+ );
622
+
623
+ $result = $wpdb->query(
624
+ $wpdb->prepare( $sql, $values )
625
+ );
626
+
627
+
628
+ if ($result == 1) {
629
+ // Also remove the log entries
630
+ gwolle_gb_del_log_entries( $id );
631
+
632
+ return true;
633
+ }
634
+ return false;
635
+ }
636
+
637
+ function check_userids() {
638
+ $author_id = $this->get_author_id();
639
+ if ( $author_id > 0 ) {
640
+ $userdata = get_userdata( $author_id );
641
+ if ( !is_object($userdata) ) {
642
+ // reset non-existent user because of heavy load in db queries (userid 0 does not get cached).
643
+ $this->author_id = 0;
644
+ }
645
+ }
646
+ $checkedby = $this->get_checkedby();
647
+ if ( $checkedby > 0 ) {
648
+ $userdata = get_userdata( $checkedby );
649
+ if ( !is_object($userdata) ) {
650
+ // reset non-existent user because of heavy load in db queries (userid 0 does not get cached).
651
+ $this->checkedby = 0;
652
+ }
653
+ }
654
+ }
655
+
656
+ }
functions/gb-debug.php ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Add debug info to debug tab on the settings page.
12
+ *
13
+ * @since 1.6.2
14
+ */
15
+ function gwolle_gb_debug_info() {
16
+ global $wp_version, $wp_db_version, $wpdb;
17
+
18
+ if ( function_exists( 'current_user_can' ) && ! current_user_can( 'manage_options' ) ) {
19
+ return;
20
+ } ?>
21
+
22
+ <tr>
23
+ <th><?php _e('WordPress version:', 'gwolle-gb'); ?></th>
24
+ <td><?php echo $wp_version . ' (db: ' . $wp_db_version . ')'; ?></td>
25
+ </tr>
26
+
27
+ <tr>
28
+ <th><?php esc_html_e('WordPress theme:', 'gwolle-gb'); ?></th>
29
+ <td><?php
30
+ if ( version_compare($wp_version,'3.4', '>=') ) {
31
+ echo wp_get_theme()->get('Name');
32
+ } else {
33
+ echo get_current_theme();
34
+ } ?>
35
+ </td>
36
+ </tr>
37
+
38
+ <tr>
39
+ <th><?php esc_html_e('Active plugins:', 'gwolle-gb'); ?></th>
40
+ <td><?php
41
+ $active_plugins = get_option('active_plugins');
42
+ print_r( $active_plugins ); ?>
43
+ </td>
44
+ </tr>
45
+
46
+ <tr>
47
+ <th><?php esc_html_e('PHP Version:', 'gwolle-gb'); ?></th>
48
+ <td><?php
49
+ echo PHP_VERSION;
50
+ if ( version_compare( PHP_VERSION, '5.3', '<' ) ) {
51
+ // PHP 5.2 is insecure, urge for an upgrade.
52
+ echo '<br />' . __( 'You have a very old version of PHP. Please contact your hosting provider and request an upgrade.', 'gwolle-gb' );
53
+ } ?>
54
+ </td>
55
+ </tr>
56
+
57
+ <tr>
58
+ <th><?php esc_html_e('MySQL Version:', 'gwolle-gb'); ?></th>
59
+ <td><?php
60
+ $mysql_version = $wpdb->get_var('SELECT VERSION()');
61
+ echo $mysql_version; ?>
62
+ </td>
63
+ </tr>
64
+
65
+ <tr>
66
+ <th><?php esc_html_e('MySQL Charset:', 'gwolle-gb'); ?></th>
67
+ <td><?php
68
+ echo esc_html__('MySQL Charset:', 'gwolle-gb') . ' ' . $wpdb->charset;
69
+
70
+ // Make sure we do not run this query after uninstall.
71
+ $table_entries = $wpdb->query("SHOW TABLES LIKE '" . $wpdb->prefix . "gwolle_gb_entries'");
72
+
73
+ if ( $table_entries != 0 && method_exists($wpdb, 'get_col_charset') ) {
74
+ $charset = $wpdb->get_col_charset( $wpdb->gwolle_gb_entries, 'content' );
75
+ echo '<br />' . esc_html__('MySQL Column Charset:', 'gwolle-gb') . ' ' . $charset;
76
+ } ?>
77
+ </td>
78
+ </tr>
79
+
80
+ <tr>
81
+ <th><?php esc_html_e('MySQL / MySQLi:', 'gwolle-gb'); ?></th>
82
+ <td><?php
83
+ if ( $wpdb->use_mysqli == true ) {
84
+ echo 'mysqli';
85
+ } else {
86
+ echo 'mysql';
87
+ } ?>
88
+ </td>
89
+ </tr>
90
+
91
+ <tr>
92
+ <th><?php esc_html_e('MySQL variables:', 'gwolle-gb'); ?></th>
93
+ <td><?php
94
+ $mysql_variables = (array) $wpdb->get_results('SHOW VARIABLES', ARRAY_N);
95
+ $mysql_variables_char = array();
96
+ foreach ( $mysql_variables as $variable ) {
97
+ $pattern = '/^char/';
98
+ if ( preg_match( $pattern, $variable[0], $matches ) ) {
99
+ $mysql_variables_char[$variable[0]] = $variable[1];
100
+ }
101
+ }
102
+ print_r( $mysql_variables_char );
103
+ ?>
104
+ </td>
105
+ </tr>
106
+
107
+ <?php
108
+ }
109
+
110
+
111
+ /*
112
+ * Test adding an entry.
113
+ *
114
+ * @since 1.6.2
115
+ */
116
+ function gwolle_gb_test_add_entry( $emoji = false ) {
117
+ // Sample data
118
+ $content = esc_html__('Test entry, delete if you wish.', 'gwolle-gb');
119
+ $data = array(
120
+ 'author_name' => 'You',
121
+ 'author_id' => 0,
122
+ 'author_email' => 'test@example.com',
123
+ 'author_origin' => 'Zwolle',
124
+ 'author_website' => 'http://example.com',
125
+ 'author_ip' => '127.0.0.1',
126
+ 'author_host' => 'example.com',
127
+ 'content' => $content,
128
+ 'datetime' => current_time( 'timestamp' ),
129
+ 'ischecked' => 0,
130
+ 'checkedby' => 0,
131
+ 'istrash' => 1,
132
+ 'isspam' => 0,
133
+ 'admin_reply' => esc_html__('Just a test', 'gwolle-gb'),
134
+ 'admin_reply_uid' => 0,
135
+ 'book_id' => 1
136
+ );
137
+ if ( $emoji ) {
138
+ $data['content'] = gwolle_gb_maybe_encode_emoji( $content . ' 😄👍👌', 'content' );
139
+ }
140
+
141
+ $entry = new gwolle_gb_entry();
142
+
143
+ $set_data = $entry->set_data( $data );
144
+ $entry_id = 0;
145
+
146
+ if ( $set_data ) {
147
+ $entry_id = $entry->save();
148
+ }
149
+
150
+ return $entry_id;
151
+ }
functions/gb-formatting.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Function to sanitize values from input fields for the database.
12
+ * @param $input string to sanitize
13
+ */
14
+ function gwolle_gb_sanitize_input( $input, $field = '' ) {
15
+ $input = strval($input);
16
+ $input = htmlspecialchars_decode($input, ENT_COMPAT);
17
+ $input = stripslashes($input); // Make sure we're not just adding lots of slashes (or WordPress does).
18
+ $input = str_replace('\\', '&#92;', $input); // Replace these to avoid nightmares with addslashes/stripslashes.
19
+ $input = str_replace('"', '&#34;', $input);
20
+ $input = str_replace("'", '&#39;', $input);
21
+ $input = trim($input);
22
+ if ( $field == 'content' || $field == 'admin_reply' || $field == 'setting_textarea' ) {
23
+ $input = wp_kses_post( $input ); // Rely on this, not on strip_tags.
24
+ } else {
25
+ $input = sanitize_text_field( $input );
26
+ }
27
+ return $input;
28
+ }
29
+
30
+
31
+ /*
32
+ * Function to sanitize values for output in a form or div.
33
+ * @param $output string to sanitize
34
+ */
35
+ function gwolle_gb_sanitize_output( $output, $field = '' ) {
36
+ $output = strval($output);
37
+ $output = trim($output);
38
+ $output = htmlspecialchars_decode($output, ENT_COMPAT);
39
+ //$output = html_entity_decode($output, ENT_COMPAT, 'UTF-8'); // the opposite of htmlentities, for backwards compat. Breaks encoding...
40
+ // Still wanting this encoded
41
+ $output = str_replace('\\', '&#92;', $output);
42
+ $output = str_replace('"', '&#34;', $output);
43
+ $output = str_replace("'", '&#39;', $output);
44
+ if ( $field == 'content' || $field == 'admin_reply' || $field == 'setting_textarea' ) {
45
+ $output = wp_kses_post( $output );
46
+ } else {
47
+ $output = sanitize_text_field( $output );
48
+ }
49
+ return $output;
50
+ }
51
+
52
+
53
+ /*
54
+ * Function to format values for beeing send by mail.
55
+ * Since users can input malicious code we have to make
56
+ * sure that this code is being taken care of.
57
+ */
58
+ function gwolle_gb_format_values_for_mail($value) {
59
+ $value = htmlspecialchars_decode($value, ENT_COMPAT);
60
+ $value = str_replace('<', '{', $value);
61
+ $value = str_replace('>', '}', $value);
62
+ $value = str_replace('&#34;','"', $value);
63
+ $value = str_replace('&#034;','"', $value);
64
+ $value = str_replace('&#39;', "'", $value);
65
+ $value = str_replace('&#039;', "'", $value);
66
+ $value = str_replace('&#47;', '/', $value);
67
+ $value = str_replace('&#047;', '/', $value);
68
+ $value = str_replace('&#92;', '\\', $value);
69
+ $value = str_replace('&#092;', '\\', $value);
70
+ return $value;
71
+ }
72
+
73
+
74
+ /*
75
+ * Function to build the excerpt
76
+ *
77
+ * @param $content string content of the entry to be shortened
78
+ * $excerpt_length int the maximum length to return in number of words (uses wp_trim_words)
79
+ *
80
+ * @return $excerpt string the shortened content
81
+ */
82
+ function gwolle_gb_get_excerpt( $content, $excerpt_length = 20 ) {
83
+ $excerpt = wp_trim_words( $content, $excerpt_length, '...' );
84
+ $excerpt = gwolle_gb_sanitize_output( $excerpt );
85
+ if ( trim($excerpt) == '' ) {
86
+ $excerpt = '<i>' . esc_html__('No content to display. This entry is empty.', 'gwolle-gb') . '</i>';
87
+ }
88
+ return $excerpt;
89
+ }
functions/gb-get_entries.php ADDED
@@ -0,0 +1,454 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * gwolle_gb_get_entries
12
+ * Function to get guestbook entries from the database.
13
+ *
14
+ * Parameter $args is an Array:
15
+ * - num_entries int: Number of requested entries. -1 will return all requested entries.
16
+ * - offset int: Start after this entry.
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: All entries associated with this author_id (since 1.5.0).
21
+ * - email string: All entries associated with this emailaddress.
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
+ *
25
+ * Return:
26
+ * - Array of objects of gwolle_gb_entry
27
+ * - false if no entries found.
28
+ *
29
+ * @since 1.0.0
30
+ *
31
+ */
32
+ function gwolle_gb_get_entries($args = array()) {
33
+ global $wpdb;
34
+
35
+ $where = " 1 = %d";
36
+ $values = Array(1);
37
+
38
+ if ( !is_array($args) ) {
39
+ return false;
40
+ }
41
+
42
+ if ( isset($args['checked']) ) {
43
+ if ( $args['checked'] == 'checked' || $args['checked'] == 'unchecked' ) {
44
+ $where .= "
45
+ AND
46
+ ischecked = %d";
47
+ if ( $args['checked'] == 'checked' ) {
48
+ $values[] = 1;
49
+ } else if ( $args['checked'] == 'unchecked' ) {
50
+ $values[] = 0;
51
+ }
52
+ }
53
+ }
54
+ if ( isset($args['spam']) ) {
55
+ if ( $args['spam'] == 'spam' || $args['spam'] == 'nospam' ) {
56
+ $where .= "
57
+ AND
58
+ isspam = %d";
59
+ if ( $args['spam'] == 'spam' ) {
60
+ $values[] = 1;
61
+ } else if ( $args['spam'] == 'nospam' ) {
62
+ $values[] = 0;
63
+ }
64
+ }
65
+ }
66
+ if ( isset($args['trash']) ) {
67
+ if ( $args['trash'] == 'trash' || $args['trash'] == 'notrash' ) {
68
+ $where .= "
69
+ AND
70
+ istrash = %d";
71
+ if ( $args['trash'] == 'trash' ) {
72
+ $values[] = 1;
73
+ } else if ( $args['trash'] == 'notrash' ) {
74
+ $values[] = 0;
75
+ }
76
+ }
77
+ }
78
+ if ( isset( $args['author_id']) ) {
79
+ $where .= "
80
+ AND
81
+ author_id = %d";
82
+ $values[] = (int) $args['author_id'];
83
+ }
84
+ if ( isset($args['email']) ) {
85
+ $where .= "
86
+ AND
87
+ author_email = %s";
88
+ $values[] = $args['email'];
89
+ }
90
+ if ( isset($args['no_moderators']) ) {
91
+ $no_moderators = $args['no_moderators'];
92
+ if ( $no_moderators === 'true' ) {
93
+ $users = gwolle_gb_get_moderators();
94
+ if ( is_array($users) && !empty($users) ) {
95
+ foreach ( $users as $user_info ) {
96
+ $where .= "
97
+ AND
98
+ author_id != %d";
99
+ $values[] = $user_info->ID;
100
+ }
101
+ }
102
+ }
103
+ }
104
+ if ( isset( $args['book_id']) && ((int) $args['book_id']) > 0 ) {
105
+ $where .= "
106
+ AND
107
+ book_id = %d";
108
+ $values[] = (int) $args['book_id'];
109
+ }
110
+
111
+ // Offset
112
+ $offset = " OFFSET 0 "; // default
113
+ if ( isset($args['offset']) && (int) $args['offset'] > 0 ) {
114
+ $offset = " OFFSET " . (int) $args['offset'];
115
+ }
116
+
117
+ // Limit
118
+ if ( is_admin() ) {
119
+ $perpage_option = (int) get_option('gwolle_gb-entries_per_page', 20);
120
+ } else {
121
+ $perpage_option = (int) get_option('gwolle_gb-entriesPerPage', 20);
122
+ }
123
+
124
+ $limit = " LIMIT " . $perpage_option; // default
125
+ if ( isset($args['num_entries']) && (int) $args['num_entries'] > 0 ) {
126
+ $limit = " LIMIT " . (int) $args['num_entries'];
127
+ } else if ( isset($args['num_entries']) && (int) $args['num_entries'] == -1 ) {
128
+ $limit = ' LIMIT 999999999999999 ';
129
+ $offset = ' OFFSET 0 ';
130
+ }
131
+
132
+
133
+ $tablename = $wpdb->prefix . "gwolle_gb_entries";
134
+
135
+ $sql_nonprepared = "
136
+ SELECT
137
+ `id`,
138
+ `author_name`,
139
+ `author_id`,
140
+ `author_email`,
141
+ `author_origin`,
142
+ `author_website`,
143
+ `author_ip`,
144
+ `author_host`,
145
+ `content`,
146
+ `datetime`,
147
+ `ischecked`,
148
+ `checkedby`,
149
+ `istrash`,
150
+ `isspam`,
151
+ `admin_reply`,
152
+ `admin_reply_uid`,
153
+ `book_id`
154
+ FROM
155
+ " . $tablename . "
156
+ WHERE
157
+ " . $where . "
158
+ ORDER BY
159
+ datetime DESC
160
+ " . $limit . " " . $offset . "
161
+ ;";
162
+
163
+ $sql = $wpdb->prepare( $sql_nonprepared, $values );
164
+
165
+ /*
166
+ * Make sure to use wpdb->prepare in your function, avoid SQL injection attacks.
167
+ * - $sql is the value with the prepared sql query.
168
+ * - $sql_nonprepared is the sql query with placeholders still.
169
+ * - $values is an array with values that will replace those placeholders
170
+ * - $args are the additional arguments that were passed to this function.
171
+ */
172
+ $sql = apply_filters( 'gwolle_gb_get_entries_sql', $sql, $sql_nonprepared, $values, $args );
173
+
174
+
175
+ /* Support caching of the list of entries. */
176
+ $key = md5( serialize( $sql ) );
177
+ $cache_key = "gwolle_gb_get_entries:$key";
178
+ $cache_value = wp_cache_get( $cache_key );
179
+
180
+ if ( false === $cache_value ) {
181
+
182
+ // Do a real query.
183
+ $datalist = $wpdb->get_results( $sql, ARRAY_A );
184
+
185
+ wp_cache_add( $cache_key, $datalist );
186
+
187
+ // $wpdb->print_error();
188
+ // echo "number of rows: " . $wpdb->num_rows;
189
+
190
+ } else {
191
+
192
+ // This is data from cache.
193
+ $datalist = $cache_value;
194
+
195
+ }
196
+
197
+
198
+ if ( is_array($datalist) && ! empty($datalist) ) {
199
+ $entries = array();
200
+
201
+ foreach ( $datalist as $data ) {
202
+
203
+ // Use the fields that the setter method expects
204
+ $item = array(
205
+ 'id' => (int) $data['id'],
206
+ 'author_name' => stripslashes($data['author_name']),
207
+ 'author_id' => (int) $data['author_id'],
208
+ 'author_email' => stripslashes($data['author_email']),
209
+ 'author_origin' => stripslashes($data['author_origin']),
210
+ 'author_website' => stripslashes($data['author_website']),
211
+ 'author_ip' => $data['author_ip'],
212
+ 'author_host' => $data['author_host'],
213
+ 'content' => stripslashes($data['content']),
214
+ 'datetime' => $data['datetime'],
215
+ 'ischecked' => (int) $data['ischecked'],
216
+ 'checkedby' => (int) $data['checkedby'],
217
+ 'istrash' => (int) $data['istrash'],
218
+ 'isspam' => (int) $data['isspam'],
219
+ 'admin_reply' => stripslashes($data['admin_reply']),
220
+ 'admin_reply_uid' => (int) $data['admin_reply_uid'],
221
+ 'book_id' => (int) $data['book_id'],
222
+ );
223
+
224
+ $entry = new gwolle_gb_entry();
225
+
226
+ $entry->set_data( $item );
227
+
228
+ // Add entry to the array of all entries
229
+ $entries[] = $entry;
230
+ }
231
+ return $entries;
232
+ }
233
+ return false;
234
+ }
235
+
236
+
237
+ /*
238
+ * gwolle_gb_get_entry_ids
239
+ * Function to get guestbook entry IDs from the database.
240
+ *
241
+ * Parameter $args is an Array:
242
+ * - checked string: 'checked' or 'unchecked', List the entries that are checked or unchecked.
243
+ * - trash string: 'trash' or 'notrash', List the entries that are in trash or not in trash.
244
+ * - spam string: 'spam' or 'nospam', List the entries marked as spam or as no spam.
245
+ * - author_id string: All entries associated with this author_id (since 1.5.0).
246
+ * - email string: All entries associated with this emailaddress.
247
+ * - no_moderators string: 'true', Only entries not written by a moderator (might be expensive with many users) (since 1.5.0).
248
+ * - book_id int: Only entries from this book. Default in the shortcode is 1 (since 1.5.1).
249
+ *
250
+ * Return:
251
+ * - Array of ids of gwolle_gb_entry
252
+ * - false if no entries found.
253
+ *
254
+ * @since 2.3.0
255
+ *
256
+ */
257
+ function gwolle_gb_get_entry_ids($args = array()) {
258
+ global $wpdb;
259
+
260
+ $where = " 1 = %d";
261
+ $values = Array(1);
262
+
263
+ if ( !is_array($args) ) {
264
+ return false;
265
+ }
266
+
267
+ if ( isset($args['checked']) ) {
268
+ if ( $args['checked'] == 'checked' || $args['checked'] == 'unchecked' ) {
269
+ $where .= "
270
+ AND
271
+ ischecked = %d";
272
+ if ( $args['checked'] == 'checked' ) {
273
+ $values[] = 1;
274
+ } else if ( $args['checked'] == 'unchecked' ) {
275
+ $values[] = 0;
276
+ }
277
+ }
278
+ }
279
+ if ( isset($args['spam']) ) {
280
+ if ( $args['spam'] == 'spam' || $args['spam'] == 'nospam' ) {
281
+ $where .= "
282
+ AND
283
+ isspam = %d";
284
+ if ( $args['spam'] == 'spam' ) {
285
+ $values[] = 1;
286
+ } else if ( $args['spam'] == 'nospam' ) {
287
+ $values[] = 0;
288
+ }
289
+ }
290
+ }
291
+ if ( isset($args['trash']) ) {
292
+ if ( $args['trash'] == 'trash' || $args['trash'] == 'notrash' ) {
293
+ $where .= "
294
+ AND
295
+ istrash = %d";
296
+ if ( $args['trash'] == 'trash' ) {
297
+ $values[] = 1;
298
+ } else if ( $args['trash'] == 'notrash' ) {
299
+ $values[] = 0;
300
+ }
301
+ }
302
+ }
303
+ if ( isset( $args['author_id']) ) {
304
+ $where .= "
305
+ AND
306
+ author_id = %d";
307
+ $values[] = (int) $args['author_id'];
308
+ }
309
+ if ( isset($args['email']) ) {
310
+ $where .= "
311
+ AND
312
+ author_email = %s";
313
+ $values[] = $args['email'];
314
+ }
315
+ if ( isset($args['no_moderators']) ) {
316
+ $no_moderators = $args['no_moderators'];
317
+ if ( $no_moderators === 'true' ) {
318
+ $users = gwolle_gb_get_moderators();
319
+ if ( is_array($users) && !empty($users) ) {
320
+ foreach ( $users as $user_info ) {
321
+ $where .= "
322
+ AND
323
+ author_id != %d";
324
+ $values[] = $user_info->ID;
325
+ }
326
+ }
327
+ }
328
+ }
329
+ if ( isset( $args['book_id']) && ((int) $args['book_id']) > 0 ) {
330
+ $where .= "
331
+ AND
332
+ book_id = %d";
333
+ $values[] = (int) $args['book_id'];
334
+ }
335
+
336
+ $limit = ' LIMIT 999999999999999 ';
337
+ $offset = ' OFFSET 0 ';
338
+
339
+
340
+ $tablename = $wpdb->prefix . "gwolle_gb_entries";
341
+
342
+ $sql_nonprepared = "
343
+ SELECT
344
+ `id`
345
+ FROM
346
+ " . $tablename . "
347
+ WHERE
348
+ " . $where . "
349
+ ORDER BY
350
+ datetime DESC
351
+ " . $limit . " " . $offset . "
352
+ ;";
353
+
354
+ $sql = $wpdb->prepare( $sql_nonprepared, $values );
355
+
356
+ /*
357
+ * Make sure to use wpdb->prepare in your function, avoid SQL injection attacks.
358
+ * - $sql is the value with the prepared sql query.
359
+ * - $sql_nonprepared is the sql query with placeholders still.
360
+ * - $values is an array with values that will replace those placeholders
361
+ * - $args are the additional arguments that were passed to this function.
362
+ */
363
+ $sql = apply_filters( 'gwolle_gb_get_entries_sql', $sql, $sql_nonprepared, $values, $args );
364
+
365
+ $entry_ids = $wpdb->get_results( $sql, ARRAY_N );
366
+
367
+ // $wpdb->print_error();
368
+ // echo "number of rows: " . $wpdb->num_rows;
369
+
370
+ if ( is_array($entry_ids) && ! empty($entry_ids) ) {
371
+ $_entry_ids = array();
372
+ foreach ( $entry_ids as $entry_id ) {
373
+ $_entry_ids[] = (int) $entry_id[0];
374
+ }
375
+ return $_entry_ids;
376
+ }
377
+ return false;
378
+ }
379
+
380
+
381
+ /*
382
+ * Function to delete guestbook entries from the database.
383
+ * Removes the log entries as well.
384
+ *
385
+ * Parameter $status is a string:
386
+ * - spam string: 'spam', delete the entries marked as spam
387
+ * - trash string: 'trash', delete the entries that are in trash
388
+ *
389
+ * Return:
390
+ * - int: Number of deleted entries
391
+ * - bool: false if no entries found.
392
+ *
393
+ * @since 1.0.0
394
+ *
395
+ */
396
+ function gwolle_gb_del_entries( $status ) {
397
+ global $wpdb;
398
+
399
+ // First get all the id's, so we can remove the logs later
400
+
401
+ if ( $status == 'spam' ) {
402
+ $where = "
403
+ isspam = %d";
404
+ $values[] = 1;
405
+ } else if ( $status == 'trash' ) {
406
+ $where = "
407
+ istrash = %d";
408
+ $values[] = 1;
409
+ } else {
410
+ return false; // not the right $status
411
+ }
412
+
413
+ $sql = "
414
+ SELECT
415
+ `id`
416
+ FROM
417
+ $wpdb->gwolle_gb_entries
418
+ WHERE
419
+ " . $where . "
420
+ LIMIT 999999999999999
421
+ OFFSET 0
422
+ ;";
423
+
424
+ $sql = $wpdb->prepare( $sql, $values );
425
+
426
+ $datalist = $wpdb->get_results( $sql, ARRAY_A );
427
+
428
+ if ( is_array($datalist) && ! empty($datalist) ) {
429
+
430
+ $sql = "
431
+ DELETE
432
+ FROM
433
+ $wpdb->gwolle_gb_entries
434
+ WHERE
435
+ " . $where . "
436
+ ;";
437
+
438
+ $result = $wpdb->query(
439
+ $wpdb->prepare( $sql, $values )
440
+ );
441
+
442
+ if ( $result > 0 ) {
443
+ gwolle_gb_clear_cache();
444
+
445
+ // Also remove the log entries
446
+ foreach ( $datalist as $id ) {
447
+ gwolle_gb_del_log_entries( $id['id'] );
448
+ }
449
+
450
+ return $result;
451
+ }
452
+ }
453
+ return false;
454
+ }
functions/gb-get_entry_count.php ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * gwolle_gb_get_entry_count
12
+ * Get the number of entries.
13
+ *
14
+ * Parameter $args is an Array:
15
+ * - checked string: 'checked' or 'unchecked', List the entries that are checked or not checked
16
+ * - trash string: 'trash' or 'notrash', List the entries that are deleted or not deleted
17
+ * - spam string: 'spam' or 'nospam', List the entries marked as spam or as no spam
18
+ * - all string: 'all', List all entries
19
+ * - book_id int: Only entries from this book. Default in the shortcode is 1 (since 1.5.1).
20
+ *
21
+ * Return:
22
+ * - int with the count of the entries
23
+ * - false if there's an error.
24
+ */
25
+
26
+ function gwolle_gb_get_entry_count($args) {
27
+
28
+ global $wpdb;
29
+
30
+
31
+ $where = " 1 = %d";
32
+ $values = Array(1);
33
+
34
+ if ( !is_array($args) ) {
35
+ return false;
36
+ }
37
+
38
+ if ( isset($args['checked']) ) {
39
+ if ( $args['checked'] == 'checked' || $args['checked'] == 'unchecked' ) {
40
+ $where .= "
41
+ AND
42
+ ischecked = %d";
43
+ if ( $args['checked'] == 'checked' ) {
44
+ $values[] = 1;
45
+ } else if ( $args['checked'] == 'unchecked' ) {
46
+ $values[] = 0;
47
+ }
48
+ }
49
+ }
50
+ if ( isset($args['spam']) ) {
51
+ if ( $args['spam'] == 'spam' || $args['spam'] == 'nospam' ) {
52
+ $where .= "
53
+ AND
54
+ isspam = %d";
55
+ if ( $args['spam'] == 'spam' ) {
56
+ $values[] = 1;
57
+ } else if ( $args['spam'] == 'nospam' ) {
58
+ $values[] = 0;
59
+ }
60
+ }
61
+ }
62
+ if ( isset($args['trash']) ) {
63
+ if ( $args['trash'] == 'trash' || $args['trash'] == 'notrash' ) {
64
+ $where .= "
65
+ AND
66
+ istrash = %d";
67
+ if ( $args['trash'] == 'trash' ) {
68
+ $values[] = 1;
69
+ } else if ( $args['trash'] == 'notrash' ) {
70
+ $values[] = 0;
71
+ }
72
+ }
73
+ }
74
+ if ( isset( $args['book_id']) && ((int) $args['book_id']) > 0 ) {
75
+ $where .= "
76
+ AND
77
+ book_id = %d";
78
+ $values[] = (int) $args['book_id'];
79
+ }
80
+
81
+ $tablename = $wpdb->prefix . "gwolle_gb_entries";
82
+
83
+ $sql = "
84
+ SELECT
85
+ COUNT(id) AS count
86
+ FROM
87
+ " . $tablename . "
88
+ WHERE
89
+ " . $where . "
90
+ ;";
91
+
92
+ $sql = $wpdb->prepare( $sql, $values );
93
+
94
+
95
+ /* Support caching of the result. */
96
+ $key = md5( serialize( $sql ) );
97
+ $cache_key = "gwolle_gb_get_entry_count:$key";
98
+ $cache_value = wp_cache_get( $cache_key );
99
+
100
+ if ( false === $cache_value ) {
101
+
102
+ // Do a real query.
103
+ $data = $wpdb->get_results( $sql, ARRAY_A );
104
+
105
+ wp_cache_add( $cache_key, $data );
106
+
107
+ // $wpdb->print_error();
108
+ // echo "number of rows: " . $wpdb->num_rows;
109
+
110
+ } else {
111
+
112
+ // This is data from cache.
113
+ $data = $cache_value;
114
+
115
+ }
116
+
117
+ return (int) $data[0]['count'];
118
+
119
+ }
functions/gb-log.php ADDED
@@ -0,0 +1,250 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * gwolle_gb_add_log_entry()
12
+ * Add a new log entry
13
+ *
14
+ * Parameters:
15
+ * - entry_id: (int) the id of the entry
16
+ * - subject: (string) one of the possible log_messages
17
+ *
18
+ * Return: (bool) true or false, depending on succes
19
+ */
20
+
21
+ function gwolle_gb_add_log_entry( $entry_id, $subject ) {
22
+ global $wpdb;
23
+
24
+ if ( !isset($subject) || !isset($entry_id) || (int) $entry_id === 0 ) {
25
+ return false;
26
+ }
27
+
28
+ $log_messages = array(
29
+ 'entry-unchecked',
30
+ 'entry-checked',
31
+ 'marked-as-spam',
32
+ 'marked-as-not-spam',
33
+ 'marked-by-honeypot',
34
+ 'marked-by-nonce',
35
+ 'marked-by-akismet',
36
+ 'marked-by-sfs',
37
+ 'marked-by-longtext',
38
+ 'entry-edited',
39
+ 'imported-from-dmsguestbook',
40
+ 'imported-from-wp',
41
+ 'imported-from-gwolle',
42
+ 'exported-to-csv',
43
+ 'entry-trashed',
44
+ 'entry-untrashed',
45
+ 'admin-reply-added',
46
+ 'admin-reply-updated',
47
+ 'admin-reply-removed'
48
+ );
49
+ if ( !in_array( $subject, $log_messages ) ) {
50
+ return false;
51
+ }
52
+
53
+ $result = $wpdb->query( $wpdb->prepare(
54
+ "
55
+ INSERT INTO $wpdb->gwolle_gb_log
56
+ (
57
+ subject,
58
+ entry_id,
59
+ author_id,
60
+ datetime
61
+ ) VALUES (
62
+ %s,
63
+ %d,
64
+ %d,
65
+ %d
66
+ )
67
+ ",
68
+ array(
69
+ addslashes( $subject ),
70
+ intval( $entry_id ),
71
+ intval( get_current_user_id() ),
72
+ current_time( 'timestamp' )
73
+ )
74
+ ) );
75
+
76
+ if ($result == 1) {
77
+ return true;
78
+ }
79
+ return false;
80
+ }
81
+
82
+
83
+ /*
84
+ * gwolle_gb_get_log_entries
85
+ * Function to get log entries.
86
+ *
87
+ * Parameter: (string) $entry_id: the id of the guestbook entry where the log belongs to
88
+ *
89
+ * Return: Array with log_entries, each is an Array:
90
+ * id => (int) id
91
+ * subject => (string) subject of the log, what happened
92
+ * author_id => (int) author_id of the user responsible for this log entry
93
+ * datetime => (int) log_date with timestamp
94
+ * msg => (string) subject of the log, what happened. In Human Readable form, translated
95
+ * author_login => (string) display_name or login_name of the user as standard WP_User
96
+ * msg_html => (string) string of html-text ready for displayed
97
+ *
98
+ */
99
+
100
+ function gwolle_gb_get_log_entries( $entry_id ) {
101
+ global $wpdb;
102
+
103
+ if ( !isset($entry_id) || (int) $entry_id === 0 ) {
104
+ return false;
105
+ }
106
+
107
+ // Message to strings
108
+ $log_messages = array(
109
+ 'entry-unchecked' => /* translators: Log message */ esc_html__('Entry has been locked.', 'gwolle-gb'),
110
+ 'entry-checked' => /* translators: Log message */ esc_html__('Entry has been checked.', 'gwolle-gb'),
111
+ 'marked-as-spam' => /* translators: Log message */ esc_html__('Entry marked as spam.', 'gwolle-gb'),
112
+ 'marked-as-not-spam' => /* translators: Log message */ esc_html__('Entry marked as not spam.', 'gwolle-gb'),
113
+ 'marked-by-honeypot' => /* translators: Log message */ esc_html__('Entry marked by the Honeypot.', 'gwolle-gb'),
114
+ 'marked-by-nonce' => /* translators: Log message */ esc_html__('Entry marked by invalid Nonce.', 'gwolle-gb'),
115
+ 'marked-by-akismet' => /* translators: Log message */ esc_html__('Entry marked by Akismet.', 'gwolle-gb'),
116
+ 'marked-by-sfs' => /* translators: Log message */ esc_html__('Entry marked by Stop Forum Spam.', 'gwolle-gb'),
117
+ 'marked-by-longtext' => /* translators: Log message */ esc_html__('Entry marked for too long text.', 'gwolle-gb'),
118
+ 'entry-edited' => /* translators: Log message */ esc_html__('Entry has been edited.', 'gwolle-gb'),
119
+ 'imported-from-dmsguestbook' => /* translators: Log message */ esc_html__('Imported from DMSGuestbook', 'gwolle-gb'),
120
+ 'imported-from-wp' => /* translators: Log message */ esc_html__('Imported from WordPress comments', 'gwolle-gb'),
121
+ 'imported-from-gwolle' => /* translators: Log message */ esc_html__('Imported from Gwolle-GB', 'gwolle-gb'),
122
+ 'exported-to-csv' => /* translators: Log message */ esc_html__('Exported to CSV file', 'gwolle-gb'),
123
+ 'entry-trashed' => /* translators: Log message */ esc_html__('Entry has been trashed.', 'gwolle-gb'),
124
+ 'entry-untrashed' => /* translators: Log message */ esc_html__('Entry has been untrashed.', 'gwolle-gb'),
125
+ 'admin-reply-added' => /* translators: Log message */ esc_html__('Admin reply has been added.', 'gwolle-gb'),
126
+ 'admin-reply-updated' => /* translators: Log message */ esc_html__('Admin reply has been updated.', 'gwolle-gb'),
127
+ 'admin-reply-removed' => /* translators: Log message */ esc_html__('Admin reply has been removed.', 'gwolle-gb')
128
+ );
129
+
130
+ $where = " 1 = %d";
131
+ $values = Array(1);
132
+ $tablename = $wpdb->prefix . "gwolle_gb_log";
133
+
134
+ $where .= "
135
+ AND
136
+ entry_id = %d";
137
+
138
+ $values[] = $entry_id;
139
+
140
+ $sql = "
141
+ SELECT
142
+ `id`,
143
+ `subject`,
144
+ `entry_id`,
145
+ `author_id`,
146
+ `datetime`
147
+ FROM
148
+ " . $tablename . "
149
+ WHERE
150
+ " . $where . "
151
+ ORDER BY
152
+ datetime ASC
153
+ ;";
154
+
155
+ $sql = $wpdb->prepare( $sql, $values );
156
+
157
+ $entries = $wpdb->get_results( $sql, ARRAY_A );
158
+
159
+ //$wpdb->print_error();
160
+ //echo "number of rows: " . $wpdb->num_rows;
161
+
162
+ if ( is_array($entries) && !empty($entries) ) {
163
+
164
+ // Array to store the log entries
165
+ $log_entries = array();
166
+
167
+ foreach ( $entries as $entry ) {
168
+ $log_entry = array(
169
+ 'id' => (int) $entry['id'],
170
+ 'subject' => stripslashes($entry['subject']),
171
+ 'entry_id' => (int) $entry['entry_id'],
172
+ 'author_id' => (int) $entry['author_id'],
173
+ 'datetime' => (int) $entry['datetime']
174
+ );
175
+
176
+ $log_entry['msg'] = (isset($log_messages[$log_entry['subject']])) ? $log_messages[$log_entry['subject']] : $log_entry['subject'];
177
+
178
+ // Get author's display name or login name if not already done.
179
+ $userdata = get_userdata( $log_entry['author_id'] );
180
+ if (is_object($userdata)) {
181
+ if ( isset( $userdata->display_name ) ) {
182
+ $log_entry['author_login'] = $userdata->display_name;
183
+ } else {
184
+ $log_entry['author_login'] = $userdata->user_login;
185
+ }
186
+ } else {
187
+ $log_entry['author_login'] = '<i>' . esc_html__('Unknown', 'gwolle-gb') . '</i>';
188
+ }
189
+
190
+ // Construct the message in HTML
191
+ $log_entry['msg_html'] = date_i18n( get_option('date_format'), $log_entry['datetime']) . ", ";
192
+ $log_entry['msg_html'] .= date_i18n( get_option('time_format'), $log_entry['datetime']);
193
+ $log_entry['msg_html'] .= ': ' . $log_entry['msg'];
194
+
195
+ if ( $log_entry['author_id'] == get_current_user_id() ) {
196
+ $log_entry['msg_html'] .= ' (<strong>' . esc_html__('You', 'gwolle-gb') . '</strong>)';
197
+ } else {
198
+ $log_entry['msg_html'] .= ' (' . $log_entry['author_login'] . ')';
199
+ }
200
+
201
+ $log_entries[] = $log_entry;
202
+ }
203
+
204
+ return $log_entries;
205
+ }
206
+ return false;
207
+ }
208
+
209
+
210
+ /*
211
+ * gwolle_gb_del_log_entries()
212
+ * Delete the log entries for a guestbook entry
213
+ *
214
+ * Parameters:
215
+ * - entry_id: (int) the id of the entry
216
+ *
217
+ * Return: (bool) true or false, depending on succes
218
+ */
219
+
220
+ function gwolle_gb_del_log_entries( $entry_id ) {
221
+ global $wpdb;
222
+
223
+ $entry_id = intval( $entry_id );
224
+
225
+ if ( $entry_id == 0 || $entry_id < 0 ) {
226
+ return false;
227
+ }
228
+
229
+ $sql = "
230
+ DELETE
231
+ FROM
232
+ $wpdb->gwolle_gb_log
233
+ WHERE
234
+ entry_id = %d";
235
+
236
+ $values = array(
237
+ $entry_id
238
+ );
239
+
240
+ $result = $wpdb->query(
241
+ $wpdb->prepare( $sql, $values )
242
+ );
243
+
244
+
245
+ if ( $result > 0 ) {
246
+ return true;
247
+ }
248
+ return false;
249
+
250
+ }
functions/gb-mail.php ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Mail Functions
4
+ */
5
+
6
+
7
+ // No direct calls to this script
8
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
9
+ die('No direct calls allowed!');
10
+ }
11
+
12
+
13
+ /*
14
+ * Send the Notification Mail to moderators that have subscribed (only when it is not Spam).
15
+ *
16
+ * $arg: $entry, instance of gwolle_gb_entry
17
+ * since 1.4.9
18
+ */
19
+ function gwolle_gb_mail_moderators( $entry ) {
20
+ $isspam = $entry->get_isspam();
21
+ if ( !$isspam ) {
22
+ $subscribers = Array();
23
+ $recipients = get_option('gwolle_gb-notifyByMail', Array() );
24
+ if ( count($recipients ) > 0 ) {
25
+ $recipients = explode( ",", $recipients );
26
+ foreach ( $recipients as $recipient ) {
27
+ if ( is_numeric($recipient) ) {
28
+ $userdata = get_userdata( $recipient );
29
+ $subscribers[] = $userdata->user_email;
30
+ }
31
+ }
32
+ }
33
+
34
+ @ini_set('sendmail_from', get_bloginfo('admin_mail'));
35
+
36
+ // Set the Mail Content
37
+ $mailTags = array( 'user_email', 'user_name', 'status', 'entry_management_url', 'blog_name', 'blog_url', 'wp_admin_url', 'entry_content', 'author_ip', 'author_origin' );
38
+ $mail_body = gwolle_gb_sanitize_output( get_option( 'gwolle_gb-adminMailContent', false ), 'setting_textarea' );
39
+ if (!$mail_body) {
40
+ $mail_body = esc_html__("
41
+ Hello,
42
+
43
+ There is a new guestbook entry at '%blog_name%'.
44
+ You can check it at %entry_management_url%.
45
+
46
+ Have a nice day.
47
+ Your Gwolle-GB-Mailer
48
+
49
+
50
+ Website address: %blog_url%
51
+ User name: %user_name%
52
+ User email: %user_email%
53
+ Entry status: %status%
54
+ Entry content:
55
+ %entry_content%
56
+ "
57
+ , 'gwolle-gb');
58
+ }
59
+
60
+ // Set the Mail Headers
61
+ $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('New Guestbook Entry', 'gwolle-gb');
62
+ $subject = apply_filters( 'gwolle_gb_mail_moderators_subject', $subject );
63
+
64
+ $header = "";
65
+ if ( get_option('gwolle_gb-mail-from', false) ) {
66
+ $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . get_option('gwolle_gb-mail-from') . ">\r\n";
67
+ } else {
68
+ $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . get_bloginfo('admin_email') . ">\r\n";
69
+ }
70
+ $header .= "Content-Type: text/plain; charset=UTF-8\r\n"; // Encoding of the mail.
71
+ $author_email = $entry->get_author_email();
72
+ if ( $author_email ) {
73
+ $header .= 'Reply-To: "' . gwolle_gb_format_values_for_mail($entry->get_author_name()) . '" <' . $author_email . ">\r\n"; // Set Reply-To for easy answering.
74
+ }
75
+
76
+ // Replace the tags from the mailtemplate with real data from the website and entry
77
+ $info['user_name'] = gwolle_gb_sanitize_output( $entry->get_author_name() );
78
+ $info['user_email'] = $author_email;
79
+ $info['blog_name'] = get_bloginfo('name');
80
+ $postid = gwolle_gb_get_postid( (int) $entry->get_book_id() );
81
+ if ( $postid ) {
82
+ $permalink = get_permalink( $postid );
83
+ if ( is_wp_error( $permalink ) ) {
84
+ $info['blog_url'] = get_bloginfo('wpurl') . '?p=' . $postid;
85
+ } else {
86
+ $info['blog_url'] = $permalink;
87
+ }
88
+ } else {
89
+ $info['blog_url'] = get_bloginfo('wpurl');
90
+ }
91
+
92
+ $wpadmin = apply_filters( 'gwolle_gb_wpadmin_url', admin_url( '/admin.php' ) );
93
+ $info['wp_admin_url'] = $wpadmin;
94
+ $info['entry_management_url'] = $wpadmin . '?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id();
95
+
96
+ $info['entry_content'] = gwolle_gb_format_values_for_mail(gwolle_gb_sanitize_output( $entry->get_content(), 'content' ));
97
+ $info['author_ip'] = $_SERVER['REMOTE_ADDR'];
98
+ $info['author_origin'] = $entry->get_author_origin();
99
+ if ( $entry->get_ischecked() ) {
100
+ $info['status'] = esc_html__('Checked', 'gwolle-gb');
101
+ } else {
102
+ $info['status'] = esc_html__('Unchecked', 'gwolle-gb');
103
+ }
104
+
105
+ // The last tags are bloginfo-based
106
+ for ($tagNum = 0; $tagNum < count($mailTags); $tagNum++) {
107
+ $mail_body = str_replace('%' . $mailTags[$tagNum] . '%', $info[$mailTags[$tagNum]], $mail_body);
108
+ $mail_body = gwolle_gb_format_values_for_mail( $mail_body );
109
+ }
110
+
111
+ // Add logging to mail
112
+ $log_entries = gwolle_gb_get_log_entries( $entry->get_id() );
113
+ if ( is_array($log_entries) && !empty($log_entries) ) {
114
+ $mail_body .= "\r\n\r\n" . esc_html__('Log messages:', 'gwolle-gb') . "\r\n";
115
+ foreach ($log_entries as $log_entry) {
116
+ $mail_body .= $log_entry['msg_html'] . "\r\n";
117
+ }
118
+ }
119
+
120
+ if ( is_array($subscribers) && !empty($subscribers) ) {
121
+ foreach ( $subscribers as $subscriber ) {
122
+ wp_mail($subscriber, $subject, $mail_body, $header);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ add_action( 'gwolle_gb_save_entry_frontend', 'gwolle_gb_mail_moderators' );
128
+
129
+
130
+ /*
131
+ * Send Notification Mail to the author if set to true in an option (only when it is not Spam).
132
+ *
133
+ * $arg: $entry, instance of gwolle_gb_entry
134
+ * since 1.4.9
135
+ */
136
+ function gwolle_gb_mail_author( $entry ) {
137
+ $isspam = $entry->get_isspam();
138
+ if ( !$isspam ) {
139
+ if ( get_option( 'gwolle_gb-mail_author', 'false' ) == 'true' ) {
140
+
141
+ // Set the Mail Content
142
+ $mailTags = array('user_email', 'user_name', 'blog_name', 'blog_url', 'entry_content');
143
+ $mail_body = gwolle_gb_sanitize_output( get_option( 'gwolle_gb-authorMailContent', false ), 'setting_textarea' );
144
+ if (!$mail_body) {
145
+ $mail_body = esc_html__("
146
+ Hello,
147
+
148
+ You have just posted a new guestbook entry at '%blog_name%'.
149
+
150
+ Have a nice day.
151
+ The editors at %blog_name%.
152
+
153
+
154
+ Website address: %blog_url%
155
+ User name: %user_name%
156
+ User email: %user_email%
157
+ Entry content:
158
+ %entry_content%
159
+ "
160
+ , 'gwolle-gb');
161
+ }
162
+
163
+ // Set the Mail Headers
164
+ $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('New Guestbook Entry', 'gwolle-gb');
165
+ $subject = apply_filters( 'gwolle_gb_mail_author_subject', $subject );
166
+
167
+ $header = "";
168
+ if ( get_option('gwolle_gb-mail-from', false) ) {
169
+ $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . gwolle_gb_sanitize_output( get_option('gwolle_gb-mail-from') ) . ">\r\n";
170
+ } else {
171
+ $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . get_bloginfo('admin_email') . ">\r\n";
172
+ }
173
+ $header .= "Content-Type: text/plain; charset=UTF-8\r\n"; // Encoding of the mail
174
+
175
+ // Replace the tags from the mailtemplate with real data from the website and entry
176
+ $info['user_name'] = gwolle_gb_sanitize_output( $entry->get_author_name() );
177
+ $info['user_email'] = $entry->get_author_email();
178
+ $info['blog_name'] = get_bloginfo('name');
179
+ $postid = gwolle_gb_get_postid( (int) $entry->get_book_id() );
180
+ if ( $postid ) {
181
+ $permalink = get_permalink( $postid );
182
+ if ( is_wp_error( $permalink ) ) {
183
+ $info['blog_url'] = get_bloginfo('wpurl') . '?p=' . $postid;
184
+ } else {
185
+ $info['blog_url'] = $permalink;
186
+ }
187
+ } else {
188
+ $info['blog_url'] = get_bloginfo('wpurl');
189
+ }
190
+ $info['entry_content'] = gwolle_gb_format_values_for_mail(gwolle_gb_sanitize_output( $entry->get_content(), 'content' ));
191
+ for ($tagNum = 0; $tagNum < count($mailTags); $tagNum++) {
192
+ $mail_body = str_replace('%' . $mailTags[$tagNum] . '%', $info[$mailTags[$tagNum]], $mail_body);
193
+ $mail_body = gwolle_gb_format_values_for_mail( $mail_body );
194
+ }
195
+
196
+ wp_mail($entry->get_author_email(), $subject, $mail_body, $header);
197
+
198
+ }
199
+ }
200
+ }
201
+ add_action( 'gwolle_gb_save_entry_frontend', 'gwolle_gb_mail_author' );
202
+
203
+
204
+ /*
205
+ * Send Notification Mail to the author that there is an admin_reply (only when it is not Spam).
206
+ *
207
+ * $arg: $entry, instance of gwolle_gb_entry
208
+ * since 1.4.9
209
+ */
210
+ function gwolle_gb_mail_author_on_admin_reply( $entry ) {
211
+ $isspam = $entry->get_isspam();
212
+ if ( ! $isspam ) {
213
+
214
+ // Set the Mail Content
215
+ $mailTags = array('user_email', 'user_name', 'blog_name', 'blog_url', 'admin_reply', 'entry_content', 'date');
216
+ $mail_body = gwolle_gb_sanitize_output( get_option( 'gwolle_gb-mail_admin_replyContent', false ), 'setting_textarea' );
217
+ if (!$mail_body) {
218
+ $mail_body = esc_html__("
219
+ Hello,
220
+
221
+ An admin has just added or changed a reply message to your guestbook entry at '%blog_name%'.
222
+
223
+ Have a nice day.
224
+ The editors at %blog_name%.
225
+
226
+
227
+ Website address: %blog_url%
228
+ Admin Reply:
229
+ %admin_reply%
230
+
231
+
232
+ Original entry posted on %date%:
233
+ %entry_content%
234
+ "
235
+ , 'gwolle-gb');
236
+ }
237
+
238
+ // Set the Mail Headers
239
+ $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('Admin Reply', 'gwolle-gb');
240
+ $subject = apply_filters( 'gwolle_gb_mail_author_on_admin_reply_subject', $subject );
241
+
242
+ $header = "";
243
+ if ( get_option('gwolle_gb-mail-from', false) ) {
244
+ $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . gwolle_gb_sanitize_output( get_option('gwolle_gb-mail-from') ) . ">\r\n";
245
+ } else {
246
+ $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . get_bloginfo('admin_email') . ">\r\n";
247
+ }
248
+ $header .= "Content-Type: text/plain; charset=UTF-8\r\n"; // Encoding of the mail
249
+
250
+ // Replace the tags from the mailtemplate with real data from the website and entry
251
+ $info['user_name'] = gwolle_gb_sanitize_output( $entry->get_author_name() );
252
+ $info['user_email'] = $entry->get_author_email();
253
+ $info['blog_name'] = get_bloginfo('name');
254
+ $postid = gwolle_gb_get_postid( (int) $entry->get_book_id() );
255
+ if ( $postid ) {
256
+ $permalink = get_permalink( $postid );
257
+ if ( is_wp_error( $permalink ) ) {
258
+ $info['blog_url'] = get_bloginfo('wpurl') . '?p=' . $postid;
259
+ } else {
260
+ $info['blog_url'] = $permalink;
261
+ }
262
+ } else {
263
+ $info['blog_url'] = get_bloginfo('wpurl');
264
+ }
265
+ $info['admin_reply'] = gwolle_gb_format_values_for_mail(gwolle_gb_sanitize_output( $entry->get_admin_reply(), 'admin_reply' ));
266
+ $info['entry_content'] = gwolle_gb_format_values_for_mail(gwolle_gb_sanitize_output( $entry->get_content(), 'content' ));
267
+ $info['date'] = date_i18n( get_option('date_format'), $entry->get_datetime() );
268
+ for ($tagNum = 0; $tagNum < count($mailTags); $tagNum++) {
269
+ $mail_body = str_replace('%' . $mailTags[$tagNum] . '%', $info[$mailTags[$tagNum]], $mail_body);
270
+ $mail_body = gwolle_gb_format_values_for_mail( $mail_body );
271
+ }
272
+
273
+ wp_mail($entry->get_author_email(), $subject, $mail_body, $header);
274
+
275
+ }
276
+ }
functions/gb-messages.php ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Functions to handle global variables for messages and errors.
4
+ */
5
+
6
+
7
+ // No direct calls to this script
8
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
9
+ die('No direct calls allowed!');
10
+ }
11
+
12
+
13
+ /*
14
+ * Add messages from the form to show again after submitting an entry.
15
+ * Parameters:
16
+ * - message: string with html and text to show.
17
+ * - error: if it is a validation error for the form (default false).
18
+ * - error_field: which field does not validate.
19
+ * Since 1.5.6
20
+ *
21
+ */
22
+ function gwolle_gb_add_message( $message = false, $error = false, $error_field = false ) {
23
+ global $gwolle_gb_messages, $gwolle_gb_errors, $gwolle_gb_error_fields;
24
+
25
+ // Messages to show on the frontend.
26
+ if ( ! isset( $gwolle_gb_messages ) ) {
27
+ $gwolle_gb_messages = array();
28
+ }
29
+ if ( $message ) {
30
+ $gwolle_gb_messages[] = $message;
31
+ }
32
+
33
+ // Error, true or false.
34
+ if ( $error === true ) {
35
+ $gwolle_gb_errors = true;
36
+ }
37
+
38
+ // Error fields in the form.
39
+ if ( ! isset( $gwolle_gb_error_fields ) ) {
40
+ $gwolle_gb_error_fields = array();
41
+ }
42
+ if ( $error_field ) {
43
+ $gwolle_gb_error_fields[] = $error_field;
44
+ }
45
+ }
46
+
47
+
48
+ /*
49
+ * Returns string with html with messages.
50
+ * Since 1.5.6
51
+ *
52
+ */
53
+ function gwolle_gb_get_messages() {
54
+ global $gwolle_gb_messages;
55
+
56
+ // Messages to show on the frontend.
57
+ if ( ! isset( $gwolle_gb_messages ) ) {
58
+ $gwolle_gb_messages = array();
59
+ }
60
+
61
+ $messages = '';
62
+ $returned_messages = array();
63
+ $gwolle_gb_error_fields = gwolle_gb_get_error_fields();
64
+ if ( is_array( $gwolle_gb_error_fields ) && !empty( $gwolle_gb_error_fields ) ) {
65
+ // There was no data filled in, even though that was mandatory.
66
+ $returned_messages[] = '<p class="error_fields"><strong>' . esc_html__('There were errors submitting your guestbook entry.', 'gwolle-gb') . '</strong></p>';
67
+ $returned_messages[] = '<p class="error_fields" style="display: none;">' . print_r( $gwolle_gb_error_fields, true ) . '</p>';
68
+ }
69
+ foreach ( $gwolle_gb_messages as $message ) {
70
+ $returned_messages[] = $message;
71
+ }
72
+
73
+ $returned_messages = apply_filters( 'gwolle_gb_messages', $returned_messages );
74
+
75
+ foreach ( $returned_messages as $message ) {
76
+ $messages .= $message; // string
77
+ }
78
+
79
+ return $messages;
80
+ }
81
+
82
+
83
+ /*
84
+ * Returns bool, if errors were found.
85
+ * Since 1.5.6
86
+ *
87
+ */
88
+ function gwolle_gb_get_errors() {
89
+ global $gwolle_gb_errors;
90
+
91
+ // Messages to show on the frontend.
92
+ if ( ! isset( $gwolle_gb_errors ) ) {
93
+ $gwolle_gb_errors = false;
94
+ }
95
+
96
+ $_gwolle_gb_errors = apply_filters( 'gwolle_gb_errors', $gwolle_gb_errors );
97
+
98
+ return $_gwolle_gb_errors;
99
+ }
100
+
101
+
102
+ /*
103
+ * Returns array with the fields that didnot validate.
104
+ * Since 1.5.6
105
+ *
106
+ */
107
+ function gwolle_gb_get_error_fields() {
108
+ global $gwolle_gb_error_fields;
109
+
110
+ // Messages to show on the frontend.
111
+ if ( ! isset( $gwolle_gb_error_fields ) ) {
112
+ $gwolle_gb_error_fields = array();
113
+ }
114
+
115
+ $_gwolle_gb_error_fields = apply_filters( 'gwolle_gb_error_fields', $gwolle_gb_error_fields );
116
+
117
+ return $_gwolle_gb_error_fields;
118
+ }
119
+
120
+
121
+ /*
122
+ * Add formdata from the form to show again after submitting an entry.
123
+ * Parameters:
124
+ * - field: string with name of the formfield.
125
+ * - value: value of the formfield to be used again.
126
+ * Since 1.5.6
127
+ *
128
+ */
129
+ function gwolle_gb_add_formdata( $field, $value = '' ) {
130
+ global $gwolle_gb_formdata;
131
+
132
+ if ( ! isset( $gwolle_gb_formdata ) ) {
133
+ $gwolle_gb_formdata = array();
134
+ }
135
+ if ( $value ) {
136
+ $gwolle_gb_formdata[ $field ] = $value;
137
+ }
138
+ }
139
+
140
+
141
+ /*
142
+ * Returns string with html with formdata to be used again on the frontend.
143
+ * Since 1.5.6
144
+ *
145
+ */
146
+ function gwolle_gb_get_formdata() {
147
+ global $gwolle_gb_formdata;
148
+
149
+ if ( ! isset( $gwolle_gb_formdata ) ) {
150
+ $gwolle_gb_formdata = array();
151
+ }
152
+
153
+ $_gwolle_gb_formdata = apply_filters( 'gwolle_gb_formdata', $gwolle_gb_formdata );
154
+
155
+ return $_gwolle_gb_formdata;
156
+ }
functions/gb-metabox.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Edit Link for Moderators for in the Metabox.
12
+ *
13
+ * @since 2.3.0
14
+ */
15
+ function gwolle_gb_entry_metabox_lines_edit_link( $gb_metabox, $entry ) {
16
+ if ( function_exists('current_user_can') && current_user_can('moderate_comments') ) {
17
+ $gb_metabox .= '
18
+ <div class="gb-metabox-line">
19
+ <a class="gwolle_gb_edit_link" href="' . admin_url('admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&amp;entry_id=' . $entry->get_id() ) . '" title="' . esc_attr__('Edit entry', 'gwolle-gb') . '">' . esc_html__('Edit', 'gwolle-gb') . '</a>
20
+ </div>';
21
+ }
22
+ return $gb_metabox;
23
+ }
24
+ add_filter( 'gwolle_gb_entry_metabox_lines', 'gwolle_gb_entry_metabox_lines_edit_link', 90, 2 );
25
+
26
+
27
+ /*
28
+ * Ajax Icon for in the Metabox.
29
+ * Only shown when there is already content.
30
+ *
31
+ * @since 2.3.0
32
+ */
33
+ function gwolle_gb_entry_metabox_lines_ajax_icon( $gb_metabox, $entry ) {
34
+ if ( function_exists('current_user_can') && current_user_can('moderate_comments') ) {
35
+ if ( $gb_metabox ) {
36
+
37
+ $gb_metabox .= '
38
+ <div class="gb-metabox-line gb-metabox-line-ajax">
39
+ ' . esc_html__('Please wait...', 'gwolle-gb') . '
40
+ </div>';
41
+ }
42
+ }
43
+ return $gb_metabox;
44
+ }
45
+ add_filter( 'gwolle_gb_entry_metabox_lines', 'gwolle_gb_entry_metabox_lines_ajax_icon', 99, 2 );
functions/gb-misc.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Uses intermittent meta_key to determine the permalink. See functions/gb-post-meta.php and gwolle_gb_set_meta_keys().
12
+ * return (int) postid if found, else 0.
13
+ */
14
+ function gwolle_gb_get_postid( $book_id = 1 ) {
15
+
16
+ $the_query = new WP_Query( array(
17
+ 'post_type' => 'any',
18
+ 'ignore_sticky_posts' => true,
19
+ 'meta_query' => array(
20
+ array(
21
+ 'key' => 'gwolle_gb_read',
22
+ 'value' => 'true',
23
+ ),
24
+ array(
25
+ 'key' => 'gwolle_gb_book_id',
26
+ 'value' => $book_id,
27
+ ),
28
+ ),
29
+ 'update_post_term_cache' => false,
30
+ 'update_post_meta_cache' => false
31
+ ));
32
+ if ( $the_query->have_posts() ) {
33
+ while ( $the_query->have_posts() ) : $the_query->the_post();
34
+ $postid = get_the_ID();
35
+ return $postid;
36
+ break; // only one postid is needed.
37
+ endwhile;
38
+ wp_reset_postdata();
39
+ }
40
+ return 0;
41
+
42
+ }
43
+
44
+
45
+ /*
46
+ * Taken from wp-admin/includes/template.php touch_time()
47
+ * Adapted for simplicity.
48
+ */
49
+ function gwolle_gb_touch_time( $entry ) {
50
+ global $wp_locale;
51
+
52
+ $date = $entry->get_datetime();
53
+ if ( !$date ) {
54
+ $date = current_time('timestamp');
55
+ }
56
+
57
+ $dd = date( 'd', $date );
58
+ $mm = date( 'm', $date );
59
+ $yy = date( 'Y', $date );
60
+ $hh = date( 'H', $date );
61
+ $mn = date( 'i', $date );
62
+
63
+ // Day
64
+ 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>';
65
+
66
+ // Month
67
+ echo '<label for="mm"><span class="screen-reader-text">' . esc_html__( 'Month', 'gwolle-gb' ) . '</span><select id="mm" name="mm">\n';
68
+ for ( $i = 1; $i < 13; $i = $i +1 ) {
69
+ $monthnum = zeroise($i, 2);
70
+ echo "\t\t\t" . '<option value="' . $monthnum . '" ' . selected( $monthnum, $mm, false ) . '>';
71
+ /* translators: 1: month number (01, 02, etc.), 2: month abbreviation */
72
+ echo sprintf( esc_html__( '%1$s-%2$s', 'gwolle-gb' ), $monthnum, $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) ) . "</option>\n";
73
+ }
74
+ echo '</select></label>';
75
+
76
+ // Year
77
+ 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>';
78
+ echo '<br />';
79
+ // Hour
80
+ echo '<label for="hh"><span class="screen-reader-text">' . esc_html__( 'Hour', 'gwolle-gb' ) . '</span><input type="text" id="hh" name="hh" value="' . $hh . '" size="2" maxlength="2" autocomplete="off" /></label>:';
81
+ // Minute
82
+ echo '<label for="mn"><span class="screen-reader-text">' . esc_html__( 'Minute', 'gwolle-gb' ) . '</span><input type="text" id="mn" name="mn" value="' . $mn . '" size="2" maxlength="2" autocomplete="off" /></label>';
83
+ ?>
84
+
85
+ <div class="gwolle_gb_timestamp">
86
+ <!-- Clicking OK will place a timestamp here. -->
87
+ <input type="hidden" id="gwolle_gb_timestamp" name="gwolle_gb_timestamp" value="" />
88
+ </div>
89
+
90
+ <p>
91
+ <a href="#" class="gwolle_gb_save_timestamp hide-if-no-js button" title="<?php esc_attr_e('Save the date and time', 'gwolle-gb'); ?>">
92
+ <?php esc_html_e('Save Date', 'gwolle-gb'); ?>
93
+ </a>
94
+ <a href="#" class="gwolle_gb_cancel_timestamp hide-if-no-js button-cancel" title="<?php esc_attr_e('Cancel saving date and time', 'gwolle-gb'); ?>">
95
+ <?php esc_html_e('Cancel', 'gwolle-gb'); ?>
96
+ </a>
97
+ </p>
98
+ <?php
99
+ }
functions/gb-post-meta.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Set meta_keys so we can find the post with the shortcode back.
12
+ */
13
+ function gwolle_gb_save_post($id) {
14
+
15
+ if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
16
+ return;
17
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
18
+ return;
19
+ if ( defined( 'DOING_CRON' ) && DOING_CRON )
20
+ return;
21
+
22
+ if ( function_exists('has_shortcode') ) {
23
+ $post = get_post( $id );
24
+
25
+ if ( has_shortcode( $post->post_content, 'gwolle_gb' ) || has_shortcode( $post->post_content, 'gwolle_gb_read' ) ) {
26
+ // Set a meta_key so we can find the post with the shortcode back.
27
+ $meta_value = get_post_meta( $id, 'gwolle_gb_read', true );
28
+ if ( $meta_value != 'true' ) {
29
+ update_post_meta( $id, 'gwolle_gb_read', 'true' );
30
+ }
31
+ } else {
32
+ // Remove the meta_key in case it is set.
33
+ delete_post_meta( $id, 'gwolle_gb_read' );
34
+ }
35
+
36
+ if ( has_shortcode( $post->post_content, 'gwolle_gb' ) || has_shortcode( $post->post_content, 'gwolle_gb_read' ) || has_shortcode( $post->post_content, 'gwolle_gb_write' ) ) {
37
+ // Nothing to do
38
+ } else {
39
+ delete_post_meta( $id, 'gwolle_gb_book_id' );
40
+ }
41
+ }
42
+ }
43
+ add_action('save_post', 'gwolle_gb_save_post');
44
+
45
+
46
+ /*
47
+ * Make our meta fields protected, so they are not in the custom fields metabox.
48
+ *
49
+ * Since 2.1.5
50
+ */
51
+ function gwolle_gb_is_protected_meta( $protected, $meta_key, $meta_type ) {
52
+
53
+ switch ($meta_key) {
54
+ case 'gwolle_gb_read':
55
+ return true;
56
+ break;
57
+ case 'gwolle_gb_book_id':
58
+ return true;
59
+ break;
60
+ }
61
+
62
+ return $protected;
63
+ }
64
+ add_filter( 'is_protected_meta', 'gwolle_gb_is_protected_meta', 10, 3 );
65
+
66
+
67
+ /*
68
+ * Set Meta_keys so we can find the post with the shortcode back.
69
+ * Args: $shortcode, string with value 'write' or 'read'.
70
+ * $shortcode_atts, array with the shortcode attributes.
71
+ *
72
+ * Gets called from frontend/gb-shortcodes.php.
73
+ *
74
+ * Since 1.5.6
75
+ */
76
+ function gwolle_gb_set_meta_keys( $shortcode, $shortcode_atts ) {
77
+
78
+ if ( $shortcode = 'read' ) {
79
+ // Set a meta_key so we can find the post with the shortcode back.
80
+ $meta_value_read = get_post_meta( get_the_ID(), 'gwolle_gb_read', true );
81
+ if ( $meta_value_read != 'true' ) {
82
+ update_post_meta( get_the_ID(), 'gwolle_gb_read', 'true' );
83
+ }
84
+ }
85
+
86
+ $book_id = 1; // default
87
+ if ( isset($shortcode_atts['book_id']) ) {
88
+ $book_id = $shortcode_atts['book_id'];
89
+ }
90
+ $meta_value_book_id = get_post_meta( get_the_ID(), 'gwolle_gb_book_id', true );
91
+ if ( $meta_value_book_id != $book_id ) {
92
+ update_post_meta( get_the_ID(), 'gwolle_gb_book_id', $book_id );
93
+ }
94
+
95
+ }
functions/gb-settings.php ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
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'
17
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-antispam-question', 'strval' ); // empty string
18
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-antispam-answer', 'strval' ); // empty string
19
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-authorMailContent', 'strval' ); // empty by default
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'
27
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-labels_float', 'strval' ); // 'true'
28
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-linkAuthorWebsite', 'strval' ); // 'true'
29
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-longtext', 'strval' ); // 'true'
30
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-mail-from', 'strval' ); // empty string
31
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-mail_admin_replyContent', 'strval' ); // 'false'
32
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-mail_author', 'strval' ); // 'false'
33
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-moderate-entries', 'strval' ); // 'true'
34
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-navigation', 'intval' ); // 0 or 1, default is 0
35
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-nonce', 'strval' ); // 'true'
36
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-notifyByMail', 'strval' ); // array, but initially empty
37
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-notice', 'strval' ); // string, but initially empty
38
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-paginate_all', 'strval' ); // 'false'
39
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-read', 'strval' ); // serialized Array, but initially empty
40
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-refuse-spam', 'strval' ); // 'false'
41
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-require_login', 'strval' ); // 'false'
42
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-sfs', 'strval' ); // 'false'
43
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-showEntryIcons', 'strval' ); // 'true'
44
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-showLineBreaks', 'strval' ); // 'false'
45
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-showSmilies', 'strval' ); // 'true'
46
+ register_setting( 'gwolle_gb_options', 'gwolle_gb_version', 'strval' ); // string, mind the underscore
47
+ }
48
+ add_action( 'admin_init', 'gwolle_gb_register_settings' );
49
+
50
+
51
+ /*
52
+ * Get the setting for Gwolle-GB that is saved as serialized data.
53
+ *
54
+ * Args: $request, string with value 'form' or 'read'.
55
+ *
56
+ * Return:
57
+ * - Array with settings for that request.
58
+ * - or false if no setting.
59
+ */
60
+ function gwolle_gb_get_setting($request) {
61
+
62
+ $provided = array('form', 'read');
63
+ if ( in_array( $request, $provided ) ) {
64
+ switch ( $request ) {
65
+ case 'form':
66
+ $defaults = Array(
67
+ 'form_name_enabled' => 'true',
68
+ 'form_name_mandatory' => 'true',
69
+ 'form_city_enabled' => 'true',
70
+ 'form_city_mandatory' => 'false',
71
+ 'form_email_enabled' => 'true',
72
+ 'form_email_mandatory' => 'true',
73
+ 'form_homepage_enabled' => 'true',
74
+ 'form_homepage_mandatory' => 'false',
75
+ 'form_message_enabled' => 'true',
76
+ 'form_message_mandatory' => 'true',
77
+ 'form_bbcode_enabled' => 'false',
78
+ 'form_antispam_enabled' => 'false',
79
+ 'form_recaptcha_enabled' => 'false'
80
+ );
81
+ $setting = get_option( 'gwolle_gb-form', Array() );
82
+ if ( is_string( $setting ) ) {
83
+ $setting = maybe_unserialize( $setting );
84
+ }
85
+ if ( is_array($setting) && !empty($setting) ) {
86
+ $setting = array_merge( $defaults, $setting );
87
+ return $setting;
88
+ }
89
+ return $defaults;
90
+ break;
91
+ case 'read':
92
+ if ( get_option('show_avatars') ) {
93
+ $avatar = 'true';
94
+ } else {
95
+ $avatar = 'false';
96
+ }
97
+
98
+ $defaults = Array(
99
+ 'read_avatar' => $avatar,
100
+ 'read_name' => 'true',
101
+ 'read_city' => 'true',
102
+ 'read_datetime' => 'true',
103
+ 'read_date' => 'false',
104
+ 'read_content' => 'true',
105
+ 'read_aavatar' => 'false',
106
+ 'read_editlink' => 'true'
107
+ );
108
+ $setting = get_option( 'gwolle_gb-read', Array() );
109
+ if ( is_string( $setting ) ) {
110
+ $setting = maybe_unserialize( $setting );
111
+ }
112
+ if ( is_array($setting) && !empty($setting) ) {
113
+ $setting = array_merge( $defaults, $setting );
114
+ return $setting;
115
+ }
116
+ return $defaults;
117
+ break;
118
+ default:
119
+ return false;
120
+ break;
121
+ }
122
+ }
123
+ return false;
124
+ }
functions/gb-shortcake.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Support Shortcode UI feature plugin.
12
+ */
13
+ function gwolle_gb_shortcode_ui() {
14
+ if ( function_exists( 'shortcode_ui_register_for_shortcode' ) ) {
15
+ if ( isset($_GET['post']) ) {
16
+ $postid = (int) $_GET['post'];
17
+ $description = esc_html( sprintf( __( 'Book ID for when using multiple guestbooks. Default is 1. Your current post ID is %d.', 'gwolle-gb' ), $postid ) );
18
+ } else {
19
+ $description = esc_html__( 'Book ID for when using multiple guestbooks. Default is 1.', 'gwolle-gb' );
20
+ }
21
+
22
+ $ui_args = array(
23
+ 'label' => esc_html__( 'Gwolle Guestbook', 'gwolle-gb' ),
24
+ 'listItemImage' => 'dashicons-comments',
25
+ 'attrs' => array(
26
+ array(
27
+ 'label' => esc_html__( 'Gwolle Guestbook', 'gwolle-gb' ),
28
+ 'attr' => 'book_id',
29
+ 'type' => 'number',
30
+ 'description' => $description,
31
+ ),
32
+ ),
33
+ );
34
+ shortcode_ui_register_for_shortcode( 'gwolle_gb', $ui_args );
35
+ }
36
+ }
37
+ add_action( 'init', 'gwolle_gb_shortcode_ui' );
functions/gb-single-view.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Give a single view of the entry.
12
+ * Uses the template 'gwolle_gb-entry.php', either in the themedir or the plugin.
13
+ *
14
+ * @param $entry object of the class gwolle_gb_entry.
15
+ * $first boolean if it is the first entry in the list
16
+ * $counter int the number in the list.
17
+ *
18
+ * @return string with html formatted entry.
19
+ *
20
+ * @since 2.3.0
21
+ */
22
+ function gwolle_gb_single_view( $entry, $first = false, $counter = 0 ) {
23
+
24
+ // Try to load and require_once the template from the themes folders.
25
+ if ( locate_template( array('gwolle_gb-entry.php'), true, true ) == '') {
26
+
27
+ $output = '<!-- Gwolle-GB Entry: Default Template Loaded -->
28
+ ';
29
+
30
+ // No template found and loaded in the theme folders.
31
+ // Load the template from the plugin folder.
32
+ require_once( GWOLLE_GB_DIR . '/frontend/gwolle_gb-entry.php' );
33
+
34
+ } else {
35
+
36
+ $output = '<!-- Gwolle-GB Entry: Custom Template Loaded -->
37
+ ';
38
+
39
+ }
40
+
41
+ // Run the function from the template to get the entry.
42
+ $entry_output = gwolle_gb_entry_template( $entry, $first, $counter );
43
+
44
+ // Add a filter for each entry, so devs can add or remove parts.
45
+ $output .= apply_filters( 'gwolle_gb_entry_read', $entry_output, $entry );
46
+
47
+ return $output;
48
+ }
functions/gb-stop-forum-spam.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Stop Forum Spam Function
4
+ * http://www.stopforumspam.com
5
+ * Copied and edited from seriously-simple-spam-blocker
6
+ */
7
+
8
+
9
+ // No direct calls to this script
10
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
11
+ die('No direct calls allowed!');
12
+ }
13
+
14
+
15
+ /*
16
+ * Check the $entry against Stop Forum Spam service
17
+ *
18
+ * Parameters:
19
+ * $entry: Object with the entry
20
+ *
21
+ * Return: true or false
22
+ *
23
+ * @since 2.3.0
24
+ */
25
+ function gwolle_gb_stop_forum_spam( $entry ) {
26
+ $args['ip'] = $_SERVER['REMOTE_ADDR'];
27
+ $args['email'] = urlencode(iconv( 'GBK', 'UTF-8', $entry->get_author_email() ));
28
+ $args['username'] = urlencode(iconv( 'GBK', 'UTF-8', $entry->get_author_name() ));
29
+ $args['f'] = 'json';
30
+ $args['confidence'] = true;
31
+ $args = array_filter( $args );
32
+
33
+ $url = 'https://api.stopforumspam.com/api?';
34
+ $query = $url . http_build_query( $args );
35
+ $key = md5( $query );
36
+
37
+ if ( false === ( $transient = get_transient( 'gwolle_gb_sfs_' . $key ) ) ) {
38
+ $result = wp_remote_get( $query );
39
+ if ( ! is_wp_error( $result ) ) {
40
+
41
+ if ( strlen( $result['body'] ) < 10 || ! $result['response']['code'] == 200 ) {
42
+ return false;
43
+ }
44
+
45
+ if ( $data = json_decode( $result['body'] ) ) {
46
+ // It is json. Continue.
47
+ if ( $data->success != 1 ) {
48
+ return false;
49
+ }
50
+
51
+ if ( isset( $data->ip ) || isset( $data->email ) || isset( $data->username ) ) {
52
+
53
+ $blocked = false;
54
+
55
+ if ( isset( $data->ip->confidence ) && $data->ip->confidence > 75 ) { $blocked = 'ip'; }
56
+ if ( isset( $data->username->confidence ) && $data->username->confidence > 80 ) { $blocked = 'username'; }
57
+ if ( isset( $data->email->confidence ) && $data->email->confidence > 75 ) { $blocked = 'email'; }
58
+
59
+ if ( $blocked ) {
60
+ set_transient( 'gwolle_gb_sfs_' . $key, 'true', DAY_IN_SECONDS );
61
+ return true;
62
+ } else {
63
+ set_transient( 'gwolle_gb_sfs_' . $key, 'false', DAY_IN_SECONDS );
64
+ return false;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ } else {
70
+ if ( 'true' === $transient ) {
71
+ return true;
72
+ } else {
73
+ return false;
74
+ }
75
+ }
76
+ return false;
77
+ }
functions/gb-user.php ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ // No direct calls to this script
5
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
6
+ die('No direct calls allowed!');
7
+ }
8
+
9
+
10
+ /*
11
+ * Is User also Author of the entry
12
+ *
13
+ * Args: $entry object, instance of gwolle_gb_entry
14
+ *
15
+ * Return:
16
+ * - true if author
17
+ * - false if not author
18
+ *
19
+ * @since 2.3.0
20
+ */
21
+ function gwolle_gb_is_author( $entry ) {
22
+ if ( is_object( $entry ) && is_a( $entry, 'gwolle_gb_entry' ) ) {
23
+ $user_id = get_current_user_id(); // returns 0 if no current user
24
+ if ( $user_id > 0 ) {
25
+ $author_id = $entry->get_author_id();
26
+ if ( $author_id == $user_id ) {
27
+ return true;
28
+ }
29
+ }
30
+ }
31
+ return false;
32
+ }
33
+
34
+
35
+ /*
36
+ * Is User allowed to manage comments
37
+ *
38
+ * Args: $user_id
39
+ *
40
+ * Return:
41
+ * - user_nicename or user_login if allowed
42
+ * - false if not allowed
43
+ */
44
+ function gwolle_gb_is_moderator($user_id) {
45
+
46
+ if ( $user_id > 0 ) {
47
+ if ( function_exists('user_can') && user_can( $user_id, 'moderate_comments' ) ) {
48
+ // Only moderators
49
+ $userdata = get_userdata( $user_id );
50
+ if (is_object($userdata)) {
51
+ if ( isset( $userdata->display_name ) ) {
52
+ return $userdata->display_name;
53
+ } else {
54
+ return $userdata->user_login;
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return false;
60
+ }
61
+
62
+
63
+ /*
64
+ * Get all the users with capability 'moderate_comments'.
65
+ *
66
+ * Return: Array with User objects.
67
+ */
68
+ function gwolle_gb_get_moderators() {
69
+
70
+ $role__in = array( 'Administrator', 'Editor', 'Author' );
71
+ $role__in = apply_filters( 'gwolle_gb_get_moderators_role__in', $role__in );
72
+
73
+ // role__in will only work since WP 4.4.
74
+ $users_query = new WP_User_Query( array(
75
+ 'role__in' => $role__in,
76
+ 'fields' => 'all',
77
+ 'orderby' => 'display_name'
78
+ ) );
79
+ $users = $users_query->get_results();
80
+
81
+ $moderators = array();
82
+
83
+ if ( is_array($users) && !empty($users) ) {
84
+ foreach ( $users as $user_info ) {
85
+
86
+ if ($user_info === FALSE) {
87
+ // Invalid $user_id
88
+ continue;
89
+ }
90
+
91
+ // No capability
92
+ if ( ! user_can( $user_info, 'moderate_comments' ) ) {
93
+ continue;
94
+ }
95
+
96
+ $moderators[] = $user_info;
97
+ }
98
+ }
99
+
100
+ return $moderators;
101
+ }
102
+
103
+
104
+ /*
105
+ * Delete author_id (and maybe checkedby) after deletion of user.
106
+ * Will trim down db requests, because non-existent user do not get cached.
107
+ */
108
+ function gwolle_gb_deleted_user( $user_id ) {
109
+ $entries = gwolle_gb_get_entries(array(
110
+ 'author_id' => $user_id,
111
+ 'num_entries' => -1
112
+ ));
113
+ if ( is_array( $entries ) && !empty( $entries ) ) {
114
+ foreach ( $entries as $entry ) {
115
+ // method will take care of it...
116
+ $save = $entry->save();
117
+ }
118
+ }
119
+ }
120
+ add_action( 'deleted_user', 'gwolle_gb_deleted_user' );
121
+
122
+
123
+ /*
124
+ * Get Author name in the right format as html
125
+ *
126
+ * Args: $entry object
127
+ *
128
+ * Return: $author_name_html string with html
129
+ */
130
+ function gwolle_gb_get_author_name_html($entry) {
131
+
132
+ $author_name = gwolle_gb_sanitize_output( trim( $entry->get_author_name() ) );
133
+
134
+ // Registered User gets italic font-style
135
+ $author_id = $entry->get_author_id();
136
+ $is_moderator = gwolle_gb_is_moderator( $author_id );
137
+ if ( $is_moderator ) {
138
+ $author_name_html = '<i class="gb-moderator">' . $author_name . '</i>';
139
+ } else {
140
+ $author_name_html = $author_name;
141
+ }
142
+
143
+ $author_link_to_buddypress = apply_filters( 'gwolle_gb_author_link_to_buddypress', true );
144
+ if ( function_exists('bp_core_get_user_domain') && $author_link_to_buddypress ) {
145
+ // Link to Buddypress profile.
146
+ $author_website = trim( bp_core_get_user_domain( $author_id ) );
147
+ if ($author_website) {
148
+ $author_name_html = '<a href="' . $author_website . '" target="_blank"
149
+ title="' . /* translators: BuddyPress profile */ esc_html__( 'Visit the profile of', 'gwolle-gb' ) . ' ' . $author_name . ': ' . $author_website . '">' . $author_name_html . '</a>';
150
+ }
151
+ } else if ( get_option('gwolle_gb-linkAuthorWebsite', 'true') === 'true' ) {
152
+ // Link to author website if set in options.
153
+ $author_website = trim( $entry->get_author_website() );
154
+ if ($author_website) {
155
+ $pattern = '/^http/';
156
+ if ( ! preg_match($pattern, $author_website, $matches) ) {
157
+ $author_website = "http://" . $author_website;
158
+ }
159
+ $author_link_rel = apply_filters( 'gwolle_gb_author_link_rel', 'nofollow' );
160
+ $author_name_html = '<a href="' . $author_website . '" target="_blank" rel="' . $author_link_rel . '"
161
+ title="' . esc_html__( 'Visit the website of', 'gwolle-gb' ) . ' ' . $author_name . ': ' . $author_website . '">' . $author_name_html . '</a>';
162
+ }
163
+ }
164
+
165
+ $author_name_html = apply_filters( 'gwolle_gb_author_name_html', $author_name_html, $entry );
166
+
167
+ return $author_name_html;
168
+ }
functions/index.html ADDED
File without changes
gwolle-gb-hooks.php ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * WordPress Actions and Filters.
5
+ * See the Plugin API in the Codex:
6
+ * http://codex.wordpress.org/Plugin_API
7
+ */
8
+
9
+
10
+ // No direct calls to this script
11
+ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
12
+ die('No direct calls allowed!');
13
+ }
14
+
15
+
16
+ /*
17
+ * Add a menu in the WordPress backend.
18
+ * Load JavaSCript and CSS for Admin.
19
+ */
20
+ function gwolle_gb_adminmenu() {
21
+ /*
22
+ * How to add new menu-entries:
23
+ * add_menu_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '' )
24
+ */
25
+
26
+ // Counter
27
+ $count_unchecked = get_transient( 'gwolle_gb_menu_counter' );
28
+ if ( false === $count_unchecked ) {
29
+ $count_unchecked = (int) gwolle_gb_get_entry_count(
30
+ array(
31
+ 'checked' => 'unchecked',
32
+ 'trash' => 'notrash',
33
+ 'spam' => 'nospam'
34
+ )
35
+ );
36
+ set_transient( 'gwolle_gb_menu_counter', $count_unchecked, DAY_IN_SECONDS );
37
+ }
38
+
39
+ // Main navigation entry
40
+ // Admin page: admin/welcome.php
41
+ add_menu_page(
42
+ esc_html__('Guestbook', 'gwolle-gb'), /* translators: Menu entry */
43
+ esc_html__('Guestbook', 'gwolle-gb') . "<span class='update-plugins count-" . $count_unchecked . "'><span class='theme-count'>" . $count_unchecked . "</span></span>",
44
+ 'moderate_comments',
45
+ GWOLLE_GB_FOLDER . '/gwolle-gb.php',
46
+ 'gwolle_gb_welcome',
47
+ 'dashicons-admin-comments'
48
+ );
49
+
50
+ // Admin page: admin/entries.php
51
+ add_submenu_page(
52
+ GWOLLE_GB_FOLDER . '/gwolle-gb.php',
53
+ esc_html__('Entries', 'gwolle-gb'), /* translators: Menu entry */
54
+ esc_html__('Entries', 'gwolle-gb') . "<span class='update-plugins count-" . $count_unchecked . "'><span class='theme-count'>" . $count_unchecked . "</span></span>",
55
+ 'moderate_comments',
56
+ GWOLLE_GB_FOLDER . '/entries.php',
57
+ 'gwolle_gb_page_entries'
58
+ );
59
+
60
+ // Admin page: admin/editor.php
61
+ add_submenu_page( GWOLLE_GB_FOLDER . '/gwolle-gb.php', esc_html__('Entry editor', 'gwolle-gb'), /* translators: Menu entry */ esc_html__('Add/Edit entry', 'gwolle-gb'), 'moderate_comments', GWOLLE_GB_FOLDER . '/editor.php', 'gwolle_gb_page_editor' );
62
+
63
+ // Admin page: admin/settings.php
64
+ add_submenu_page( GWOLLE_GB_FOLDER . '/gwolle-gb.php', esc_html__('Settings', 'gwolle-gb'), /* translators: Menu entry */ esc_html__('Settings', 'gwolle-gb'), 'manage_options', GWOLLE_GB_FOLDER . '/settings.php', 'gwolle_gb_page_settings' );
65
+
66
+ // Admin page: admin/import.php
67
+ add_submenu_page( GWOLLE_GB_FOLDER . '/gwolle-gb.php', esc_html__('Import', 'gwolle-gb'), /* translators: Menu entry */ esc_html__('Import', 'gwolle-gb'), 'manage_options', GWOLLE_GB_FOLDER . '/import.php', 'gwolle_gb_page_import' );
68
+
69
+ // Admin page: admin/export.php
70
+ add_submenu_page( GWOLLE_GB_FOLDER . '/gwolle-gb.php', esc_html__('Export', 'gwolle-gb'), /* translators: Menu entry */ esc_html__('Export', 'gwolle-gb'), 'manage_options', GWOLLE_GB_FOLDER . '/export.php', 'gwolle_gb_page_export' );
71
+ }
72
+ add_action('admin_menu', 'gwolle_gb_adminmenu');
73
+
74
+
75
+ /*
76
+ * Load CSS for admin.
77
+ */
78
+ function gwolle_gb_admin_enqueue_style() {
79
+ wp_enqueue_style( 'gwolle-gb-admin-css', plugins_url( '/admin/css/gwolle-gb-admin.css', __FILE__ ), false, GWOLLE_GB_VER, 'all' );
80
+ }
81
+ add_action( 'admin_enqueue_scripts', 'gwolle_gb_admin_enqueue_style' );
82
+
83
+
84
+ /*
85
+ * Load JavaScript for admin.
86
+ * It's called directly on the adminpages, it's not being used as a hook.
87
+ */
88
+ function gwolle_gb_admin_enqueue() {
89
+ wp_enqueue_script( 'gwolle-gb-admin-js', plugins_url( '/admin/js/gwolle-gb-admin.js', __FILE__ ), 'jquery', GWOLLE_GB_VER, true );
90
+ }
91
+ //add_action( 'admin_enqueue_scripts', 'gwolle_gb_admin_enqueue' );
92
+
93
+
94
+ /*
95
+ * Add Settings link to the main plugin page
96
+ */
97
+ function gwolle_gb_links( $links, $file ) {
98
+ if ( $file == plugin_basename( dirname(__FILE__).'/gwolle-gb.php' ) ) {
99
+ $links[] = '<a href="' . admin_url( 'admin.php?page=gwolle-gb/settings.php' ) . '">'.__( 'Settings', 'gwolle-gb' ).'</a>';
100
+ }
101
+ return $links;
102
+ }
103
+ add_filter( 'plugin_action_links', 'gwolle_gb_links', 10, 2 );
104
+
105
+
106
+ /*
107
+ * Check if we need to install or upgrade.
108
+ * Supports MultiSite since 1.5.2.
109
+ */
110
+ function gwolle_gb_init() {
111
+
112
+ global $wpdb;
113
+
114
+ $current_version = get_option( 'gwolle_gb_version' );
115
+
116
+ if ($current_version && version_compare($current_version, GWOLLE_GB_VER, '<')) {
117
+ // Upgrade, if this version differs from what the database says.
118
+
119
+ if ( function_exists('is_multisite') && is_multisite() ) {
120
+ $blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
121
+ foreach ($blogids as $blog_id) {
122
+ switch_to_blog($blog_id);
123
+ gwolle_gb_upgrade();
124
+ restore_current_blog();
125
+ }
126
+ } else {
127
+ gwolle_gb_upgrade();
128
+ }
129
+ }
130
+ }
131
+ add_action('admin_init', 'gwolle_gb_init');
132
+
133
+
134
+ /*
135
+ * Install database tables for new blog on MultiSite.
136
+ * since 1.5.2.
137
+ */
138
+ function gwolle_gb_activate_new_site($blog_id) {
139
+ switch_to_blog($blog_id);
140
+ gwolle_gb_install();
141
+ restore_current_blog();
142
+ }
143
+ add_action( 'wpmu_new_blog', 'gwolle_gb_activate_new_site' );
144
+
145
+
146
+ /*
147
+ * Support uninstall for MultiSite through a filter.
148
+ * Take Note: This will do an uninstall on all sites.
149
+ * since 2.1.0.
150
+ */
151
+ function gwolle_gb_multisite_uninstall() {
152
+ global $wpdb;
153
+
154
+ if ( is_admin() ) {
155
+ if ( function_exists('is_multisite') && is_multisite() ) {
156
+ $do_uninstall = apply_filters( 'gwolle_gb_multisite_uninstall', false );
157
+ if ( $do_uninstall ) {
158
+ $blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
159
+ foreach ($blogids as $blog_id) {
160
+ switch_to_blog($blog_id);
161
+ gwolle_gb_uninstall();
162
+ restore_current_blog();
163
+ }
164
+ // Avoid database errors and PHP notices, don't run these actions anymore.
165
+ remove_action( 'admin_menu', 'gwolle_gb_adminmenu', 10, 1 );
166
+ remove_action( 'wp_dashboard_setup', 'gwolle_gb_dashboard_setup', 10, 1 );
167
+ remove_action( 'admin_bar_menu', 'gwolle_gb_admin_bar_menu', 61, 1 );
168
+ }
169
+ }
170
+ }
171
+ }
172
+ add_action('wp_loaded', 'gwolle_gb_multisite_uninstall');
173
+
174
+
175
+ /*
176
+ * Register styles and scripts.
177
+ * Enqueue them in the frontend function only when we need them.
178
+ */
179
+ function gwolle_gb_register() {
180
+
181
+ // Always load jQuery, it's just easier this way.
182
+ wp_enqueue_script('jquery');
183
+
184
+ // Register script for frontend. Load it later.
185
+ wp_register_script( 'gwolle_gb_frontend_js', plugins_url('frontend/js/gwolle-gb-frontend.js', __FILE__), 'jquery', GWOLLE_GB_VER, true );
186
+ $dataToBePassed = array(
187
+ 'ajax_url' => admin_url('admin-ajax.php'),
188
+ 'load_message' => /* translators: Infinite Scroll */ esc_html__('Loading more...', 'gwolle-gb'),
189
+ 'end_message' => /* translators: Infinite Scroll */ esc_html__('No more entries.', 'gwolle-gb')
190
+ );
191
+ wp_localize_script( 'gwolle_gb_frontend_js', 'gwolle_gb_frontend_script', $dataToBePassed );
192
+
193
+
194
+ // Register style for frontend. Load it later.
195
+ wp_register_style('gwolle_gb_frontend_css', plugins_url('frontend/css/gwolle-gb-frontend.css', __FILE__), false, GWOLLE_GB_VER, 'screen');
196
+ }
197
+ add_action('wp_enqueue_scripts', 'gwolle_gb_register');
198
+
199
+
200
+ /*
201
+ * Load Language files for frontend and backend.
202
+ */
203
+ function gwolle_gb_load_lang() {
204
+ load_plugin_textdomain( 'gwolle-gb', false, GWOLLE_GB_FOLDER . '/lang' );
205
+ }
206
+ add_action('plugins_loaded', 'gwolle_gb_load_lang');
207
+
208
+
209
+ /*
210
+ * Add number of unchecked entries to admin bar, if > 0.
211
+ */
212
+ function gwolle_gb_admin_bar_menu( $wp_admin_bar ) {
213
+ if ( !current_user_can('moderate_comments') )
214
+ return;
215
+
216
+ // Counter
217
+ $count_unchecked = gwolle_gb_get_entry_count(
218
+ array(
219
+ 'checked' => 'unchecked',
220
+ 'trash' => 'notrash',
221
+ 'spam' => 'nospam'
222
+ )
223
+ );
224
+
225
+ $count_unchecked_i18n = number_format_i18n( $count_unchecked );
226
+ $awaiting_text = esc_attr( sprintf( /* translators: Toolbar */ _n(
227
+ '%s guestbook entry awaiting moderation',
228
+ '%s guestbook entries awaiting moderation',
229
+ $count_unchecked_i18n,
230
+ 'gwolle-gb' ),
231
+ $count_unchecked_i18n ) );
232
+
233
+ if ( $count_unchecked > 0 ) {
234
+ $icon = '<span class="ab-icon"></span>';
235
+ $title = '<span id="ab-unchecked-entries" class="ab-label awaiting-mod pending-count count-' . $count_unchecked . '" aria-hidden="true">' . $count_unchecked_i18n . '</span>';
236
+ $title .= '<span class="screen-reader-text">' . $awaiting_text . '</span>';
237
+
238
+ $wp_admin_bar->add_menu( array(
239
+ 'id' => 'gwolle-gb',
240
+ 'title' => $icon . $title,
241
+ 'href' => admin_url('admin.php?page=' . GWOLLE_GB_FOLDER . '/entries.php&amp;show=unchecked'),
242
+ ) );
243
+ }
244
+ }
245
+ add_action( 'admin_bar_menu', 'gwolle_gb_admin_bar_menu', 61 );
gwolle-gb.php ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
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.3.0
7
+ Author: Marcel Pol
8
+ Author URI: http://zenoweb.nl
9
+ License: GPLv2 or later
10
+ Text Domain: gwolle-gb
11
+ Domain Path: /lang/
12
+ */
13
+
14
+ /*
15
+ Copyright 2009 - 2010 Wolfgang Timme (email: gwolle@wolfgangtimme.de)
16
+ Copyright 2014 - 2017 Marcel Pol (email: marcel@timelord.nl)
17
+
18
+ This program is free software; you can redistribute it and/or modify
19
+ it under the terms of the GNU General Public License as published by
20
+ the Free Software Foundation; either version 2 of the License, or
21
+ (at your option) any later version.
22
+
23
+ This program is distributed in the hope that it will be useful,
24
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26
+ GNU General Public License for more details.
27
+
28
+ You should have received a copy of the GNU General Public License
29
+ along with this program; if not, write to the Free Software
30
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
31
+ */
32
+
33
+
34
+ // Plugin Version
35
+ define('GWOLLE_GB_VER', '2.3.0');
36
+
37
+
38
+ /*
39
+ * Todo for 3.0:
40
+ *
41
+ * - All CSS classes use dashes, not underscores.
42
+ *
43
+ *
44
+ * Todo List:
45
+ *
46
+ * - Entries Admin page, make columns sortable, add order parameters to get* functions.
47
+ * - On Page editor, have a postbox with link to the guestbook admin entries.
48
+ * - BBcode: have sublists work.
49
+ * - On admin pages, have separate functions for $_POST. (editor, entries)
50
+ * - Localize admin ajax script.
51
+ * - When saving new date in editor, change date in postbox too.
52
+ * - Add Filter for get_entry_count SQL, like get_entries.
53
+ * - Add datetime WHERE clause in get_functions? Support filter for the function parameters inside the function?
54
+ *
55
+ * 2.4.0:
56
+ * - Add proper docblocks to filters in the code.
57
+ * - Use GWOLLE_GB_URL where appropriate.
58
+ * - Consider a functions/list-view.php refactoring.
59
+ * - Really switch to InnoDB.
60
+ * - Consider SQL IN when emptying spam/trash.
61
+ *
62
+ */
63
+
64
+
65
+ /*
66
+ * Definitions
67
+ */
68
+ define('GWOLLE_GB_FOLDER', plugin_basename(dirname(__FILE__)));
69
+ define('GWOLLE_GB_DIR', WP_PLUGIN_DIR . '/' . GWOLLE_GB_FOLDER);
70
+ define('GWOLLE_GB_URL', plugins_url( '/', __FILE__ ));
71
+
72
+
73
+ global $wpdb;
74
+
75
+ // Declare database table names
76
+ $wpdb->gwolle_gb_entries = $wpdb->prefix . 'gwolle_gb_entries';
77
+ $wpdb->gwolle_gb_log = $wpdb->prefix . 'gwolle_gb_log';
78
+
79
+
80
+ // Classes
81
+ include_once( GWOLLE_GB_DIR . '/functions/gb-class-entry.php' );
82
+
83
+ // Functions for the frontend
84
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-ajax-infinite_scroll.php' );
85
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-ajax-captcha.php' );
86
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-form.php' );
87
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-form-ajax.php' );
88
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-form-posthandling.php' );
89
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-shortcode-widget.php' );
90
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-shortcodes.php' );
91
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-pagination.php' );
92
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-read.php' );
93
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-rss.php' );
94
+ include_once( GWOLLE_GB_DIR . '/frontend/gb-widget.php' );
95
+
96
+ // Functions and pages for the backend
97
+ include_once( GWOLLE_GB_DIR . '/admin/gb-ajax-management.php' );
98
+ include_once( GWOLLE_GB_DIR . '/admin/gb-dashboard-widget.php' );
99
+ include_once( GWOLLE_GB_DIR . '/admin/gb-page-editor.php' );
100
+ include_once( GWOLLE_GB_DIR . '/admin/gb-page-entries.php' );
101
+ include_once( GWOLLE_GB_DIR . '/admin/gb-page-export.php' );
102
+ include_once( GWOLLE_GB_DIR . '/admin/gb-page-gwolle-gb.php' );
103
+ include_once( GWOLLE_GB_DIR . '/admin/gb-page-import.php' );
104
+ include_once( GWOLLE_GB_DIR . '/admin/gb-page-settings.php' );
105
+ include_once( GWOLLE_GB_DIR . '/admin/gb-pagination.php' );
106
+ include_once( GWOLLE_GB_DIR . '/admin/gb-upgrade.php' );
107
+
108
+ // Tabs for gb-page-settings.php
109
+ include_once( GWOLLE_GB_DIR . '/admin/tabs/gb-formtab.php' );
110
+ include_once( GWOLLE_GB_DIR . '/admin/tabs/gb-readingtab.php' );
111
+ include_once( GWOLLE_GB_DIR . '/admin/tabs/gb-admintab.php' );
112
+ include_once( GWOLLE_GB_DIR . '/admin/tabs/gb-antispamtab.php' );
113
+ include_once( GWOLLE_GB_DIR . '/admin/tabs/gb-emailtab.php' );
114
+ include_once( GWOLLE_GB_DIR . '/admin/tabs/gb-debugtab.php' );
115
+ include_once( GWOLLE_GB_DIR . '/admin/tabs/gb-uninstalltab.php' );
116
+
117
+ // General Functions
118
+ include_once( GWOLLE_GB_DIR . '/functions/gb-akismet.php' );
119
+ include_once( GWOLLE_GB_DIR . '/functions/gb-bbcode_emoji.php' );
120
+ include_once( GWOLLE_GB_DIR . '/functions/gb-cache.php' );
121
+ include_once( GWOLLE_GB_DIR . '/functions/gb-debug.php' );
122
+ include_once( GWOLLE_GB_DIR . '/functions/gb-formatting.php' );
123
+ include_once( GWOLLE_GB_DIR . '/functions/gb-get_entries.php' );
124
+ include_once( GWOLLE_GB_DIR . '/functions/gb-get_entry_count.php' );
125
+ include_once( GWOLLE_GB_DIR . '/functions/gb-log.php' );
126
+ include_once( GWOLLE_GB_DIR . '/functions/gb-mail.php' );
127
+ include_once( GWOLLE_GB_DIR . '/functions/gb-messages.php' );
128
+ include_once( GWOLLE_GB_DIR . '/functions/gb-metabox.php' );
129
+ include_once( GWOLLE_GB_DIR . '/functions/gb-misc.php' );
130
+ include_once( GWOLLE_GB_DIR . '/functions/gb-post-meta.php' );
131
+ include_once( GWOLLE_GB_DIR . '/functions/gb-settings.php' );
132
+ include_once( GWOLLE_GB_DIR . '/functions/gb-shortcake.php' );
133
+ include_once( GWOLLE_GB_DIR . '/functions/gb-single-view.php' );
134
+ include_once( GWOLLE_GB_DIR . '/functions/gb-stop-forum-spam.php' );
135
+ include_once( GWOLLE_GB_DIR . '/functions/gb-user.php' );
136
+
137
+ // General Hooks
138
+ include_once( GWOLLE_GB_DIR . '/gwolle-gb-hooks.php' );
139
+
140
+
141
+ /*
142
+ * Trigger an install/upgrade function when the plugin is activated.
143
+ */
144
+ function gwolle_gb_activation( $networkwide ) {
145
+ global $wpdb;
146
+
147
+ $current_version = get_option( 'gwolle_gb_version' );
148
+
149
+ if ( function_exists('is_multisite') && is_multisite() ) {
150
+ $blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
151
+ foreach ($blogids as $blog_id) {
152
+ switch_to_blog($blog_id);
153
+ if ( $current_version == false ) {
154
+ gwolle_gb_install();
155
+ } elseif ($current_version != GWOLLE_GB_VER) {
156
+ gwolle_gb_upgrade();
157
+ }
158
+ restore_current_blog();
159
+ }
160
+ } else {
161
+ if ( $current_version == false ) {
162
+ gwolle_gb_install();
163
+ } elseif ($current_version != GWOLLE_GB_VER) {
164
+ gwolle_gb_upgrade();
165
+ }
166
+ }
167
+ }
168
+ register_activation_hook(__FILE__, 'gwolle_gb_activation');
index.html ADDED
File without changes
lang/gwolle-gb-bg_BG.mo ADDED
Binary file
lang/gwolle-gb-bg_BG.po ADDED
@@ -0,0 +1,2017 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Gwolle Guestbook\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-06-13 14:55+0200\n"
6
+ "PO-Revision-Date: 2015-06-13 14:56+0100\n"
7
+ "Last-Translator: Marcel Pol <marcel@timelord.nl>\n"
8
+ "Language-Team: bg <bg.example.com>\n"
9
+ "Language: bg_BG\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 1.7.7\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
18
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
19
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
20
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
23
+
24
+ #: actions.php:35 actions.php:36 frontend/widget.php:22
25
+ #: frontend/widget.php:188
26
+ msgid "Guestbook"
27
+ msgstr "Книга за гости"
28
+
29
+ #: actions.php:46 actions.php:47 admin/tabs/admintab.php:36
30
+ #: admin/tabs/readingtab.php:36
31
+ msgid "Entries"
32
+ msgstr "Записи"
33
+
34
+ #. /editor.php
35
+ #: actions.php:54
36
+ msgid "Entry editor"
37
+ msgstr "Редактиране на записи"
38
+
39
+ #: actions.php:54 admin/page-gwolle-gb.php:85
40
+ msgid "New entry"
41
+ msgstr "Нов запис"
42
+
43
+ #. /settings.php
44
+ #: actions.php:57 actions.php:80 admin/page-settings.php:314
45
+ msgid "Settings"
46
+ msgstr "Настройки"
47
+
48
+ #. /import.php
49
+ #: actions.php:60
50
+ msgid "Import"
51
+ msgstr "Импортиране"
52
+
53
+ #. /export.php
54
+ #: actions.php:63
55
+ msgid "Export"
56
+ msgstr "Експортиране"
57
+
58
+ #: actions.php:190 actions.php:194 frontend/rss.php:70 frontend/rss.php:73
59
+ #, fuzzy
60
+ msgid "Guestbook Feed"
61
+ msgstr "Книга за гости"
62
+
63
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:696
64
+ #: frontend/read.php:236
65
+ msgid "Edit entry"
66
+ msgstr "Редактиране на запис"
67
+
68
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:696
69
+ #: frontend/read.php:236
70
+ msgid "Edit"
71
+ msgstr "Редактиране"
72
+
73
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:425
74
+ #: admin/page-entries.php:699
75
+ msgid "Check entry"
76
+ msgstr "Селектиране на запис"
77
+
78
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:425
79
+ #: admin/page-entries.php:699
80
+ msgid "Check"
81
+ msgstr "Проверено"
82
+
83
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:428
84
+ #: admin/page-entries.php:702
85
+ msgid "Uncheck entry"
86
+ msgstr "Деселектиране на запис"
87
+
88
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:428
89
+ #: admin/page-entries.php:702
90
+ msgid "Uncheck"
91
+ msgstr "Не проверено"
92
+
93
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:431
94
+ #: admin/page-entries.php:705
95
+ msgid "Mark entry as spam."
96
+ msgstr "Маркирай като спам"
97
+
98
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:374
99
+ #: admin/page-editor.php:431 admin/page-entries.php:437
100
+ #: admin/page-entries.php:705
101
+ msgid "Spam"
102
+ msgstr "Спам"
103
+
104
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:434
105
+ #: admin/page-entries.php:708
106
+ msgid "Mark entry as not-spam."
107
+ msgstr "Отбрлязване, че записът не е спам"
108
+
109
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:434
110
+ #: admin/page-entries.php:708
111
+ msgid "Not spam"
112
+ msgstr "Не е спам"
113
+
114
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:437
115
+ #: admin/page-entries.php:711
116
+ msgid "Move entry to trash."
117
+ msgstr "Преместване на записа в кошчето ."
118
+
119
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:384
120
+ #: admin/page-editor.php:437 admin/page-entries.php:441
121
+ #: admin/page-entries.php:711
122
+ msgid "Trash"
123
+ msgstr "Кошче"
124
+
125
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:440
126
+ #: admin/page-entries.php:714
127
+ msgid "Recover entry from trash."
128
+ msgstr "Възстановяване от кошчето."
129
+
130
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:440
131
+ #: admin/page-entries.php:714
132
+ msgid "Untrash"
133
+ msgstr "Възстановяване от кошчето."
134
+
135
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:443
136
+ #: admin/page-entries.php:717
137
+ msgid "Please wait..."
138
+ msgstr "Моля, изчакайте..."
139
+
140
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:443
141
+ #: admin/page-entries.php:717
142
+ msgid "Wait..."
143
+ msgstr "Изчакайте..."
144
+
145
+ #: admin/dashboard-widget.php:155
146
+ msgid "Refresh"
147
+ msgstr "Обновяване"
148
+
149
+ #: admin/dashboard-widget.php:156
150
+ msgid "View all"
151
+ msgstr "Показване на всички"
152
+
153
+ #: admin/dashboard-widget.php:157
154
+ msgid "View new"
155
+ msgstr "Показване на нови"
156
+
157
+ #: admin/dashboard-widget.php:160
158
+ msgid "No new and unchecked guestbook entries."
159
+ msgstr "Няма нови и не проверени записи"
160
+
161
+ #: admin/dashboard-widget.php:172
162
+ msgid "Guestbook (new entries)"
163
+ msgstr "Книга за гости (нови записи)"
164
+
165
+ #: admin/installSplash.php:14
166
+ msgid "Installation"
167
+ msgstr "Инсталиране"
168
+
169
+ #: admin/installSplash.php:20
170
+ msgid ""
171
+ "Welcome!<br>It seems that either you're using this plugin for the first time "
172
+ "or you've deleted all settings.<br>However, to use this plugin we have to "
173
+ "setup the database tables. Good for you, we've made this as easy as possible."
174
+ "<br>All you've got to do is click on that button below, and that's it."
175
+ msgstr ""
176
+ "Здравейте!<br>изглежда използвате това разширение за първи път или сте "
177
+ "изтрили всички настройки.<br>За да изпозлвате това разширение трябва да "
178
+ "подготвите базата данни. За щастие, сме направили това възможно най- лесно "
179
+ "<br>Всичко, което трябва да направите е да кликнете на бутона, който виждате "
180
+ "долу "
181
+
182
+ #: admin/installSplash.php:26
183
+ msgid "Sure, let's do this!"
184
+ msgstr "Да, да пордъжлим!"
185
+
186
+ #: admin/installSplash.php:33
187
+ #, php-format
188
+ msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
189
+ msgstr ""
190
+ "Добре, всичко е готово <a href=\"%s\">Натиснете тук, за да продължите...</a>"
191
+
192
+ #: admin/installSplash.php:35
193
+ #, php-format
194
+ msgid ""
195
+ "It looks like there has been an error. <a href=\"%s\">Click here to "
196
+ "continue...</a>"
197
+ msgstr ""
198
+ "Изглежда е изникнала грешка.<a href=\"%s\">Натиснете тук, за да продължите..."
199
+ "</a>"
200
+
201
+ #: admin/page-editor.php:15 admin/page-entries.php:16 admin/page-export.php:17
202
+ #: admin/page-gwolle-gb.php:278 admin/page-import.php:26
203
+ #: admin/page-settings.php:15 admin/tabs/admintab.php:15
204
+ #: admin/tabs/antispamtab.php:15 admin/tabs/emailtab.php:15
205
+ #: admin/tabs/formtab.php:15 admin/tabs/readingtab.php:15
206
+ #: admin/tabs/uninstalltab.php:18
207
+ msgid "Cheatin&#8217; uh?"
208
+ msgstr "Мамите, а?!"
209
+
210
+ #: admin/page-editor.php:32
211
+ msgid "Edit guestbook entry"
212
+ msgstr "Редактиране на запис в книгата за гости"
213
+
214
+ #: admin/page-editor.php:45
215
+ msgid "Entry could not be found."
216
+ msgstr "Записът не може да бъде намерен."
217
+
218
+ #: admin/page-editor.php:47
219
+ msgid "Guestbook entry (error)"
220
+ msgstr "Запис в книгата за гости (грешка)"
221
+
222
+ #: admin/page-editor.php:50
223
+ msgid "New guestbook entry"
224
+ msgstr "Нов запис в книгата за гости"
225
+
226
+ #: admin/page-editor.php:60
227
+ msgid "Something strange happened."
228
+ msgstr "Случило се е нещо странно."
229
+
230
+ #: admin/page-editor.php:88
231
+ msgid "Submitted as Spam to the Akismet service."
232
+ msgstr "Отправано като спам към Akismet."
233
+
234
+ #: admin/page-editor.php:97
235
+ msgid "Submitted as Ham to the Akismet service."
236
+ msgstr "Отправено като НЕ спам към Akismet."
237
+
238
+ #: admin/page-editor.php:148 admin/page-gwolle-gb.php:355
239
+ #: admin/page-settings.php:320
240
+ msgid "Changes saved."
241
+ msgstr "Промените са запазени."
242
+
243
+ #: admin/page-editor.php:150 admin/page-editor.php:245
244
+ msgid "Error happened during saving."
245
+ msgstr "Имаше грешка при записването."
246
+
247
+ #: admin/page-editor.php:154
248
+ msgid "Entry was not changed."
249
+ msgstr "Записът не е променян."
250
+
251
+ #: admin/page-editor.php:165
252
+ msgid "Entry removed."
253
+ msgstr "Записът е премахнат."
254
+
255
+ #: admin/page-editor.php:210
256
+ msgid "Entry has no content, even though that is mandatory."
257
+ msgstr "В записа няма съдържание, въпреки че е задължително."
258
+
259
+ #: admin/page-editor.php:243
260
+ msgid "Entry saved."
261
+ msgstr "Записът е записан."
262
+
263
+ #: admin/page-editor.php:249
264
+ msgid "Entry was not saved."
265
+ msgstr "Записът не е записан."
266
+
267
+ #: admin/page-editor.php:322 admin/page-editor.php:415
268
+ #: admin/page-editor.php:459 admin/page-editor.php:514
269
+ #: admin/page-editor.php:549 admin/page-editor.php:566
270
+ #: admin/page-editor.php:574 admin/page-export.php:40
271
+ #: admin/page-import.php:338 admin/page-import.php:405
272
+ #: admin/page-import.php:526
273
+ msgid "Click to open or close"
274
+ msgstr "Натиснете тук за отваряне или затваряне."
275
+
276
+ #: admin/page-editor.php:322
277
+ msgid "Options"
278
+ msgstr "Опции"
279
+
280
+ #: admin/page-editor.php:343
281
+ msgid "This entry is not yet visible."
282
+ msgstr "Записът, все още не е видим."
283
+
284
+ #: admin/page-editor.php:347 admin/page-editor.php:352
285
+ msgid "This entry is Visible."
286
+ msgstr "Записът е видим."
287
+
288
+ #: admin/page-editor.php:348 admin/page-editor.php:353
289
+ msgid "This entry is Not Visible."
290
+ msgstr "Записът не е видим."
291
+
292
+ #: admin/page-editor.php:364
293
+ msgid "Checked"
294
+ msgstr "Проверено"
295
+
296
+ #: admin/page-editor.php:392
297
+ msgid "Remove this entry Permanently."
298
+ msgstr "Изтриите този запис за винаги."
299
+
300
+ #: admin/page-editor.php:403
301
+ msgid "Save"
302
+ msgstr "Запазване"
303
+
304
+ #: admin/page-editor.php:415
305
+ msgid "Actions"
306
+ msgstr "Действия"
307
+
308
+ #: admin/page-editor.php:459
309
+ msgid "Details"
310
+ msgstr "Подробности"
311
+
312
+ #: admin/page-editor.php:463 admin/page-entries.php:567
313
+ #: admin/page-entries.php:583
314
+ msgid "Author"
315
+ msgstr "Автор"
316
+
317
+ #: admin/page-editor.php:467 admin/page-editor.php:475
318
+ #: admin/page-editor.php:496 admin/page-editor.php:504
319
+ #: functions/function.log.php:164
320
+ msgid "Unknown"
321
+ msgstr "Неизвестен"
322
+
323
+ #: admin/page-editor.php:471
324
+ msgid "E-Mail"
325
+ msgstr "E-mail"
326
+
327
+ #: admin/page-editor.php:480 admin/page-editor.php:524
328
+ msgid "Written"
329
+ msgstr "Написано"
330
+
331
+ #: admin/page-editor.php:485
332
+ msgid "Not yet"
333
+ msgstr "Все още"
334
+
335
+ #: admin/page-editor.php:489
336
+ msgid "Author's IP-address"
337
+ msgstr "IP-адрес на автора"
338
+
339
+ #: admin/page-editor.php:492
340
+ msgid "Whois search for this IP"
341
+ msgstr "Whois търсене по IP"
342
+
343
+ #: admin/page-editor.php:500
344
+ msgid "Host"
345
+ msgstr "Хост"
346
+
347
+ #: admin/page-editor.php:514
348
+ msgid "Entry log"
349
+ msgstr "История на записи"
350
+
351
+ #: admin/page-editor.php:533
352
+ msgid "No log yet."
353
+ msgstr "Все още няма история."
354
+
355
+ #: admin/page-editor.php:549 frontend/write.php:215
356
+ msgid "Guestbook entry"
357
+ msgstr "Съобщение в книгата за гости"
358
+
359
+ #: admin/page-editor.php:554
360
+ #, php-format
361
+ msgid ""
362
+ "Line breaks will not be visible to the visitors due to your <a href=\"%s"
363
+ "\">settings</a>."
364
+ msgstr "Нови редове няма да бъдат видими заради <a href=\"%s\">настройка</a>."
365
+
366
+ #: admin/page-editor.php:566 frontend/write.php:196 frontend/write.php:203
367
+ #: admin/tabs/formtab.php:165
368
+ msgid "Website"
369
+ msgstr "Уеб-сайт"
370
+
371
+ #: admin/page-editor.php:569
372
+ msgid "Example: <code>http://www.example.com/</code>"
373
+ msgstr "Пример: <code>http://www.example.com/</code>"
374
+
375
+ #: admin/page-editor.php:574 admin/page-export.php:61
376
+ msgid "Origin"
377
+ msgstr "От къде съм"
378
+
379
+ #: admin/page-entries.php:209
380
+ msgid "entry checked."
381
+ msgstr "записът е избран."
382
+
383
+ #: admin/page-entries.php:211
384
+ msgid "entries checked."
385
+ msgstr "записите са избрани."
386
+
387
+ #: admin/page-entries.php:213
388
+ msgid "No entries checked."
389
+ msgstr "Няма избрани записи."
390
+
391
+ #: admin/page-entries.php:217
392
+ msgid "entry unchecked."
393
+ msgstr "записът е деселектиран."
394
+
395
+ #: admin/page-entries.php:219
396
+ msgid "entries unchecked."
397
+ msgstr "записите е деселектирани."
398
+
399
+ #: admin/page-entries.php:221
400
+ msgid "No entries unchecked."
401
+ msgstr "Няма деселектирани записи."
402
+
403
+ #: admin/page-entries.php:225
404
+ msgid ""
405
+ "entry marked as spam and submitted to Akismet as spam (if Akismet was "
406
+ "enabled)."
407
+ msgstr ""
408
+ "записът е маркиран като спам и изпратен като спам на Akismet (ако Akismet е "
409
+ "активен)."
410
+
411
+ #: admin/page-entries.php:227
412
+ msgid ""
413
+ "entries marked as spam and submitted to Akismet as spam (if Akismet was "
414
+ "enabled)."
415
+ msgstr ""
416
+ "записите са маркирани като спам и изпратени като спам на Akismet (ако "
417
+ "Akismet е активен)."
418
+
419
+ #: admin/page-entries.php:229
420
+ msgid "No entries marked as spam."
421
+ msgstr "Няма записи маркирани като спам."
422
+
423
+ #: admin/page-entries.php:233
424
+ msgid ""
425
+ "entry marked as not spam and submitted to Akismet as ham (if Akismet was "
426
+ "enabled)."
427
+ msgstr ""
428
+ "записът е маркиран като НЕ спам и изпратен на Akismet (ако Akismet е активен."
429
+
430
+ #: admin/page-entries.php:235
431
+ msgid ""
432
+ "entries marked as not spam and submitted to Akismet as ham (if Akismet was "
433
+ "enabled)."
434
+ msgstr ""
435
+ "записите са маркирани като НЕ спам и изпратен на Akismet (ако Akismet е "
436
+ "активен)."
437
+
438
+ #: admin/page-entries.php:237
439
+ msgid "No entries marked as not spam."
440
+ msgstr "Няма записи маркирани като спам."
441
+
442
+ #: admin/page-entries.php:241
443
+ msgid "entry considered spam and marked as such."
444
+ msgstr "няма записи заподозрени и маркирани като спам."
445
+
446
+ #: admin/page-entries.php:243
447
+ msgid "entries considered spam and marked as such."
448
+ msgstr "записите са заподозрени и маркирани като спам."
449
+
450
+ #: admin/page-entries.php:246
451
+ msgid "entry not considered spam and marked as such."
452
+ msgstr "записът не е заподозрян и маркиран като спам."
453
+
454
+ #: admin/page-entries.php:248
455
+ msgid "entries not considered spam and marked as such."
456
+ msgstr "записите не са заподозрени и маркирани като спам."
457
+
458
+ #: admin/page-entries.php:251
459
+ msgid "entry already considered spam and not changed."
460
+ msgstr "записът е вече заподозрян за спам и не е променен."
461
+
462
+ #: admin/page-entries.php:253
463
+ msgid "entries already considered spam and not changed."
464
+ msgstr "записите са вече заподозряни за спам и не са променени."
465
+
466
+ #: admin/page-entries.php:256
467
+ msgid "entry already considered not spam and not changed."
468
+ msgstr "записът вече е заподозрян за НЕ спам и не е бил променян."
469
+
470
+ #: admin/page-entries.php:258
471
+ msgid "entries already considered not spam and not changed."
472
+ msgstr "записите са вече заподозрени за НЕ спам и не са променени."
473
+
474
+ #: admin/page-entries.php:262
475
+ msgid "entry moved to trash."
476
+ msgstr "записът е преместен в кошчето."
477
+
478
+ #: admin/page-entries.php:264
479
+ msgid "entries moved to trash."
480
+ msgstr "записите са преместени в кошчето."
481
+
482
+ #: admin/page-entries.php:266
483
+ msgid "No entries moved to trash."
484
+ msgstr "Няма записи в кошчето."
485
+
486
+ #: admin/page-entries.php:270
487
+ msgid "entry recovered from trash."
488
+ msgstr "записът е възстановен от кошчето."
489
+
490
+ #: admin/page-entries.php:272
491
+ msgid "entries recovered from trash."
492
+ msgstr "записите са възстановени от кошчето."
493
+
494
+ #: admin/page-entries.php:274
495
+ msgid "No entries recovered from trash."
496
+ msgstr "Няма записи възстановени от кошчето."
497
+
498
+ #: admin/page-entries.php:278 admin/page-entries.php:293
499
+ msgid "entry removed permanently."
500
+ msgstr "записът е премахнат завинаги."
501
+
502
+ #: admin/page-entries.php:280 admin/page-entries.php:295
503
+ msgid "entries removed permanently."
504
+ msgstr "записите са премахнати завинаги."
505
+
506
+ #: admin/page-entries.php:282 admin/page-entries.php:297
507
+ msgid "No entries permanently removed."
508
+ msgstr "Няма записи, премахнати завинаги."
509
+
510
+ #: admin/page-entries.php:329
511
+ msgid "Please activate Akismet if you want to battle spam."
512
+ msgstr "Моля, активирайте Akismet ако искате да се борите срещу спама."
513
+
514
+ #: admin/page-entries.php:402
515
+ msgid "Guestbook entries"
516
+ msgstr "Записи в книгата за гости"
517
+
518
+ #: admin/page-entries.php:424
519
+ msgid "All"
520
+ msgstr "Всички"
521
+
522
+ #: admin/page-entries.php:429
523
+ msgid "Unlocked"
524
+ msgstr "Разблокирано"
525
+
526
+ #: admin/page-entries.php:433
527
+ msgid "New"
528
+ msgstr "Нов"
529
+
530
+ #: admin/page-entries.php:448
531
+ msgid "Mass edit actions"
532
+ msgstr "Действия за масово редактиране"
533
+
534
+ #: admin/page-entries.php:451
535
+ msgid "Recover from trash"
536
+ msgstr "Възстановяване от кошчето"
537
+
538
+ #: admin/page-entries.php:452 admin/page-entries.php:469
539
+ msgid "Remove permanently"
540
+ msgstr "Премахване завинаги"
541
+
542
+ #: admin/page-entries.php:455
543
+ msgid "Mark as checked"
544
+ msgstr "Маркирано като проверено"
545
+
546
+ #: admin/page-entries.php:458
547
+ msgid "Mark as not checked"
548
+ msgstr "Маркиране като непроверено"
549
+
550
+ #: admin/page-entries.php:461
551
+ msgid "Mark as spam"
552
+ msgstr "Маркирано като спам"
553
+
554
+ #: admin/page-entries.php:463
555
+ msgid "Mark as not spam"
556
+ msgstr "Маркирано като НЕ спам"
557
+
558
+ #: admin/page-entries.php:465
559
+ msgid "Check with Akismet"
560
+ msgstr "Проверка с Akismet"
561
+
562
+ #: admin/page-entries.php:467
563
+ msgid "Move to trash"
564
+ msgstr "Преместване в кошчето"
565
+
566
+ #: admin/page-entries.php:474
567
+ msgid "Apply"
568
+ msgstr "Приложи"
569
+
570
+ #: admin/page-entries.php:477 admin/page-entries.php:735
571
+ #, fuzzy
572
+ msgid "Empty Spam"
573
+ msgstr "Spam leegmaken"
574
+
575
+ #: admin/page-entries.php:479 admin/page-entries.php:737
576
+ #, fuzzy
577
+ msgid "Empty Trash"
578
+ msgstr "Prullenbak leegmaken"
579
+
580
+ #: admin/page-entries.php:492
581
+ msgid "Showing:"
582
+ msgstr "Показано:"
583
+
584
+ #: admin/page-entries.php:493
585
+ msgid "of"
586
+ msgstr "от"
587
+
588
+ #: admin/page-entries.php:560 admin/page-entries.php:576
589
+ msgid "ID"
590
+ msgstr "ID"
591
+
592
+ #: admin/page-entries.php:566 admin/page-entries.php:582
593
+ #: admin/tabs/readingtab.php:189
594
+ msgid "Date"
595
+ msgstr "Дата"
596
+
597
+ #: admin/page-entries.php:568 admin/page-entries.php:584
598
+ msgid "Entry (excerpt)"
599
+ msgstr "Запис (откъс)"
600
+
601
+ #: admin/page-entries.php:569 admin/page-entries.php:585
602
+ msgid "Action"
603
+ msgstr "Действие"
604
+
605
+ #: admin/page-entries.php:598
606
+ msgid "No entries found."
607
+ msgstr "Няма намерени записи."
608
+
609
+ #: admin/page-export.php:27
610
+ msgid "Export guestbook entries."
611
+ msgstr "Експортиране на записите от книгата за гости."
612
+
613
+ #: admin/page-export.php:40
614
+ msgid "Export guestbook entries from Gwolle-GB"
615
+ msgstr "Експортиране на записите от Gwolle-GB"
616
+
617
+ #: admin/page-export.php:47
618
+ #, fuzzy
619
+ msgid "No entries were found."
620
+ msgstr "%d брой записи намерени ще бъдат експортирани."
621
+
622
+ #: admin/page-export.php:52
623
+ #, php-format
624
+ msgid "%d entries were found and will be exported."
625
+ msgstr "%d брой записи намерени ще бъдат експортирани."
626
+
627
+ #: admin/page-export.php:55
628
+ msgid "The exporter will preserve the following data per entry:"
629
+ msgstr "При експортване ще се запазят следните данни за записите:"
630
+
631
+ #: admin/page-export.php:58 admin/page-import.php:372
632
+ #: admin/page-import.php:413 frontend/write.php:139 frontend/write.php:146
633
+ #: admin/tabs/formtab.php:105 admin/tabs/readingtab.php:152
634
+ msgid "Name"
635
+ msgstr "Име"
636
+
637
+ #: admin/page-export.php:59 admin/page-import.php:373
638
+ #: admin/page-import.php:415
639
+ msgid "E-Mail address"
640
+ msgstr "Е-mail адрес"
641
+
642
+ #: admin/page-export.php:60 admin/page-import.php:374
643
+ #: admin/page-import.php:416
644
+ msgid "URL/Website"
645
+ msgstr "URL/Уеб-сайт"
646
+
647
+ #: admin/page-export.php:62 admin/page-import.php:375
648
+ #: admin/page-import.php:417
649
+ msgid "Date of the entry"
650
+ msgstr "Дата на записа"
651
+
652
+ #: admin/page-export.php:63 admin/page-import.php:376
653
+ #: admin/page-import.php:418
654
+ msgid "IP address"
655
+ msgstr "IP-адрес"
656
+
657
+ #: admin/page-export.php:64
658
+ msgid "Host address"
659
+ msgstr "Адрес на хоста"
660
+
661
+ #: admin/page-export.php:65 admin/page-import.php:377
662
+ #: admin/page-import.php:419 admin/tabs/formtab.php:185
663
+ #: admin/tabs/uninstalltab.php:31
664
+ msgid "Message"
665
+ msgstr "Текст на сообщение"
666
+
667
+ #: admin/page-export.php:66 admin/page-import.php:379
668
+ msgid "\"is checked\" flag"
669
+ msgstr "флаг «проверено»"
670
+
671
+ #: admin/page-export.php:67 admin/page-import.php:378
672
+ msgid "\"is spam\" flag"
673
+ msgstr "флаг «спам»"
674
+
675
+ #: admin/page-export.php:68
676
+ msgid "\"is trash\" flag"
677
+ msgstr "флаг «в кошче"
678
+
679
+ #: admin/page-export.php:70
680
+ msgid "The exporter does not delete any data, so your data will still be here."
681
+ msgstr ""
682
+ "При експортирането няма да се изтрие нищо, така че данните Ви ще са все още "
683
+ "тук."
684
+
685
+ #: admin/page-export.php:75
686
+ msgid "Export all entries from this website."
687
+ msgstr "Експортиране на всички записи от този уеб-сайт."
688
+
689
+ #: admin/page-export.php:79
690
+ msgid "Start export"
691
+ msgstr "Започни експорт"
692
+
693
+ #: admin/page-gwolle-gb.php:34
694
+ msgid "Overview"
695
+ msgstr "Общи сведения"
696
+
697
+ #: admin/page-gwolle-gb.php:48
698
+ msgid "Entry total"
699
+ msgstr "Брой записи"
700
+
701
+ #: admin/page-gwolle-gb.php:51
702
+ msgid "Entries total"
703
+ msgstr "Брой записи"
704
+
705
+ #: admin/page-gwolle-gb.php:67
706
+ msgid "Unlocked entry"
707
+ msgstr "Разблокиран запис"
708
+
709
+ #: admin/page-gwolle-gb.php:69
710
+ msgid "Unlocked entries"
711
+ msgstr "Разблокирани записи"
712
+
713
+ #: admin/page-gwolle-gb.php:87
714
+ msgid "New entries"
715
+ msgstr "Нови записи"
716
+
717
+ #: admin/page-gwolle-gb.php:103
718
+ msgid "Spam entry"
719
+ msgstr "Запис спам"
720
+
721
+ #: admin/page-gwolle-gb.php:105
722
+ msgid "Spam entries"
723
+ msgstr "Записи спам"
724
+
725
+ #: admin/page-gwolle-gb.php:121
726
+ msgid "Trashed entry"
727
+ msgstr "Запис в кошчето"
728
+
729
+ #: admin/page-gwolle-gb.php:123
730
+ msgid "Trashed entries"
731
+ msgstr "Записи в кошчето"
732
+
733
+ #: admin/page-gwolle-gb.php:136
734
+ msgid "Write admin entry"
735
+ msgstr "Въвеждане на администраторски запис"
736
+
737
+ #: admin/page-gwolle-gb.php:147 admin/tabs/emailtab.php:47
738
+ msgid ""
739
+ "Sorry, but the function <code>mail()</code> required to notify you by mail "
740
+ "is not enabled in your PHP configuration. You might want to install a "
741
+ "WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can "
742
+ "contact your hosting provider to change this."
743
+ msgstr ""
744
+ "Съжаляваме, но функцията <code>mail()</code>, е необходима за известия по "
745
+ "имейл, не е активна във Вашата PHP конфигурация. Може би искате да я "
746
+ "инсталирате WordPress разширение, което използва SMTP, а не <code>mail()</"
747
+ "code>. Или може да се свържете с вашият хостинг провайдър за промяна на PHP "
748
+ "конфигурацията."
749
+
750
+ #: admin/page-gwolle-gb.php:173
751
+ msgid "Send me an e-mail when a new entry has been posted."
752
+ msgstr "Изпрати ми имйел, когато е публикуван нов запис."
753
+
754
+ #: admin/page-gwolle-gb.php:175
755
+ msgid "Save setting"
756
+ msgstr "Запазване на настройката"
757
+
758
+ #: admin/page-gwolle-gb.php:180
759
+ msgid "The following users have subscribed to this service:"
760
+ msgstr "Следните потребители са се абонирали за тази услуга:"
761
+
762
+ #: admin/page-gwolle-gb.php:192 functions/function.log.php:173
763
+ #: admin/tabs/emailtab.php:66 admin/tabs/emailtab.php:119
764
+ msgid "You"
765
+ msgstr "Вие"
766
+
767
+ #: admin/page-gwolle-gb.php:201
768
+ msgid "No subscriber yet"
769
+ msgstr "Все още няма абонирани"
770
+
771
+ #: admin/page-gwolle-gb.php:221
772
+ msgid "This is how you can get your guestbook displayed on your website:"
773
+ msgstr "Така можете да покажете книгата за гости в уеб-сайта си:"
774
+
775
+ #: admin/page-gwolle-gb.php:223
776
+ msgid "Create a new page."
777
+ msgstr "Създаване на нова страница."
778
+
779
+ #: admin/page-gwolle-gb.php:224
780
+ msgid ""
781
+ "Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the "
782
+ "content."
783
+ msgstr "Изберете име и задайте като текст «[gwolle_gb]» (без кавичките)."
784
+
785
+ #: admin/page-gwolle-gb.php:225
786
+ msgid ""
787
+ "It is probably a good idea to disable comments on that page; otherwise, your "
788
+ "visitors might get a little confused."
789
+ msgstr ""
790
+ "Най- вероятно е добра идея да изкючите коментарите на тази страница. В "
791
+ "противен случай, потребителите Ви може да се объркат...малко."
792
+
793
+ #: admin/page-gwolle-gb.php:232
794
+ msgid "These entries will be visible for your visitors:"
795
+ msgstr "Тези записи ще бъдат видими за вашите потребители:"
796
+
797
+ #: admin/page-gwolle-gb.php:234
798
+ msgid "Marked as Checked."
799
+ msgstr "Маркирано като Проверено."
800
+
801
+ #: admin/page-gwolle-gb.php:235
802
+ msgid "Not marked as Spam."
803
+ msgstr "Не е маркирано като спам."
804
+
805
+ #: admin/page-gwolle-gb.php:236
806
+ msgid "Not marked as Trash."
807
+ msgstr "Не е маркирано като местено в коша."
808
+
809
+ #: admin/page-gwolle-gb.php:240
810
+ msgid "The Main Menu counter counts the following entries:"
811
+ msgstr "Брояча в главното меню, изброи следния брой записи:"
812
+
813
+ #: admin/page-gwolle-gb.php:242
814
+ msgid "Marked as Unchecked (You might want to moderate them)."
815
+ msgstr "Маркирано като НЕ проверено (възможно е да искате да проверите)."
816
+
817
+ #: admin/page-gwolle-gb.php:243
818
+ msgid "Not marked as Spam (You might want to check them)."
819
+ msgstr "Не е маркирано като спам (възможно е да искате да проверите)."
820
+
821
+ #: admin/page-gwolle-gb.php:244
822
+ msgid "Not marked as Trash (You decide what goes to the trash)."
823
+ msgstr "Не е маркирано като Кошче (Вие решавате какво да се премести там)."
824
+
825
+ #: admin/page-gwolle-gb.php:251
826
+ msgid "This plugin is being maintained by Marcel Pol from"
827
+ msgstr ""
828
+
829
+ #: admin/page-gwolle-gb.php:255
830
+ #, fuzzy
831
+ msgid "Review this plugin."
832
+ msgstr "Разширението е деактивирано."
833
+
834
+ #: admin/page-gwolle-gb.php:256
835
+ msgid "If this plugin has any value to you, then please leave a review at"
836
+ msgstr ""
837
+
838
+ #: admin/page-gwolle-gb.php:257
839
+ msgid "The plugin page at wordpress.org."
840
+ msgstr ""
841
+
842
+ #: admin/page-gwolle-gb.php:258
843
+ msgid "the plugin page at wordpress.org"
844
+ msgstr ""
845
+
846
+ #: admin/page-gwolle-gb.php:261
847
+ msgid "Donate to the EFF."
848
+ msgstr "Дарете на EFF."
849
+
850
+ #: admin/page-gwolle-gb.php:262
851
+ msgid ""
852
+ "The Electronic Frontier Foundation is one of the few organisations that "
853
+ "wants to keep the internet a free place."
854
+ msgstr ""
855
+ "The Electronic Frontier Foundation – е една от малкото организации, които "
856
+ "искат да запазят интеренета свободен. "
857
+
858
+ #: admin/page-gwolle-gb.php:263
859
+ msgid "Please donate to the EFF."
860
+ msgstr "Моля, дарете на EFF."
861
+
862
+ #: admin/page-gwolle-gb.php:265 admin/page-gwolle-gb.php:267
863
+ msgid "Donate to the maintainer."
864
+ msgstr "Дарете на разработчика."
865
+
866
+ #: admin/page-gwolle-gb.php:266
867
+ msgid ""
868
+ "If you rather want to donate to the maintainer of the plugin, you can donate "
869
+ "through PayPal."
870
+ msgstr ""
871
+ "Ако искате да направите дарение на разработчика, може да го направите чрез "
872
+ "PayPal."
873
+
874
+ #: admin/page-gwolle-gb.php:267
875
+ #, fuzzy
876
+ msgid "Donate through"
877
+ msgstr "Дарете чрез PayPal на:"
878
+
879
+ #: admin/page-gwolle-gb.php:267
880
+ msgid "PayPal"
881
+ msgstr ""
882
+
883
+ #: admin/page-gwolle-gb.php:268
884
+ msgid "to"
885
+ msgstr ""
886
+
887
+ #: admin/page-gwolle-gb.php:338
888
+ msgid "Welcome to the Guestbook!"
889
+ msgstr "Добре дошли в книгата за гости!"
890
+
891
+ #: admin/page-gwolle-gb.php:339
892
+ msgid "E-mail Notifications"
893
+ msgstr "Известия по e-mail"
894
+
895
+ #: admin/page-gwolle-gb.php:340
896
+ msgid "Review and Donate"
897
+ msgstr ""
898
+
899
+ #: admin/page-gwolle-gb.php:342 admin/page-gwolle-gb.php:343
900
+ msgid "Help"
901
+ msgstr "Помощ"
902
+
903
+ #: admin/page-gwolle-gb.php:344
904
+ msgid "This plugin uses the following scripts/programs/images:"
905
+ msgstr "Това разширение използва следните скриптове/програми/изображения:"
906
+
907
+ #: admin/page-gwolle-gb.php:349
908
+ msgid "Gwolle Guestbook"
909
+ msgstr "Книга за гости Gwolle"
910
+
911
+ #: admin/page-import.php:90
912
+ msgid ""
913
+ "I'm sorry, but I wasn't able to import entries from DMSGuestbook "
914
+ "successfully."
915
+ msgstr "Съжалявам, но не успях да импортирам записи от DMSGuestbook."
916
+
917
+ #: admin/page-import.php:92
918
+ msgid "1 entry imported successfully from DMSGuestbook."
919
+ msgstr "1 запис импортиран успешно от DMSGuestbook."
920
+
921
+ #: admin/page-import.php:94
922
+ #, php-format
923
+ msgid "%d entries imported successfully from DMSGuestbook."
924
+ msgstr "%d записа импортирани успешно от DMSGuestbook."
925
+
926
+ #: admin/page-import.php:98
927
+ msgid ""
928
+ "<strong>Nothing to import.</strong> The guestbook you've chosen does not "
929
+ "contain any entries."
930
+ msgstr ""
931
+ "<strong>Няма нищо за импортиране.</strong> Няма налични записи от книгата за "
932
+ "гости, която сте избрали."
933
+
934
+ #: admin/page-import.php:103
935
+ msgid "I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook."
936
+ msgstr "Съжалявам, но не успях да намеря MySQL таблици от DMSGuestbook."
937
+
938
+ #: admin/page-import.php:108
939
+ msgid "You haven't chosen a guestbook. Please select one and try again."
940
+ msgstr "Не сте избрали книга за гости. Моля изберете и опитайте пак."
941
+
942
+ #: admin/page-import.php:133 admin/page-import.php:181
943
+ #, fuzzy
944
+ msgid ""
945
+ "You haven't chosen how to import from WordPress comments. Please choose and "
946
+ "try again."
947
+ msgstr "Не сте избрали страница. Моля изберете и опитайте отново."
948
+
949
+ #: admin/page-import.php:168
950
+ msgid ""
951
+ "I'm sorry, but I wasn't able to import comments from that page successfully."
952
+ msgstr "Съжалявам, но не успях да импортирам записи от тази страница."
953
+
954
+ #: admin/page-import.php:170
955
+ msgid "1 entry imported successfully from WordPress comments."
956
+ msgstr "1 запис, успешно импортиран от коментарите на WordPress."
957
+
958
+ #: admin/page-import.php:172
959
+ #, php-format
960
+ msgid "%d entries imported successfully from WordPress comments."
961
+ msgstr "%d записи, успешно импортирани от коментарите на WordPress."
962
+
963
+ #: admin/page-import.php:176
964
+ #, fuzzy
965
+ msgid ""
966
+ "<strong>Nothing to import.</strong> There seem to be no comments on this "
967
+ "page, post or at all."
968
+ msgstr ""
969
+ "<strong>Няма нищо за импортиране.</strong> Избраната от Вас страница няма "
970
+ "комментари."
971
+
972
+ #: admin/page-import.php:195
973
+ msgid "Your filesize is too large."
974
+ msgstr "Размера на избрания файл е прекалено голям."
975
+
976
+ #: admin/page-import.php:216
977
+ msgid "Invalid file format."
978
+ msgstr "Невалиден формат на файла."
979
+
980
+ #: admin/page-import.php:241
981
+ msgid ""
982
+ "It seems your CSV file is from an export that is not compatible with this "
983
+ "version of Gwolle-GB."
984
+ msgstr ""
985
+ "Изглежда, избраният от Вас CSV файл не е съвместим с тази версия на Gwolle-"
986
+ "GB."
987
+
988
+ #: admin/page-import.php:250 admin/page-import.php:284
989
+ msgid "Your data seems to be corrupt. Import failed."
990
+ msgstr "Вашите данни изглеждат невалидни. Импортът прекрати неуспешно"
991
+
992
+ #: admin/page-import.php:293
993
+ msgid "I'm sorry, but I wasn't able to import entries from the CSV file."
994
+ msgstr "Съжалявам, но не успях да импортирам записите от CSV файла."
995
+
996
+ #: admin/page-import.php:295
997
+ msgid "1 entry imported successfully from the CSV file."
998
+ msgstr "1 запис, импортиран усшено от CSV файл."
999
+
1000
+ #: admin/page-import.php:297
1001
+ #, php-format
1002
+ msgid "%d entries imported successfully from the CSV file."
1003
+ msgstr "%d записи, импортирани успешно от CSV файла."
1004
+
1005
+ #: admin/page-import.php:306
1006
+ msgid "Your upload triggered the following error:"
1007
+ msgstr "При ъплоуда се появи следната грешка:"
1008
+
1009
+ #: admin/page-import.php:319
1010
+ msgid "Import guestbook entries."
1011
+ msgstr "Импортиране на записи в базата данни."
1012
+
1013
+ #: admin/page-import.php:338
1014
+ msgid "Import guestbook entries from DMSGuestbook"
1015
+ msgstr "Импортиране на записи от DMSGuestbook"
1016
+
1017
+ #: admin/page-import.php:367
1018
+ #, php-format
1019
+ msgid "%d entries were found and will be imported."
1020
+ msgstr "%d брой записи бяха намерени и ще бъдат импортирани."
1021
+
1022
+ #: admin/page-import.php:370 admin/page-import.php:411
1023
+ msgid "The importer will preserve the following data per entry:"
1024
+ msgstr "При импортирането ще се запазят следните данни за всеки запис:"
1025
+
1026
+ #: admin/page-import.php:381 admin/page-import.php:422
1027
+ msgid ""
1028
+ "However, data such as HTML formatting is not supported by Gwolle-GB and "
1029
+ "<strong>will not</strong> be imported."
1030
+ msgstr ""
1031
+ "Все пак данни от тип HTML не се подържат от Gwolle-GB и и няма да бъдат "
1032
+ "импортирани."
1033
+
1034
+ #: admin/page-import.php:383 admin/page-import.php:426
1035
+ msgid ""
1036
+ "The importer does not delete any data, so you can go back whenever you want."
1037
+ msgstr ""
1038
+ "При импортирането не се трият данни, за това можете да се върнете назад, "
1039
+ "когато поискате."
1040
+
1041
+ #: admin/page-import.php:389
1042
+ msgid "Import all entries from DMSGuestbook."
1043
+ msgstr "Импортиране на всички записи от DMSGuestbook."
1044
+
1045
+ #: admin/page-import.php:393 admin/page-import.php:518
1046
+ #: admin/page-import.php:537
1047
+ msgid "Start import"
1048
+ msgstr "Започване на импортирането"
1049
+
1050
+ #: admin/page-import.php:396
1051
+ msgid "DMSGuestbook was not found."
1052
+ msgstr "DMSGuestbook не беше намерен."
1053
+
1054
+ #: admin/page-import.php:405
1055
+ msgid "Import guestbook entries from WordPress comments"
1056
+ msgstr "Импортиране на коментари от WordPress"
1057
+
1058
+ #: admin/page-import.php:414
1059
+ msgid "User ID"
1060
+ msgstr "ID на потребителя"
1061
+
1062
+ #: admin/page-import.php:420
1063
+ msgid "\"approved\" status"
1064
+ msgstr "статус «одобрено»"
1065
+
1066
+ #: admin/page-import.php:424
1067
+ msgid "Spam comments will not be imported."
1068
+ msgstr ""
1069
+
1070
+ #: admin/page-import.php:429
1071
+ msgid "Select a page to import the comments from:"
1072
+ msgstr "Изберете страница, от която да импортирате коментари ."
1073
+
1074
+ #: admin/page-import.php:431 admin/page-import.php:469
1075
+ msgid "Select"
1076
+ msgstr "Избиране"
1077
+
1078
+ #: admin/page-import.php:455 admin/page-import.php:492
1079
+ msgid " Comments"
1080
+ msgstr " Коментари"
1081
+
1082
+ #: admin/page-import.php:457 admin/page-import.php:494
1083
+ msgid "1 Comment"
1084
+ msgstr "1 Коментар"
1085
+
1086
+ #: admin/page-import.php:467
1087
+ #, fuzzy
1088
+ msgid "Select a post to import the comments from:"
1089
+ msgstr "Изберете страница, от която да импортирате коментари ."
1090
+
1091
+ #: admin/page-import.php:511
1092
+ #, fuzzy
1093
+ msgid "Select where to import the comments from:"
1094
+ msgstr "Изберете страница, от която да импортирате коментари ."
1095
+
1096
+ #: admin/page-import.php:512
1097
+ #, fuzzy
1098
+ msgid "Comments from selected page."
1099
+ msgstr "Selecteer een pagina om reacties van te importeren:"
1100
+
1101
+ #: admin/page-import.php:513
1102
+ msgid "Comments from selected post."
1103
+ msgstr ""
1104
+
1105
+ #: admin/page-import.php:514
1106
+ #, fuzzy
1107
+ msgid "All Comments"
1108
+ msgstr " Коментари"
1109
+
1110
+ #: admin/page-import.php:526
1111
+ msgid "Import guestbook entries from Gwolle-GB"
1112
+ msgstr "Импортиране на записи от Gwolle-GB"
1113
+
1114
+ #: admin/page-import.php:532
1115
+ msgid "Select a CSV file with exported entries to import again:"
1116
+ msgstr "Изберете CSV файл експортирани данни за импортиране:"
1117
+
1118
+ #: admin/page-settings.php:326
1119
+ msgid "Form"
1120
+ msgstr "Форма"
1121
+
1122
+ #: admin/page-settings.php:327
1123
+ msgid "Reading"
1124
+ msgstr "Четене"
1125
+
1126
+ #: admin/page-settings.php:328
1127
+ msgid "Admin"
1128
+ msgstr "Администратор"
1129
+
1130
+ #: admin/page-settings.php:329 frontend/write.php:282 frontend/write.php:313
1131
+ msgid "Anti-spam"
1132
+ msgstr "СПАМ защита"
1133
+
1134
+ #: admin/page-settings.php:330
1135
+ msgid "E-mail"
1136
+ msgstr "E-mail"
1137
+
1138
+ #: admin/page-settings.php:331 admin/tabs/uninstalltab.php:45
1139
+ msgid "Uninstall"
1140
+ msgstr "Деинсталация"
1141
+
1142
+ #: frontend/posthandling.php:39
1143
+ msgid "Submitting a new guestbook entry is only allowed for logged-in users."
1144
+ msgstr "Публикуването е позволено само за логнати потребители "
1145
+
1146
+ #: frontend/posthandling.php:208 frontend/posthandling.php:251
1147
+ msgid "There were errors submitting your guestbook entry."
1148
+ msgstr "Имаше грешка при приемането на вашият коментар."
1149
+
1150
+ #: frontend/posthandling.php:214
1151
+ msgid "Your name is not filled in, even though it is mandatory."
1152
+ msgstr "Полето за Име е задължително"
1153
+
1154
+ #: frontend/posthandling.php:217
1155
+ msgid "Your origin is not filled in, even though it is mandatory."
1156
+ msgstr "Не сте указали къде живеете, е задължително."
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
+
1163
+ #: frontend/posthandling.php:223
1164
+ msgid "Your website is not filled in, even though it is mandatory."
1165
+ msgstr "Моля попълнете полето за уеб сайт правилно."
1166
+
1167
+ #: frontend/posthandling.php:226
1168
+ msgid "There is no message, even though it is mandatory."
1169
+ msgstr "Не сте въвели съобщение за изпращане."
1170
+
1171
+ #: frontend/posthandling.php:229
1172
+ msgid ""
1173
+ "The anti-spam question was not answered correctly, even though it is "
1174
+ "mandatory."
1175
+ msgstr "Полето за защита срещу спам не е попълнено правилно."
1176
+
1177
+ #: frontend/posthandling.php:232
1178
+ msgid "The reCAPTCHA was not filled in correctly, even though it is mandatory."
1179
+ msgstr "Полето за защита срещу спам не е попълнено правилно."
1180
+
1181
+ #: frontend/posthandling.php:324
1182
+ msgid "Double post: An entry with the data you entered has already been saved."
1183
+ msgstr "Идентичен запис вече е записан в базата данни."
1184
+
1185
+ #: frontend/posthandling.php:341
1186
+ msgid "Thank you for your entry."
1187
+ msgstr "Благодарим за вашият отзив."
1188
+
1189
+ #: frontend/posthandling.php:343
1190
+ msgid "We will review it and unlock it in a short while."
1191
+ msgstr "Скоро ще прегледаме и публикуваме."
1192
+
1193
+ #: frontend/posthandling.php:380 admin/tabs/emailtab.php:138
1194
+ #, fuzzy
1195
+ msgid ""
1196
+ "\n"
1197
+ "Hello,\n"
1198
+ "\n"
1199
+ "There is a new guestbook entry at '%blog_name%'.\n"
1200
+ "You can check it at %entry_management_url%.\n"
1201
+ "\n"
1202
+ "Have a nice day.\n"
1203
+ "Your Gwolle-GB-Mailer\n"
1204
+ "\n"
1205
+ "\n"
1206
+ "Website address: %blog_url%\n"
1207
+ "User name: %user_name%\n"
1208
+ "User email: %user_email%\n"
1209
+ "Entry status: %status%\n"
1210
+ "Entry content:\n"
1211
+ "%entry_content%\n"
1212
+ msgstr ""
1213
+ "\n"
1214
+ "Hallo,\n"
1215
+ "\n"
1216
+ "Er is een nieuw gastenboekbericht op '%blog_name%'.\n"
1217
+ "Je kunt het bekijken op %entry_management_url%.\n"
1218
+ "\n"
1219
+ "Een prettige dag gewenst.\n"
1220
+ "Je Gwolle-GB-Mailer\n"
1221
+ "\n"
1222
+ "Website adres: %blog_url%\n"
1223
+ "Gebruikersnaam: %user_name%\n"
1224
+ "Gebruikers e-mail: %user_email%\n"
1225
+ "Berichtstatus: %status%\n"
1226
+ "Berichtinhoud:\n"
1227
+ "%entry_content%\n"
1228
+
1229
+ #: frontend/posthandling.php:401 frontend/posthandling.php:467
1230
+ msgid "New Guestbook Entry"
1231
+ msgstr "Нов запис в книгата за гости"
1232
+
1233
+ #: frontend/posthandling.php:448 admin/tabs/emailtab.php:198
1234
+ #, fuzzy
1235
+ msgid ""
1236
+ "\n"
1237
+ "Hello,\n"
1238
+ "\n"
1239
+ "You have just posted a new guestbook entry at '%blog_name%'.\n"
1240
+ "\n"
1241
+ "Have a nice day.\n"
1242
+ "The editors at %blog_name%.\n"
1243
+ "\n"
1244
+ "\n"
1245
+ "Website address: %blog_url%\n"
1246
+ "User name: %user_name%\n"
1247
+ "User email: %user_email%\n"
1248
+ "Entry content:\n"
1249
+ "%entry_content%\n"
1250
+ msgstr ""
1251
+ "\n"
1252
+ "Hallo,\n"
1253
+ "\n"
1254
+ "Je hebt net een nieuw bericht geplaatst op '%blog_name%'.\n"
1255
+ "\n"
1256
+ "Een fijne dag gewenst.\n"
1257
+ "De redactie van %blog_name%.\n"
1258
+ "\n"
1259
+ "\n"
1260
+ "Website adres: %blog_url%\n"
1261
+ "Gebruikersnaam: %user_name%\n"
1262
+ "Gebruikers e-mail: %user_email%\n"
1263
+ "Berichtinhoud:\n"
1264
+ "%entry_content%\n"
1265
+
1266
+ #: frontend/read.php:79
1267
+ msgid "Previous page"
1268
+ msgstr "Предишна страница"
1269
+
1270
+ #: frontend/read.php:92 frontend/read.php:100 frontend/read.php:106
1271
+ #: frontend/read.php:121 frontend/read.php:132
1272
+ msgid "Page"
1273
+ msgstr "Страница"
1274
+
1275
+ #: frontend/read.php:103 frontend/read.php:133
1276
+ msgid "Next page"
1277
+ msgstr "Следваща страница"
1278
+
1279
+ #: frontend/read.php:144
1280
+ msgid "(no entries yet)"
1281
+ msgstr "(Все още няма мнения)"
1282
+
1283
+ #: frontend/read.php:192
1284
+ msgid "from"
1285
+ msgstr "от"
1286
+
1287
+ #: frontend/read.php:201
1288
+ msgid "wrote on"
1289
+ msgstr "написал(а)"
1290
+
1291
+ #: frontend/read.php:205
1292
+ msgid "on"
1293
+ msgstr "в"
1294
+
1295
+ #: frontend/rss.php:84
1296
+ #, fuzzy
1297
+ msgid "Guestbook Entry by"
1298
+ msgstr "Съобщение в книгата за гости"
1299
+
1300
+ #: frontend/widget.php:12
1301
+ msgid "Displays the recent guestbook entries."
1302
+ msgstr "Показване на последните записи в книгата за гости."
1303
+
1304
+ #: frontend/widget.php:28 frontend/widget.php:194
1305
+ msgid "Visit guestbook"
1306
+ msgstr "Посетете книгата за гости."
1307
+
1308
+ #: frontend/widget.php:147
1309
+ msgid "Click here to get to the guestbook."
1310
+ msgstr "Цъкнете тук за достъп до книгата за гости."
1311
+
1312
+ #: frontend/widget.php:210
1313
+ msgid "Title:"
1314
+ msgstr "Заглавие:"
1315
+
1316
+ #: frontend/widget.php:216
1317
+ msgid "Number of entries:"
1318
+ msgstr "Брой отзиви:"
1319
+
1320
+ #: frontend/widget.php:232
1321
+ msgid "Best entries to show:"
1322
+ msgstr "Най - добри мнения:"
1323
+
1324
+ #: frontend/widget.php:234
1325
+ msgid "List of entry_id's, comma-separated"
1326
+ msgstr "ID-та разделени със запетая"
1327
+
1328
+ #: frontend/widget.php:240
1329
+ msgid "Show name of author."
1330
+ msgstr "Показване името на автора"
1331
+
1332
+ #: frontend/widget.php:246
1333
+ msgid "Show date of entry."
1334
+ msgstr "Показване на датата на записа."
1335
+
1336
+ #: frontend/widget.php:250
1337
+ msgid "Number of words for each entry:"
1338
+ msgstr "Брой думи в записа:"
1339
+
1340
+ #: frontend/widget.php:266
1341
+ msgid "Link text:"
1342
+ msgstr "Текст на връзката:"
1343
+
1344
+ #: frontend/widget.php:272
1345
+ msgid "Select the page of the guestbook:"
1346
+ msgstr "Изберете страница от книгата за гости:"
1347
+
1348
+ #: frontend/widget.php:274
1349
+ msgid "Select page"
1350
+ msgstr "Изберете страница"
1351
+
1352
+ #: frontend/write.php:94
1353
+ msgid "Write a new entry."
1354
+ msgstr "Оставете мнение"
1355
+
1356
+ #: frontend/write.php:102
1357
+ msgid "Log in to post an entry"
1358
+ msgstr ""
1359
+
1360
+ #: frontend/write.php:129 admin/tabs/formtab.php:58
1361
+ msgid "Write a new entry for the Guestbook"
1362
+ msgstr "<HR>Оставете ново мнение в книгата за гости</BR></BR>"
1363
+
1364
+ #: frontend/write.php:158 frontend/write.php:165 admin/tabs/formtab.php:125
1365
+ #: admin/tabs/readingtab.php:164
1366
+ msgid "City"
1367
+ msgstr "Град"
1368
+
1369
+ #: frontend/write.php:177 frontend/write.php:184 admin/tabs/formtab.php:145
1370
+ msgid "Email"
1371
+ msgstr "E-mail"
1372
+
1373
+ #: frontend/write.php:283
1374
+ msgid "Question:"
1375
+ msgstr "Въпрос:"
1376
+
1377
+ #: frontend/write.php:289
1378
+ msgid "Answer"
1379
+ msgstr "Отговор"
1380
+
1381
+ #: frontend/write.php:333
1382
+ msgid "Submit"
1383
+ msgstr "Изпращане"
1384
+
1385
+ #: frontend/write.php:342 admin/tabs/formtab.php:74
1386
+ msgid ""
1387
+ "\n"
1388
+ "Fields marked with * are obligatory.\n"
1389
+ "Your E-mail address wil not be published.\n"
1390
+ "For security reasons we save the ip address %ip%.\n"
1391
+ "It might be that your entry will only be visible in the guestbook after we "
1392
+ "reviewed it.\n"
1393
+ "We reserve our right to edit, delete, or not publish entries.\n"
1394
+ msgstr ""
1395
+ "\n"
1396
+ "Полетата отбелязани с * са задължителни.\n"
1397
+ "Вашият имейл нямя да бъде публикуван.\n"
1398
+ "Поради причини за сигурност ще запазим Вашият IP адрес- %ip%.\n"
1399
+ "Може мнението Ви да бъде публикувано след като сме го разгледали.\n"
1400
+ "Запазваме си правта да промени или изтрием, или да не публикуваме записи.\n"
1401
+
1402
+ #: functions/function.log.php:94
1403
+ msgid "Entry has been locked."
1404
+ msgstr "Мнението беше блокирано"
1405
+
1406
+ #: functions/function.log.php:95
1407
+ msgid "Entry has been checked."
1408
+ msgstr "Мнението е проверено."
1409
+
1410
+ #: functions/function.log.php:96
1411
+ msgid "Entry marked as spam."
1412
+ msgstr "Мнението е маркирано като спам."
1413
+
1414
+ #: functions/function.log.php:97
1415
+ msgid "Entry marked as not spam."
1416
+ msgstr "Мнението е маркирано за отсъствие на спам."
1417
+
1418
+ #: functions/function.log.php:98
1419
+ msgid "Entry has been edited."
1420
+ msgstr "Мнението беше редактирано."
1421
+
1422
+ #: functions/function.log.php:99
1423
+ msgid "Imported from DMSGuestbook"
1424
+ msgstr "Импортирано от DMSGuestbook"
1425
+
1426
+ #: functions/function.log.php:100
1427
+ msgid "Imported from WordPress comments"
1428
+ msgstr "Импортирано от коментарите на WordPress"
1429
+
1430
+ #: functions/function.log.php:101
1431
+ msgid "Imported from Gwolle-GB"
1432
+ msgstr "Импортирано от Gwolle-GB"
1433
+
1434
+ #: functions/function.log.php:102
1435
+ msgid "Exported to CSV file"
1436
+ msgstr "Експортирано в CSV файл"
1437
+
1438
+ #: functions/function.log.php:103
1439
+ msgid "Entry has been trashed."
1440
+ msgstr "Записът е преместен в кошчето."
1441
+
1442
+ #: functions/function.log.php:104
1443
+ msgid "Entry has been untrashed."
1444
+ msgstr "Записът е махнат от кошчето."
1445
+
1446
+ #: functions/function.misc.php:63
1447
+ msgid "No content to display. This entry is empty."
1448
+ msgstr "Няма съдържание, което да бъде показано. Записът е празен."
1449
+
1450
+ #: admin/tabs/admintab.php:26
1451
+ msgid "Entries per page in the admin"
1452
+ msgstr "Брой записи на страница в админ- панела "
1453
+
1454
+ #: admin/tabs/admintab.php:41
1455
+ msgid "Number of entries shown in the admin."
1456
+ msgstr "Брой записи, показазани в админ- панела."
1457
+
1458
+ #: admin/tabs/admintab.php:46
1459
+ msgid "Entry icons"
1460
+ msgstr "Иконки на записа"
1461
+
1462
+ #: admin/tabs/admintab.php:52
1463
+ msgid "Show entry icons"
1464
+ msgstr "Показване на иконки от записа"
1465
+
1466
+ #: admin/tabs/admintab.php:54
1467
+ msgid ""
1468
+ "These icons are shown in every entry row of the admin list, so that you know "
1469
+ "its status (checked, spam and trash)."
1470
+ msgstr ""
1471
+ "Тези иконки са показани на всеки ред от админския лист, така че да знаете "
1472
+ "статуса(проверен, спам или кошче)"
1473
+
1474
+ #: admin/tabs/admintab.php:61 admin/tabs/antispamtab.php:140
1475
+ #: admin/tabs/emailtab.php:235 admin/tabs/formtab.php:252
1476
+ #: admin/tabs/readingtab.php:229
1477
+ msgid "Save settings"
1478
+ msgstr "Съхранение на настройките "
1479
+
1480
+ #: admin/tabs/antispamtab.php:26
1481
+ msgid "Moderate Guestbook"
1482
+ msgstr "Модерация на книгата за гости"
1483
+
1484
+ #: admin/tabs/antispamtab.php:34
1485
+ msgid "Moderate entries before publishing them."
1486
+ msgstr "Модериране на записите преди тяхното пубилкуване"
1487
+
1488
+ #: admin/tabs/antispamtab.php:38
1489
+ msgid ""
1490
+ "New entries have to be unlocked by a moderator before they are visible to "
1491
+ "the public."
1492
+ msgstr ""
1493
+ "Нови коментари трябва да бъдат отключени от модератор тогда становятся видны "
1494
+ "всем."
1495
+
1496
+ #: admin/tabs/antispamtab.php:40
1497
+ msgid ""
1498
+ "It is recommended that you turn this on, because you are responsible for the "
1499
+ "content on your website."
1500
+ msgstr ""
1501
+ "Препоръчваме да включите, понеже Вие сте отговорни съдържанието на сайта Ви."
1502
+
1503
+ #: admin/tabs/antispamtab.php:50
1504
+ msgid "Learn more about Akismet..."
1505
+ msgstr "Повече знания за Akismet..."
1506
+
1507
+ #: admin/tabs/antispamtab.php:50 admin/tabs/antispamtab.php:106
1508
+ msgid "What's that?"
1509
+ msgstr "Какво е това"
1510
+
1511
+ #: admin/tabs/antispamtab.php:60
1512
+ msgid ""
1513
+ "Akismet helps you to fight spam. It's free and easy to install. Download and "
1514
+ "install it today to stop spam in your guestbook."
1515
+ msgstr ""
1516
+ "Akismet помага да се предпазите ос там. Безпатно и лесно за инсталиране. "
1517
+ "Инсталиране сега за да спреш спама. гостевой книге."
1518
+
1519
+ #: admin/tabs/antispamtab.php:63
1520
+ #, php-format
1521
+ msgid ""
1522
+ "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1523
+ "can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1524
+ msgstr ""
1525
+ "К За съжаление не можахме да намерим<strong>вашият API ключ</strong>. "
1526
+ "Съжаляваме, но не успяхме да намерим <a href=\"%s\">страница с Wordpress API "
1527
+ "ключ за Akismet</a>."
1528
+
1529
+ #: admin/tabs/antispamtab.php:72
1530
+ msgid "Use Akismet"
1531
+ msgstr "Използване на Akismet"
1532
+
1533
+ #: admin/tabs/antispamtab.php:74
1534
+ msgid ""
1535
+ "The WordPress API key has been found, so you can start using Akismet right "
1536
+ "now."
1537
+ msgstr ""
1538
+ "API-то на Wordpress е намерено, тъй че може да започнете да използвате "
1539
+ "Akismet сега."
1540
+
1541
+ #: admin/tabs/antispamtab.php:85
1542
+ msgid "Custom Anti-Spam Security Question"
1543
+ msgstr "Потребителски анти-спам въпрос"
1544
+
1545
+ #: admin/tabs/antispamtab.php:88
1546
+ msgid "12 + six ="
1547
+ msgstr "12 + шест ="
1548
+
1549
+ #: admin/tabs/antispamtab.php:89
1550
+ msgid "Custom security question to battle spam."
1551
+ msgstr "Предварителен въпрос за сигурност срещу спам."
1552
+
1553
+ #: admin/tabs/antispamtab.php:91
1554
+ msgid "18"
1555
+ msgstr "18"
1556
+
1557
+ #: admin/tabs/antispamtab.php:92
1558
+ msgid "The answer to your security question."
1559
+ msgstr "Отговорът на Вашият въпрос отностно сигурността"
1560
+
1561
+ #: admin/tabs/antispamtab.php:94
1562
+ msgid ""
1563
+ "You can ask your visitors to answer a custom security question, so only real "
1564
+ "people can post an entry."
1565
+ msgstr ""
1566
+ "Можете да кажете на своите колеги да попълнят анти- спам въпроса, така че "
1567
+ "само само хора да могат да оставят коментари."
1568
+
1569
+ #: admin/tabs/antispamtab.php:106
1570
+ msgid "Learn more about reCAPTCHA..."
1571
+ msgstr "Научете още за reCAPTCHA..."
1572
+
1573
+ #: admin/tabs/antispamtab.php:117
1574
+ msgid "<strong>Site (Public)</strong> key of your reCAPTCHA account"
1575
+ msgstr "<strong>Публичен</strong> ключ за Вашият reCAPTCHA ъкаунт"
1576
+
1577
+ #: admin/tabs/antispamtab.php:120
1578
+ msgid "<strong>Secret</strong> key of your reCAPTCHA account"
1579
+ msgstr "<strong>Таен</strong> ключ за Вашият reCAPTCHA ъкаунт"
1580
+
1581
+ #: admin/tabs/antispamtab.php:123
1582
+ msgid ""
1583
+ "reCAPTCHA is a way to have visitors fill in a field with a few letters or "
1584
+ "numbers. It is a way to make sure that you have a human visitor and not a "
1585
+ "spambot. Not every visitor will appreciate it though, some will consider it "
1586
+ "unfriendly."
1587
+ msgstr ""
1588
+ "reCAPTCHA е начин да накарате потребителите да попълнят поле с няколко букви "
1589
+ "или числа. По този начин се уверявате, че имате човещки посетител, а не бот "
1590
+ "за спам. Все пак, това няма да се хареса на всички потребители, и някои от "
1591
+ "тях ще го сметнат за недружелюбно."
1592
+
1593
+ #: admin/tabs/antispamtab.php:125
1594
+ msgid "The keys can be found at your"
1595
+ msgstr "Ключовете могат да бъдат намеррени във Вашият"
1596
+
1597
+ #: admin/tabs/antispamtab.php:125
1598
+ msgid "Go to my reCAPTCHA sites..."
1599
+ msgstr "Отиване към моите reCAPTCHA сайтове..."
1600
+
1601
+ #: admin/tabs/antispamtab.php:125
1602
+ msgid "reCAPTCHA sites overview"
1603
+ msgstr "Преглед на reCAPTCHA сайтовете..."
1604
+
1605
+ #: admin/tabs/antispamtab.php:130
1606
+ msgid ""
1607
+ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1608
+ "your theme or another plugin. The reCAPTCHA library in Gwolle-GB will not be "
1609
+ "loaded, and the found one will be used instead. This might give unexpected "
1610
+ "results."
1611
+ msgstr ""
1612
+ "<strong>Внимание:</strong>Очевидно, вече използвате reCAPTCHA библиотеката "
1613
+ "във Вашата тема или друго разширение. Библиотеката reCAPTCHA в Gwolle-GB "
1614
+ "няма да бъде заредена, а тази, която е вече намерена ще се използва место "
1615
+ "нея. Това може да доведе до неочаквани резултати."
1616
+
1617
+ #: admin/tabs/antispamtab.php:132
1618
+ msgid ""
1619
+ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1620
+ "your theme or another plugin. However, this is an old and incompatible "
1621
+ "version, so reCAPTCHA will not be used for Gwolle-GB."
1622
+ msgstr ""
1623
+ "<strong>Внимание:</strong>Очевидно, Вие вече използвате reCAPTCHA библиотека "
1624
+ "в Вашата тема или друго разширение. Въпреки това, тя е стара и несъвместима "
1625
+ "версия, затова reCAPTCHA няма да бъде използвана за Gwolle-GB."
1626
+
1627
+ #: admin/tabs/emailtab.php:26
1628
+ msgid "Admin mail from address"
1629
+ msgstr "Имейл на администратора"
1630
+
1631
+ #: admin/tabs/emailtab.php:32
1632
+ msgid ""
1633
+ "You can set the email address that is used for the From header of the mail "
1634
+ "that a notification subscriber gets on new entries."
1635
+ msgstr ""
1636
+ "Можете да зададете e-mail-а, който ще се ипозлва в хедърите на мейла, който "
1637
+ "ще получават абонираните потребители."
1638
+
1639
+ #: admin/tabs/emailtab.php:34
1640
+ msgid "By default the main admin address is used from General >> Settings."
1641
+ msgstr "По подразбиране мейла на администратора се иползва от Настройки "
1642
+
1643
+ #: admin/tabs/emailtab.php:41
1644
+ #, fuzzy
1645
+ msgid "Unsubscribe moderators"
1646
+ msgstr "Beheerders uitschrijven"
1647
+
1648
+ #: admin/tabs/emailtab.php:51
1649
+ #, fuzzy
1650
+ msgid "Unsubscribe User"
1651
+ msgstr "Gebruikers Uitschrijven"
1652
+
1653
+ #: admin/tabs/emailtab.php:73
1654
+ #, fuzzy
1655
+ msgid "These users have subscribed to the notification emails."
1656
+ msgstr "Deze gebruikers hebben zich aangemeld voor de notificatie e-mails."
1657
+
1658
+ #: admin/tabs/emailtab.php:74
1659
+ #, fuzzy
1660
+ msgid ""
1661
+ "Select a user if you want that user to unsubscribe from the notification "
1662
+ "emails."
1663
+ msgstr ""
1664
+ "Selecteer een gebruiker die je wilt uitschrijven van de notificatie e-mails."
1665
+
1666
+ #: admin/tabs/emailtab.php:79
1667
+ #, fuzzy
1668
+ msgid "Subscribe moderators"
1669
+ msgstr "Beheerders inschrijven"
1670
+
1671
+ #: admin/tabs/emailtab.php:82
1672
+ #, fuzzy
1673
+ msgid "Subscribe User"
1674
+ msgstr "Gebruikers Inschrijven"
1675
+
1676
+ #: admin/tabs/emailtab.php:125
1677
+ #, fuzzy
1678
+ msgid "You can subscribe a moderator to the notification emails."
1679
+ msgstr "Je kunt beheerders aanmelden voor de notificatie e-mails."
1680
+
1681
+ #: admin/tabs/emailtab.php:126
1682
+ #, fuzzy
1683
+ msgid "Select a user that you want subscribed to the notification emails."
1684
+ msgstr ""
1685
+ "Selecteer een gebruiker die je wilt inschrijven voor de notificatie e-mails."
1686
+
1687
+ #: admin/tabs/emailtab.php:127
1688
+ #, fuzzy
1689
+ msgid ""
1690
+ "You will only see users with the roles of Administrator, Editor and Author, "
1691
+ "who have the capability 'moderate_comments' ."
1692
+ msgstr ""
1693
+ "Je ziet alleen gebruikers met de rol Beheerder, Redacteur en Auteur, die ook "
1694
+ "de capability 'moderate_comments' hebben."
1695
+
1696
+ #: admin/tabs/emailtab.php:133
1697
+ msgid "Admin mail content"
1698
+ msgstr "Съдържание на администраторския мейл"
1699
+
1700
+ #: admin/tabs/emailtab.php:160
1701
+ msgid ""
1702
+ "You can set the content of the mail that a notification subscriber gets on "
1703
+ "new entries. The following tags are supported:"
1704
+ msgstr ""
1705
+ "Можете да зададете съдържанието на мейла, който потребителите получватат, "
1706
+ "след като се абонират за получване на известия. Позволени са следните тагове:"
1707
+
1708
+ #: admin/tabs/emailtab.php:175
1709
+ #, fuzzy
1710
+ msgid "Mail Author"
1711
+ msgstr "Mail Auteur"
1712
+
1713
+ #: admin/tabs/emailtab.php:183
1714
+ #, fuzzy
1715
+ msgid "Mail the author with a confirmation email."
1716
+ msgstr "Mail de auteur met een e-mail als bevestiging."
1717
+
1718
+ #: admin/tabs/emailtab.php:187
1719
+ #, fuzzy
1720
+ msgid ""
1721
+ "The author of the guestbook entry will receive an email after posting. It "
1722
+ "will have a copy of the entry."
1723
+ msgstr ""
1724
+ "De auteur van het gastenboekbericht zal een e-mail ter bevestiging "
1725
+ "ontvangen. Het bevat een kopie van het bericht."
1726
+
1727
+ #: admin/tabs/emailtab.php:193
1728
+ #, fuzzy
1729
+ msgid "Author mail content"
1730
+ msgstr "Auteur mail content"
1731
+
1732
+ #: admin/tabs/emailtab.php:218
1733
+ #, fuzzy
1734
+ msgid ""
1735
+ "You can set the content of the mail that the author of the entry will "
1736
+ "receive. The following tags are supported:"
1737
+ msgstr ""
1738
+ "Je kunt de inhoud aanpassen van de e-mail die de auteur van het bericht als "
1739
+ "notificatie krijgt. De volgende tags worden ondersteund:"
1740
+
1741
+ #: admin/tabs/formtab.php:26
1742
+ msgid "Require Login"
1743
+ msgstr "Изисква се вход"
1744
+
1745
+ #: admin/tabs/formtab.php:33
1746
+ msgid "Require user to be logged in."
1747
+ msgstr "Изискайте потребителя да е логнат."
1748
+
1749
+ #: admin/tabs/formtab.php:35
1750
+ msgid "Only allow logged-in users to add a guestbook entry."
1751
+ msgstr "Позволете само логнати потреители да публикуват мнения "
1752
+
1753
+ #: admin/tabs/formtab.php:40
1754
+ msgid "Labels float"
1755
+ msgstr "Разположение на имената на полетата"
1756
+
1757
+ #: admin/tabs/formtab.php:47
1758
+ msgid "Labels in the form float to the left."
1759
+ msgstr "Имената да са в ляво."
1760
+
1761
+ #: admin/tabs/formtab.php:49
1762
+ msgid ""
1763
+ "Labels in the form float to the left. Otherwise the labels will be above the "
1764
+ "input-fields."
1765
+ msgstr ""
1766
+ "Имената на полетата да са в ляво. В противен случай, ще бъдат над полетата "
1767
+
1768
+ #: admin/tabs/formtab.php:54
1769
+ #, fuzzy
1770
+ msgid "Header Text"
1771
+ msgstr "Link tekst:"
1772
+
1773
+ #: admin/tabs/formtab.php:63
1774
+ #, fuzzy
1775
+ msgid "You can set the header that is shown on top of the form."
1776
+ msgstr "Настройки на формата, показана на потребителя."
1777
+
1778
+ #: admin/tabs/formtab.php:69
1779
+ #, fuzzy
1780
+ msgid "Notice Text"
1781
+ msgstr "Link tekst:"
1782
+
1783
+ #: admin/tabs/formtab.php:86
1784
+ #, fuzzy
1785
+ msgid "You can set the content of the notice that gets shown below the form."
1786
+ msgstr "Настройка на частите, показани на потребителя."
1787
+
1788
+ #: admin/tabs/formtab.php:88
1789
+ msgid "You can use the tag %ip% to show the ip address."
1790
+ msgstr "Можете да използвате тага %ip% за покзване на ip адреса"
1791
+
1792
+ #: admin/tabs/formtab.php:101
1793
+ msgid "Configure the form that is shown to visitors."
1794
+ msgstr "Настройки на формата, показана на потребителя."
1795
+
1796
+ #: admin/tabs/formtab.php:112 admin/tabs/formtab.php:132
1797
+ #: admin/tabs/formtab.php:152 admin/tabs/formtab.php:172
1798
+ #: admin/tabs/formtab.php:192 admin/tabs/formtab.php:212
1799
+ #: admin/tabs/formtab.php:227 admin/tabs/formtab.php:242
1800
+ #: admin/tabs/readingtab.php:147 admin/tabs/readingtab.php:159
1801
+ #: admin/tabs/readingtab.php:171 admin/tabs/readingtab.php:183
1802
+ #: admin/tabs/readingtab.php:196 admin/tabs/readingtab.php:209
1803
+ #: admin/tabs/readingtab.php:221
1804
+ msgid "Enabled"
1805
+ msgstr "Включено"
1806
+
1807
+ #: admin/tabs/formtab.php:120 admin/tabs/formtab.php:140
1808
+ #: admin/tabs/formtab.php:160 admin/tabs/formtab.php:180
1809
+ #: admin/tabs/formtab.php:200
1810
+ msgid "Mandatory"
1811
+ msgstr "Задължително"
1812
+
1813
+ #: admin/tabs/formtab.php:205
1814
+ msgid "BBcode and Emoji"
1815
+ msgstr ""
1816
+
1817
+ #: admin/tabs/formtab.php:215
1818
+ msgid "Will only be shown if the Message is enabled."
1819
+ msgstr ""
1820
+
1821
+ #: admin/tabs/formtab.php:220
1822
+ msgid "Custom Anti-spam"
1823
+ msgstr "Персонализиран анти-спам"
1824
+
1825
+ #: admin/tabs/formtab.php:230 admin/tabs/formtab.php:245
1826
+ msgid "When enabled it is mandatory."
1827
+ msgstr "Когато е отбелязано е задължително."
1828
+
1829
+ #: admin/tabs/formtab.php:235 admin/tabs/uninstalltab.php:63
1830
+ msgid "reCAPTCHA"
1831
+ msgstr "reCAPTCHA"
1832
+
1833
+ #: admin/tabs/readingtab.php:26
1834
+ msgid "Entries per page on the frontend"
1835
+ msgstr "Записи на страница(front-end)"
1836
+
1837
+ #: admin/tabs/readingtab.php:41
1838
+ msgid "Number of entries shown on the frontend."
1839
+ msgstr "Количество записи, показани във frontend."
1840
+
1841
+ #: admin/tabs/readingtab.php:46
1842
+ msgid "Length of the entry content"
1843
+ msgstr "Дължина на съдържанието на записа"
1844
+
1845
+ #: admin/tabs/readingtab.php:56
1846
+ msgid "Unlimited Words"
1847
+ msgstr "Неограниченно количество думи"
1848
+
1849
+ #: admin/tabs/readingtab.php:63
1850
+ msgid "Words"
1851
+ msgstr "Думи"
1852
+
1853
+ #: admin/tabs/readingtab.php:69
1854
+ msgid "Maximum length of the entry content in words."
1855
+ msgstr "Максимална дължина на съдържанието на запис в думи "
1856
+
1857
+ #: admin/tabs/readingtab.php:70
1858
+ msgid "Please be aware that this will strip linebreaks as well."
1859
+ msgstr ""
1860
+
1861
+ #: admin/tabs/readingtab.php:76
1862
+ msgid "Line breaks"
1863
+ msgstr "Нови редове."
1864
+
1865
+ #: admin/tabs/readingtab.php:83
1866
+ msgid "Show line breaks."
1867
+ msgstr "Показване на нови редове."
1868
+
1869
+ #: admin/tabs/readingtab.php:85
1870
+ msgid ""
1871
+ "Show line breaks as the entry authors entered them. (May result in very long "
1872
+ "entries. Is turned off by default.)"
1873
+ msgstr ""
1874
+ "Показване на нови редове, както са били написани от автора на записа. (може "
1875
+ "съдържанието да се окаже дълго, за това изключено е по подразбиране)"
1876
+
1877
+ #: admin/tabs/readingtab.php:90
1878
+ msgid "Smileys"
1879
+ msgstr "Усмивки"
1880
+
1881
+ #: admin/tabs/readingtab.php:97
1882
+ msgid "Display smileys as images."
1883
+ msgstr "Изобразяване на усмивките като картинки."
1884
+
1885
+ #: admin/tabs/readingtab.php:99
1886
+ #, php-format
1887
+ msgid ""
1888
+ "Replaces smileys in entries like :) with their image %s. Uses the WP smiley "
1889
+ "replacer, so check on that one if you'd like to add new/more smileys."
1890
+ msgstr ""
1891
+ "Заменяне на усмивки като :), на картинки %s. Използва WP системата за замяна "
1892
+ "на усмивки, за това проверете там, ако не Ви харесват "
1893
+
1894
+ #: admin/tabs/readingtab.php:104
1895
+ msgid "Links"
1896
+ msgstr "Връзки"
1897
+
1898
+ #: admin/tabs/readingtab.php:111
1899
+ msgid "Link authors' name to their website."
1900
+ msgstr "Връзка към сайта на автора."
1901
+
1902
+ #: admin/tabs/readingtab.php:113
1903
+ msgid ""
1904
+ "The author of an entry can set his/her website. If this setting is checked, "
1905
+ "his/her name will be a link to that website."
1906
+ msgstr ""
1907
+ "Авторът на запис, може да остави името на сайта си, ако желае , а името им "
1908
+ "ще е линк."
1909
+
1910
+ #: admin/tabs/readingtab.php:118
1911
+ msgid "Admin Entry Styling"
1912
+ msgstr "Стил на администраторски запис."
1913
+
1914
+ #: admin/tabs/readingtab.php:125
1915
+ msgid "Admin entries get a special CSS styling."
1916
+ msgstr "Записи от админа имат специален външен вид(CSS)."
1917
+
1918
+ #: admin/tabs/readingtab.php:127
1919
+ msgid ""
1920
+ "Admin entries get a special CSS styling. It will get a lightgrey background."
1921
+ msgstr "Записи от админа имат специален външен вид(CSS) - светлосив фон."
1922
+
1923
+ #: admin/tabs/readingtab.php:135
1924
+ msgid "Configure the parts of the entries that are shown to visitors."
1925
+ msgstr "Настройка на частите, показани на потребителя."
1926
+
1927
+ #: admin/tabs/readingtab.php:140
1928
+ msgid "Avatar"
1929
+ msgstr "Аватар"
1930
+
1931
+ #: admin/tabs/readingtab.php:176
1932
+ msgid "Date and Time"
1933
+ msgstr "Дата и време"
1934
+
1935
+ #: admin/tabs/readingtab.php:184
1936
+ msgid "Setting this will show the date and the time of the entry."
1937
+ msgstr "Включването ще показва датата и часа на записа."
1938
+
1939
+ #: admin/tabs/readingtab.php:197
1940
+ msgid ""
1941
+ "Setting this will show the date of the entry. If Date and Time above are "
1942
+ "enabled, that setting has preference."
1943
+ msgstr ""
1944
+ "Включването ще показва датата на записа. Ако дата и време(отгоре) са "
1945
+ "включени, те са с приоритет."
1946
+
1947
+ #: admin/tabs/readingtab.php:202
1948
+ msgid "Content"
1949
+ msgstr "Съдържание на записа"
1950
+
1951
+ #: admin/tabs/readingtab.php:214
1952
+ msgid "Edit link"
1953
+ msgstr "Промяна на връзката"
1954
+
1955
+ #: admin/tabs/readingtab.php:222
1956
+ msgid ""
1957
+ "A link to the editor will be added to the content. Only visible for "
1958
+ "moderators."
1959
+ msgstr ""
1960
+ "Линк към редактора ще бъде добавен към съдържанието. Видим само за "
1961
+ "модератори."
1962
+
1963
+ #: admin/tabs/uninstalltab.php:34
1964
+ msgid "The entries and settings have been removed."
1965
+ msgstr "Записите и настройките бяха премахнати."
1966
+
1967
+ #: admin/tabs/uninstalltab.php:35
1968
+ msgid "The plugin is deactivated."
1969
+ msgstr "Разширението е деактивирано."
1970
+
1971
+ #: admin/tabs/uninstalltab.php:36
1972
+ msgid "You can now go to your"
1973
+ msgstr "Сега можете да продължите към Вашият"
1974
+
1975
+ #: admin/tabs/uninstalltab.php:36
1976
+ msgid "dashboard."
1977
+ msgstr "Табло за наблюдение."
1978
+
1979
+ #: admin/tabs/uninstalltab.php:47
1980
+ msgid ""
1981
+ "Uninstalling means that all database entries are removed (settings and "
1982
+ "entries)."
1983
+ msgstr ""
1984
+ "При деинсталацията всички записи в базата данни ще бъдат изтрити(настройките "
1985
+ "също)."
1986
+
1987
+ #: admin/tabs/uninstalltab.php:49
1988
+ msgid "This can <strong>not</strong> be undone."
1989
+ msgstr "Действието е <strong>необратимо</strong>."
1990
+
1991
+ #: admin/tabs/uninstalltab.php:55
1992
+ msgid "Confirm"
1993
+ msgstr "Потвърдете"
1994
+
1995
+ #: admin/tabs/uninstalltab.php:58
1996
+ msgid "Yes, I'm absolutely sure of this. Proceed!"
1997
+ msgstr "Да, абсолютно съм сигурен. Продължи!"
1998
+
1999
+ #: admin/tabs/uninstalltab.php:66
2000
+ msgid "Also delete the reCAPTCHA keys"
2001
+ msgstr "Също изтриване на reCAPTCHA"
2002
+
2003
+ #: admin/tabs/uninstalltab.php:73
2004
+ msgid "Uninstall &raquo;"
2005
+ msgstr "Деинсталиране &raquo;"
2006
+
2007
+ #~ msgid "Donate"
2008
+ #~ msgstr "Дарете"
2009
+
2010
+ #~ msgid "No Comments"
2011
+ #~ msgstr "Няма коментари"
2012
+
2013
+ #~ msgid "Import all entries from this page."
2014
+ #~ msgstr "Импортиране на всички записи от тази страница."
2015
+
2016
+ #~ msgid "hours"
2017
+ #~ msgstr "час"
lang/gwolle-gb-cs_CZ.mo ADDED
Binary file
lang/gwolle-gb-cs_CZ.po ADDED
@@ -0,0 +1,1784 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: guestbook\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2015-02-03 13:04+0100\n"
11
+ "PO-Revision-Date: 2014-12-17 07:56+0100\n"
12
+ "Last-Translator: Honya K. <korous.jan@gmail.com>\n"
13
+ "Language-Team: HONYA K. <foto@honya-k.cz>\n"
14
+ "Language: cs_CZ\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.7.1\n"
19
+ "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
20
+
21
+ #: actions.php:35 actions.php:36 frontend/widget.php:21
22
+ #: frontend/widget.php:143
23
+ msgid "Guestbook"
24
+ msgstr "Návštěvní kniha"
25
+
26
+ #: actions.php:46 actions.php:47 admin/page-settings.php:383
27
+ #: admin/page-settings.php:470
28
+ msgid "Entries"
29
+ msgstr "Záznamů"
30
+
31
+ #. /editor.php
32
+ #: actions.php:54
33
+ msgid "Entry editor"
34
+ msgstr "Editor záznamu"
35
+
36
+ #: actions.php:54 admin/page-gwolle-gb.php:85
37
+ msgid "New entry"
38
+ msgstr "Nový záznam"
39
+
40
+ #. /settings.php
41
+ #: actions.php:57 actions.php:80 admin/page-settings.php:184
42
+ msgid "Settings"
43
+ msgstr "Nastavení"
44
+
45
+ #. /import.php
46
+ #: actions.php:60
47
+ msgid "Import"
48
+ msgstr ""
49
+
50
+ #. /export.php
51
+ #: actions.php:63
52
+ msgid "Export"
53
+ msgstr ""
54
+
55
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:675
56
+ #: frontend/read.php:201
57
+ msgid "Edit entry"
58
+ msgstr "Upravit záznam"
59
+
60
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:675
61
+ #: frontend/read.php:201
62
+ msgid "Edit"
63
+ msgstr "Upravit"
64
+
65
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:414
66
+ #: admin/page-entries.php:678
67
+ msgid "Check entry"
68
+ msgstr "Zkontrolovat záznam"
69
+
70
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:414
71
+ #: admin/page-entries.php:678
72
+ msgid "Check"
73
+ msgstr "Označit"
74
+
75
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:417
76
+ #: admin/page-entries.php:681
77
+ msgid "Uncheck entry"
78
+ msgstr "Odoznačit záznam"
79
+
80
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:417
81
+ #: admin/page-entries.php:681
82
+ msgid "Uncheck"
83
+ msgstr "Odoznačit"
84
+
85
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:420
86
+ #: admin/page-entries.php:684
87
+ msgid "Mark entry as spam."
88
+ msgstr "Označit záznam jako spam"
89
+
90
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:363
91
+ #: admin/page-editor.php:420 admin/page-entries.php:422
92
+ #: admin/page-entries.php:684
93
+ msgid "Spam"
94
+ msgstr "Nevyžádané"
95
+
96
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:423
97
+ #: admin/page-entries.php:687
98
+ msgid "Mark entry as not-spam."
99
+ msgstr "Označit jako není spam"
100
+
101
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:423
102
+ #: admin/page-entries.php:687
103
+ msgid "Not spam"
104
+ msgstr "Není spam"
105
+
106
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:426
107
+ #: admin/page-entries.php:690
108
+ msgid "Move entry to trash."
109
+ msgstr "Přesunout záznam do koše"
110
+
111
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:373
112
+ #: admin/page-editor.php:426 admin/page-entries.php:426
113
+ #: admin/page-entries.php:690
114
+ msgid "Trash"
115
+ msgstr "Odstraněné"
116
+
117
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:429
118
+ #: admin/page-entries.php:693
119
+ msgid "Recover entry from trash."
120
+ msgstr ""
121
+
122
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:429
123
+ #: admin/page-entries.php:693
124
+ msgid "Untrash"
125
+ msgstr ""
126
+
127
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:432
128
+ #: admin/page-entries.php:696
129
+ msgid "Please wait..."
130
+ msgstr "Prosím vyčkejte..."
131
+
132
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:432
133
+ #: admin/page-entries.php:696
134
+ msgid "Wait..."
135
+ msgstr ""
136
+
137
+ #: admin/dashboard-widget.php:155
138
+ msgid "Refresh"
139
+ msgstr ""
140
+
141
+ #: admin/dashboard-widget.php:156
142
+ msgid "View all"
143
+ msgstr "Zobrazit vše"
144
+
145
+ #: admin/dashboard-widget.php:157
146
+ msgid "View new"
147
+ msgstr ""
148
+
149
+ #: admin/dashboard-widget.php:160
150
+ msgid "No new and unchecked guestbook entries."
151
+ msgstr ""
152
+
153
+ #: admin/dashboard-widget.php:167
154
+ msgid "Guestbook (new entries)"
155
+ msgstr ""
156
+
157
+ #: admin/installSplash.php:14
158
+ msgid "Installation"
159
+ msgstr "Instalace"
160
+
161
+ #: admin/installSplash.php:20
162
+ msgid ""
163
+ "Welcome!<br>It seems that either you're using this plugin for the first time "
164
+ "or you've deleted all settings.<br>However, to use this plugin we have to "
165
+ "setup the database tables. Good for you, we've made this as easy as possible."
166
+ "<br>All you've got to do is click on that button below, and that's it."
167
+ msgstr ""
168
+ "Vítejte! <br> Zdá se, že buď budete používat tento plugin poprvé, nebo jste "
169
+ "smazali všechna nastavení. <br> Pokud však chcete používat tento pluginu, "
170
+ "musíme nastavit databázové tabulky. Dobré pro vás, udělali jsme to tak "
171
+ "jednoduché, jak je to možné. <br> Vše, co musíš udělat, je kliknout na toto "
172
+ "tlačítko níže, a to je vše"
173
+
174
+ #: admin/installSplash.php:26
175
+ msgid "Sure, let's do this!"
176
+ msgstr "Jasně, pojďme to udělat!"
177
+
178
+ #: admin/installSplash.php:33
179
+ #, php-format
180
+ msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
181
+ msgstr ""
182
+
183
+ #: admin/installSplash.php:35
184
+ #, php-format
185
+ msgid ""
186
+ "It looks like there has been an error. <a href=\"%s\">Click here to "
187
+ "continue...</a>"
188
+ msgstr ""
189
+
190
+ #: admin/page-editor.php:15 admin/page-entries.php:16 admin/page-export.php:17
191
+ #: admin/page-gwolle-gb.php:278 admin/page-import.php:24
192
+ #: admin/page-settings.php:15
193
+ msgid "Cheatin&#8217; uh?"
194
+ msgstr "Cheatin&#8217; uh?"
195
+
196
+ #: admin/page-editor.php:26
197
+ msgid "Edit guestbook entry"
198
+ msgstr "Upravit záznam v knize návštěv"
199
+
200
+ #: admin/page-editor.php:39
201
+ msgid "Entry could not be found."
202
+ msgstr "Záznam nebyl nalezen"
203
+
204
+ #: admin/page-editor.php:41
205
+ msgid "Guestbook entry (error)"
206
+ msgstr "Záznam v knize návštěv (Chyba)"
207
+
208
+ #: admin/page-editor.php:44
209
+ msgid "New guestbook entry"
210
+ msgstr "Nový záznam do knihy návštěv"
211
+
212
+ #: admin/page-editor.php:54
213
+ msgid "Something strange happened."
214
+ msgstr "Se stalo něco zvláštního"
215
+
216
+ #: admin/page-editor.php:82
217
+ msgid "Submitted as Spam to the Akismet service."
218
+ msgstr "Vložené jako spam do služby Akismet"
219
+
220
+ #: admin/page-editor.php:91
221
+ msgid "Submitted as Ham to the Akismet service."
222
+ msgstr "Vložené jako HAM do služby Akismet"
223
+
224
+ #: admin/page-editor.php:140 admin/page-gwolle-gb.php:354
225
+ #: admin/page-settings.php:190
226
+ msgid "Changes saved."
227
+ msgstr "Změny uloženy"
228
+
229
+ #: admin/page-editor.php:142 admin/page-editor.php:234
230
+ msgid "Error happened during saving."
231
+ msgstr "Stala se chyba při ukládání"
232
+
233
+ #: admin/page-editor.php:146
234
+ msgid "Entry was not changed."
235
+ msgstr "Záznam nebyl změněn"
236
+
237
+ #: admin/page-editor.php:157
238
+ msgid "Entry removed."
239
+ msgstr "Záznam odebrán."
240
+
241
+ #: admin/page-editor.php:200
242
+ msgid "Entry has no content, even though that is mandatory."
243
+ msgstr "Položka nemá žádný obsah, i když je to povinné."
244
+
245
+ #: admin/page-editor.php:232
246
+ msgid "Entry saved."
247
+ msgstr "Záznam uložen"
248
+
249
+ #: admin/page-editor.php:238
250
+ msgid "Entry was not saved."
251
+ msgstr "Záznam nebyl uložen"
252
+
253
+ #: admin/page-editor.php:311 admin/page-editor.php:404
254
+ #: admin/page-editor.php:448 admin/page-editor.php:503
255
+ #: admin/page-editor.php:539 admin/page-editor.php:550
256
+ #: admin/page-editor.php:558 admin/page-export.php:40
257
+ #: admin/page-import.php:314 admin/page-import.php:381
258
+ #: admin/page-import.php:450
259
+ msgid "Click to open or close"
260
+ msgstr "Klidni pro otevření nebo zavření"
261
+
262
+ #: admin/page-editor.php:311
263
+ msgid "Options"
264
+ msgstr "Možnosti"
265
+
266
+ #: admin/page-editor.php:332
267
+ msgid "This entry is not yet visible."
268
+ msgstr ""
269
+
270
+ #: admin/page-editor.php:336 admin/page-editor.php:341
271
+ msgid "This entry is Visible."
272
+ msgstr "Tento záznam je viditelný"
273
+
274
+ #: admin/page-editor.php:337 admin/page-editor.php:342
275
+ msgid "This entry is Not Visible."
276
+ msgstr "Tento záznam není viditelný"
277
+
278
+ #: admin/page-editor.php:353
279
+ msgid "Checked"
280
+ msgstr ""
281
+
282
+ #: admin/page-editor.php:381
283
+ msgid "Remove this entry Permanently."
284
+ msgstr "Trvale odstraňte tuto položku."
285
+
286
+ #: admin/page-editor.php:392
287
+ msgid "Save"
288
+ msgstr "Uložit"
289
+
290
+ #: admin/page-editor.php:404
291
+ msgid "Actions"
292
+ msgstr ""
293
+
294
+ #: admin/page-editor.php:448
295
+ msgid "Details"
296
+ msgstr "Detaily"
297
+
298
+ #: admin/page-editor.php:452 admin/page-entries.php:546
299
+ #: admin/page-entries.php:562
300
+ msgid "Author"
301
+ msgstr "Text"
302
+
303
+ #: admin/page-editor.php:457 admin/page-editor.php:465
304
+ #: admin/page-editor.php:485 admin/page-editor.php:493
305
+ #: functions/function.log.php:164
306
+ msgid "Unknown"
307
+ msgstr "Neznámý"
308
+
309
+ #: admin/page-editor.php:461
310
+ msgid "E-Mail"
311
+ msgstr "Email"
312
+
313
+ #: admin/page-editor.php:469 admin/page-editor.php:513
314
+ msgid "Written"
315
+ msgstr "Napsal(a)"
316
+
317
+ #: admin/page-editor.php:474
318
+ msgid "Not yet"
319
+ msgstr "Zatím nic"
320
+
321
+ #: admin/page-editor.php:478
322
+ msgid "Author's IP-address"
323
+ msgstr "Autorova IP adresa"
324
+
325
+ #: admin/page-editor.php:481
326
+ msgid "Whois search for this IP"
327
+ msgstr "Hledat IP adresu pomocí Whois"
328
+
329
+ #: admin/page-editor.php:489
330
+ msgid "Host"
331
+ msgstr "Host"
332
+
333
+ #: admin/page-editor.php:503
334
+ msgid "Entry log"
335
+ msgstr "Log záznamů"
336
+
337
+ #: admin/page-editor.php:522
338
+ msgid "No log yet."
339
+ msgstr "Žádné záznamy"
340
+
341
+ #: admin/page-editor.php:539 frontend/write.php:167
342
+ msgid "Guestbook entry"
343
+ msgstr "Text záznamu"
344
+
345
+ #: admin/page-editor.php:544
346
+ #, php-format
347
+ msgid ""
348
+ "Line breaks will not be visible to the visitors due to your <a href=\"%s"
349
+ "\">settings</a>."
350
+ msgstr ""
351
+
352
+ #: admin/page-editor.php:550 admin/page-settings.php:280
353
+ #: frontend/write.php:153 frontend/write.php:160
354
+ msgid "Homepage"
355
+ msgstr "Webová stránka"
356
+
357
+ #: admin/page-editor.php:553
358
+ msgid "Example: <code>http://www.example.com/</code>"
359
+ msgstr "Příklad: <code>http://www.example.com/</code>"
360
+
361
+ #: admin/page-editor.php:558 admin/page-export.php:55
362
+ msgid "Origin"
363
+ msgstr "Město"
364
+
365
+ #: admin/page-entries.php:209
366
+ msgid "entry checked."
367
+ msgstr "Záznam kontrolován."
368
+
369
+ #: admin/page-entries.php:211
370
+ msgid "entries checked."
371
+ msgstr "Záznamy zkontrolovány."
372
+
373
+ #: admin/page-entries.php:213
374
+ msgid "No entries checked."
375
+ msgstr "Žádné záznamy nezkontrolovány."
376
+
377
+ #: admin/page-entries.php:217
378
+ msgid "entry unchecked."
379
+ msgstr "Záznamy nezkontrolovány."
380
+
381
+ #: admin/page-entries.php:219
382
+ msgid "entries unchecked."
383
+ msgstr "Žádné záznamy nezkontrolovány."
384
+
385
+ #: admin/page-entries.php:221
386
+ msgid "No entries unchecked."
387
+ msgstr "Žádné záznamy nezkontrolovány."
388
+
389
+ #: admin/page-entries.php:225
390
+ msgid ""
391
+ "entry marked as spam and submitted to Akismet as spam (if Akismet was "
392
+ "enabled)."
393
+ msgstr ""
394
+ "záznam označen jako spam a předán Akismet jako spam (pokud byl povolen "
395
+ "Akismet)."
396
+
397
+ #: admin/page-entries.php:227
398
+ msgid ""
399
+ "entries marked as spam and submitted to Akismet as spam (if Akismet was "
400
+ "enabled)."
401
+ msgstr ""
402
+ "záznamy označené jako spam a předán Akismet jako spam (pokud byl povolen "
403
+ "Akismet)."
404
+
405
+ #: admin/page-entries.php:229
406
+ msgid "No entries marked as spam."
407
+ msgstr "Žádné položky označených jako nevyžádaná pošta."
408
+
409
+ #: admin/page-entries.php:233
410
+ msgid ""
411
+ "entry marked as not spam and submitted to Akismet as ham (if Akismet was "
412
+ "enabled)."
413
+ msgstr ""
414
+ "položka označena jako není spam a předán Akismet jako šunku (pokud byl "
415
+ "povolen Akismet)."
416
+
417
+ #: admin/page-entries.php:235
418
+ msgid ""
419
+ "entries marked as not spam and submitted to Akismet as ham (if Akismet was "
420
+ "enabled)."
421
+ msgstr ""
422
+ "záznamy označené jako spam a předány Akismet jako spam (pokud byl povolen "
423
+ "Akismet)."
424
+
425
+ #: admin/page-entries.php:237
426
+ msgid "No entries marked as not spam."
427
+ msgstr "Žádné záznamy označené jako není spam."
428
+
429
+ #: admin/page-entries.php:241
430
+ msgid "entry considered spam and marked as such."
431
+ msgstr "Záznam je považován za spam, a jako takový je označen."
432
+
433
+ #: admin/page-entries.php:243
434
+ msgid "entries considered spam and marked as such."
435
+ msgstr "Záznamy je považován za spam, a jako takový je označen."
436
+
437
+ #: admin/page-entries.php:246
438
+ msgid "entry not considered spam and marked as such."
439
+ msgstr "Záznam není považován za spam, a jako takový je označen."
440
+
441
+ #: admin/page-entries.php:248
442
+ msgid "entries not considered spam and marked as such."
443
+ msgstr "Záznamy nejsou považován za spam, a jako takový je označen."
444
+
445
+ #: admin/page-entries.php:251
446
+ msgid "entry already considered spam and not changed."
447
+ msgstr "Záznam již označen jako spam a to se nezměnilo."
448
+
449
+ #: admin/page-entries.php:253
450
+ msgid "entries already considered spam and not changed."
451
+ msgstr "Záznamy již označeny jako spam a to se nezměnilo."
452
+
453
+ #: admin/page-entries.php:256
454
+ msgid "entry already considered not spam and not changed."
455
+ msgstr "Záznam již označen jako není spam a to se nezměnilo."
456
+
457
+ #: admin/page-entries.php:258
458
+ msgid "entries already considered not spam and not changed."
459
+ msgstr "Záznamy již označeny jako není spam a to se nezměnilo."
460
+
461
+ #: admin/page-entries.php:262
462
+ msgid "entry moved to trash."
463
+ msgstr "Záznam přesunuta do koše."
464
+
465
+ #: admin/page-entries.php:264
466
+ msgid "entries moved to trash."
467
+ msgstr "Záznamy přesunuty do koše."
468
+
469
+ #: admin/page-entries.php:266
470
+ msgid "No entries moved to trash."
471
+ msgstr "Žádné záznamy nebyly přesunuty do koše."
472
+
473
+ #: admin/page-entries.php:270
474
+ msgid "entry recovered from trash."
475
+ msgstr "záznam obnoven z koše."
476
+
477
+ #: admin/page-entries.php:272
478
+ msgid "entries recovered from trash."
479
+ msgstr "položky obnoveny z koše."
480
+
481
+ #: admin/page-entries.php:274
482
+ msgid "No entries recovered from trash."
483
+ msgstr "Žádné položky nebyly obnoveny z koše."
484
+
485
+ #: admin/page-entries.php:278
486
+ msgid "entry removed permanently."
487
+ msgstr "Záznam trvale odstraněn."
488
+
489
+ #: admin/page-entries.php:280
490
+ msgid "entries removed permanently."
491
+ msgstr "Záznamy trvale odebrány."
492
+
493
+ #: admin/page-entries.php:282
494
+ msgid "No entries permanently removed."
495
+ msgstr "Žádné položky nebyly trvale odstraněny."
496
+
497
+ #: admin/page-entries.php:314
498
+ msgid "Please activate Akismet if you want to battle spam."
499
+ msgstr "Aktivujte si prosím Akismet Chcete-li bojovat proti spamu"
500
+
501
+ #: admin/page-entries.php:387
502
+ msgid "Guestbook entries"
503
+ msgstr "Záznamy knihy návštěv"
504
+
505
+ #: admin/page-entries.php:409
506
+ msgid "All"
507
+ msgstr "Vše"
508
+
509
+ #: admin/page-entries.php:414
510
+ msgid "Unlocked"
511
+ msgstr "Schválené"
512
+
513
+ #: admin/page-entries.php:418
514
+ msgid "New"
515
+ msgstr "Nové"
516
+
517
+ #: admin/page-entries.php:433
518
+ msgid "Mass edit actions"
519
+ msgstr "Hromadně upravit"
520
+
521
+ #: admin/page-entries.php:436
522
+ msgid "Recover from trash"
523
+ msgstr "Obnovit z koše"
524
+
525
+ #: admin/page-entries.php:437 admin/page-entries.php:454
526
+ msgid "Remove permanently"
527
+ msgstr "Trvale odstanit"
528
+
529
+ #: admin/page-entries.php:440
530
+ msgid "Mark as checked"
531
+ msgstr "Označit jako zkontrolované"
532
+
533
+ #: admin/page-entries.php:443
534
+ msgid "Mark as not checked"
535
+ msgstr "Označit jako nezkontrolované"
536
+
537
+ #: admin/page-entries.php:446
538
+ msgid "Mark as spam"
539
+ msgstr "Označit jako spam"
540
+
541
+ #: admin/page-entries.php:448
542
+ msgid "Mark as not spam"
543
+ msgstr "Označit jako Není spam"
544
+
545
+ #: admin/page-entries.php:450
546
+ msgid "Check with Akismet"
547
+ msgstr "Zkotrolovat s Akismet"
548
+
549
+ #: admin/page-entries.php:452
550
+ msgid "Move to trash"
551
+ msgstr "Přesunout do koše"
552
+
553
+ #: admin/page-entries.php:459
554
+ msgid "Apply"
555
+ msgstr "Aplikovat"
556
+
557
+ #: admin/page-entries.php:471
558
+ msgid "Showing:"
559
+ msgstr "Ukazuji:"
560
+
561
+ #: admin/page-entries.php:472
562
+ msgid "of"
563
+ msgstr "z"
564
+
565
+ #: admin/page-entries.php:539 admin/page-entries.php:555
566
+ msgid "ID"
567
+ msgstr "ID"
568
+
569
+ #: admin/page-entries.php:545 admin/page-entries.php:561
570
+ msgid "Date"
571
+ msgstr "Datum"
572
+
573
+ #: admin/page-entries.php:547 admin/page-entries.php:563
574
+ msgid "Entry (excerpt)"
575
+ msgstr "Autor"
576
+
577
+ #: admin/page-entries.php:548 admin/page-entries.php:564
578
+ msgid "Action"
579
+ msgstr "Akce"
580
+
581
+ #: admin/page-entries.php:577
582
+ msgid "No entries found."
583
+ msgstr "Nenalzeny žádné záznamy"
584
+
585
+ #: admin/page-export.php:27
586
+ msgid "Export guestbook entries."
587
+ msgstr ""
588
+
589
+ #: admin/page-export.php:40
590
+ msgid "Export guestbook entries from Gwolle-GB"
591
+ msgstr ""
592
+
593
+ #: admin/page-export.php:46
594
+ #, php-format
595
+ msgid "%d entries were found and will be exported."
596
+ msgstr ""
597
+
598
+ #: admin/page-export.php:49
599
+ msgid "The exporter will preserve the following data per entry:"
600
+ msgstr ""
601
+
602
+ #: admin/page-export.php:52 admin/page-import.php:348
603
+ #: admin/page-import.php:389 admin/page-settings.php:217
604
+ #: frontend/write.php:111 frontend/write.php:118
605
+ msgid "Name"
606
+ msgstr "Jméno"
607
+
608
+ #: admin/page-export.php:53 admin/page-import.php:349
609
+ #: admin/page-import.php:391
610
+ msgid "E-Mail address"
611
+ msgstr "Emailová adresa"
612
+
613
+ #: admin/page-export.php:54 admin/page-import.php:350
614
+ #: admin/page-import.php:392
615
+ msgid "URL/Website"
616
+ msgstr "URL / Webová stránka"
617
+
618
+ #: admin/page-export.php:56 admin/page-import.php:351
619
+ #: admin/page-import.php:393
620
+ msgid "Date of the entry"
621
+ msgstr "Čas záznamu"
622
+
623
+ #: admin/page-export.php:57 admin/page-import.php:352
624
+ #: admin/page-import.php:394
625
+ msgid "IP address"
626
+ msgstr "IP adresa"
627
+
628
+ #: admin/page-export.php:58
629
+ msgid "Host address"
630
+ msgstr ""
631
+
632
+ #: admin/page-export.php:59 admin/page-import.php:353
633
+ #: admin/page-import.php:395 admin/page-settings.php:301
634
+ #: admin/page-settings.php:716
635
+ msgid "Message"
636
+ msgstr "Zpráva"
637
+
638
+ #: admin/page-export.php:60 admin/page-import.php:355
639
+ msgid "\"is checked\" flag"
640
+ msgstr "\"označeno\" vlajka"
641
+
642
+ #: admin/page-export.php:61 admin/page-import.php:354
643
+ msgid "\"is spam\" flag"
644
+ msgstr "\"je spam\" vlajka"
645
+
646
+ #: admin/page-export.php:62
647
+ msgid "\"is trash\" flag"
648
+ msgstr ""
649
+
650
+ #: admin/page-export.php:64
651
+ msgid "The exporter does not delete any data, so your data will still be here."
652
+ msgstr ""
653
+
654
+ #: admin/page-export.php:70
655
+ msgid "Export all entries from this website."
656
+ msgstr ""
657
+
658
+ #: admin/page-export.php:74
659
+ msgid "Start export"
660
+ msgstr ""
661
+
662
+ #: admin/page-gwolle-gb.php:34
663
+ msgid "Overview"
664
+ msgstr "Přehled"
665
+
666
+ #: admin/page-gwolle-gb.php:48
667
+ msgid "Entry total"
668
+ msgstr "Záznam"
669
+
670
+ #: admin/page-gwolle-gb.php:51
671
+ msgid "Entries total"
672
+ msgstr "záznamy (ů) celkem"
673
+
674
+ #: admin/page-gwolle-gb.php:67
675
+ msgid "Unlocked entry"
676
+ msgstr "Schválený záznam"
677
+
678
+ #: admin/page-gwolle-gb.php:69
679
+ msgid "Unlocked entries"
680
+ msgstr "Schválené záznamy"
681
+
682
+ #: admin/page-gwolle-gb.php:87
683
+ msgid "New entries"
684
+ msgstr "Nových záznamů"
685
+
686
+ #: admin/page-gwolle-gb.php:103
687
+ msgid "Spam entry"
688
+ msgstr "Nevyžádaný"
689
+
690
+ #: admin/page-gwolle-gb.php:105
691
+ msgid "Spam entries"
692
+ msgstr "Nevyžádané"
693
+
694
+ #: admin/page-gwolle-gb.php:121
695
+ msgid "Trashed entry"
696
+ msgstr "Odstraněný"
697
+
698
+ #: admin/page-gwolle-gb.php:123
699
+ msgid "Trashed entries"
700
+ msgstr "Odstraněných"
701
+
702
+ #: admin/page-gwolle-gb.php:136
703
+ msgid "Write admin entry"
704
+ msgstr "Napsat záznam jako admin"
705
+
706
+ #: admin/page-gwolle-gb.php:149
707
+ msgid ""
708
+ "Sorry, but the function <code>mail()</code> required to notify you by mail "
709
+ "is not enabled in your PHP configuration. You might want to install a "
710
+ "WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can "
711
+ "contact your hosting provider to change this."
712
+ msgstr ""
713
+ "Omlouváme se, ale tato funkce <code>mail()</code> vyžaduje vás informovat e-"
714
+ "mailem. Toto není povoleno v konfiguraci PHP. Možná budete chtít "
715
+ "nainstalovat WordPress plugin, který používá protokol SMTP namísto "
716
+ "<code>mail()</code>. Nebo můžete kontaktovat svého poskytovatele hostingu "
717
+ "změnit"
718
+
719
+ #: admin/page-gwolle-gb.php:175
720
+ msgid "Send me an e-mail when a new entry has been posted."
721
+ msgstr "Pošlete mi e-mail, když bude vložen nový záznam"
722
+
723
+ #: admin/page-gwolle-gb.php:177
724
+ msgid "Save setting"
725
+ msgstr ""
726
+
727
+ #: admin/page-gwolle-gb.php:182
728
+ msgid "The following users have subscribed to this service:"
729
+ msgstr "Následující uživatelé odebírají tyto služby:"
730
+
731
+ #: admin/page-gwolle-gb.php:194 functions/function.log.php:173
732
+ msgid "You"
733
+ msgstr "Vy"
734
+
735
+ #: admin/page-gwolle-gb.php:203
736
+ msgid "No subscriber yet"
737
+ msgstr "Žádný odběratel"
738
+
739
+ #: admin/page-gwolle-gb.php:215
740
+ msgid "Icons by"
741
+ msgstr "ikony od"
742
+
743
+ #: admin/page-gwolle-gb.php:223
744
+ msgid "This is how you can get your guestbook displayed on your website:"
745
+ msgstr "Jak zobrazit knihu návštěv Gwolle na svém webu?"
746
+
747
+ #: admin/page-gwolle-gb.php:225
748
+ msgid "Create a new page."
749
+ msgstr "Vytvořte novou stránku"
750
+
751
+ #: admin/page-gwolle-gb.php:226
752
+ msgid ""
753
+ "Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the "
754
+ "content."
755
+ msgstr "Nastavte název a do obsahu vepište \"[gwolle_gb]\" (bez uvozovek)"
756
+
757
+ #: admin/page-gwolle-gb.php:227
758
+ msgid ""
759
+ "It is probably a good idea to disable comments on that page; otherwise, your "
760
+ "visitors might get a little confused."
761
+ msgstr ""
762
+ "Je taky dobrý zakázat komentáře pro tuto stránku; jinak budou návštěvníci "
763
+ "dost zmatený"
764
+
765
+ #: admin/page-gwolle-gb.php:234
766
+ msgid "These entries will be visible for your visitors:"
767
+ msgstr "Tyto položky budou viditelné pro návštěvníky:"
768
+
769
+ #: admin/page-gwolle-gb.php:236
770
+ msgid "Marked as Checked."
771
+ msgstr "Záznam musí být označen jako zkontrolovaný"
772
+
773
+ #: admin/page-gwolle-gb.php:237
774
+ msgid "Not marked as Spam."
775
+ msgstr "Záznam nesmí být označen jako spam"
776
+
777
+ #: admin/page-gwolle-gb.php:238
778
+ msgid "Not marked as Trash."
779
+ msgstr "Záznam nesmí být označen jako odstraněný"
780
+
781
+ #: admin/page-gwolle-gb.php:242
782
+ msgid "The Main Menu counter counts the following entries:"
783
+ msgstr "Čítač v hlavním menu počítá následující záznamy:"
784
+
785
+ #: admin/page-gwolle-gb.php:244
786
+ msgid "Marked as Unchecked (You might want to moderate them)."
787
+ msgstr "- označené jako nezkontrolované (Možná s nimi chcete pracovat)"
788
+
789
+ #: admin/page-gwolle-gb.php:245
790
+ msgid "Not marked as Spam (You might want to check them)."
791
+ msgstr "- neoznačené jako spam (Možná byste je měli zkontrolovat)"
792
+
793
+ #: admin/page-gwolle-gb.php:246
794
+ msgid "Not marked as Trash (You decide what goes to the trash)."
795
+ msgstr "- označeny jako odstraněné (Rozhodněte se, co jde do koše)"
796
+
797
+ #: admin/page-gwolle-gb.php:255
798
+ msgid "Donate to the EFF."
799
+ msgstr ""
800
+
801
+ #: admin/page-gwolle-gb.php:259
802
+ msgid ""
803
+ "The Electronic Frontier Foundation is one of the few organisations that "
804
+ "wants to keep the internet a free place."
805
+ msgstr ""
806
+
807
+ #: admin/page-gwolle-gb.php:260
808
+ msgid "Please donate to the EFF."
809
+ msgstr ""
810
+
811
+ #: admin/page-gwolle-gb.php:265 admin/page-gwolle-gb.php:269
812
+ msgid "Donate to the maintainer."
813
+ msgstr ""
814
+
815
+ #: admin/page-gwolle-gb.php:268
816
+ msgid ""
817
+ "If you rather want to donate to the maintainer of the plugin, you can donate "
818
+ "through Paypal."
819
+ msgstr ""
820
+
821
+ #: admin/page-gwolle-gb.php:269
822
+ msgid "Donate through Paypal to"
823
+ msgstr ""
824
+
825
+ #: admin/page-gwolle-gb.php:338
826
+ msgid "Welcome to the Guestbook!"
827
+ msgstr "Vítejte v knize návštěv!"
828
+
829
+ #: admin/page-gwolle-gb.php:339
830
+ msgid "E-mail Notifications"
831
+ msgstr ""
832
+
833
+ #: admin/page-gwolle-gb.php:340
834
+ msgid "This plugin uses the following scripts/programs/images:"
835
+ msgstr "Tento plugin používá následující skripty scripts/programs/images:"
836
+
837
+ #: admin/page-gwolle-gb.php:341 admin/page-gwolle-gb.php:342
838
+ msgid "Help"
839
+ msgstr "Nápověda"
840
+
841
+ #: admin/page-gwolle-gb.php:343
842
+ msgid "Donate"
843
+ msgstr ""
844
+
845
+ #: admin/page-gwolle-gb.php:348
846
+ msgid "Gwolle Guestbook"
847
+ msgstr "Kniha návštěv Gwolle GB"
848
+
849
+ #: admin/page-import.php:88
850
+ msgid ""
851
+ "I'm sorry, but I wasn't able to import entries from DMSGuestbook "
852
+ "successfully."
853
+ msgstr ""
854
+
855
+ #: admin/page-import.php:90
856
+ msgid "1 entry imported successfully from DMSGuestbook."
857
+ msgstr ""
858
+
859
+ #: admin/page-import.php:92
860
+ #, php-format
861
+ msgid "%d entries imported successfully from DMSGuestbook."
862
+ msgstr ""
863
+
864
+ #: admin/page-import.php:96
865
+ msgid ""
866
+ "<strong>Nothing to import.</strong> The guestbook you've chosen does not "
867
+ "contain any entries."
868
+ msgstr ""
869
+ "<strong> nic k importu. </strong> do knihy návštěv. Ty, které jste vybrali, "
870
+ "neobsahují žádné položky"
871
+
872
+ #: admin/page-import.php:101
873
+ msgid "I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook."
874
+ msgstr ""
875
+
876
+ #: admin/page-import.php:106 admin/page-import.php:168
877
+ msgid "You haven't chosen a guestbook. Please select one and try again."
878
+ msgstr "Nezvolili jste knihu návštěv. Vyberte jednu a zkuste to znovu"
879
+
880
+ #: admin/page-import.php:151
881
+ msgid ""
882
+ "I'm sorry, but I wasn't able to import comments from that page successfully."
883
+ msgstr ""
884
+
885
+ #: admin/page-import.php:153
886
+ msgid "1 entry imported successfully from WordPress comments."
887
+ msgstr ""
888
+
889
+ #: admin/page-import.php:155
890
+ #, php-format
891
+ msgid "%d entries imported successfully from WordPress comments."
892
+ msgstr ""
893
+
894
+ #: admin/page-import.php:159
895
+ msgid ""
896
+ "<strong>Nothing to import.</strong> The page you've chosen does not have any "
897
+ "comments."
898
+ msgstr ""
899
+
900
+ #: admin/page-import.php:163
901
+ msgid "You haven't chosen a page. Please select one and try again."
902
+ msgstr ""
903
+
904
+ #: admin/page-import.php:181
905
+ msgid "Your filesize is too large."
906
+ msgstr ""
907
+
908
+ #: admin/page-import.php:197
909
+ msgid "Invalid file format."
910
+ msgstr ""
911
+
912
+ #: admin/page-import.php:222
913
+ msgid ""
914
+ "It seems your CSV file is from an export that is not compatible with this "
915
+ "version of Gwolle-GB."
916
+ msgstr ""
917
+
918
+ #: admin/page-import.php:231 admin/page-import.php:260
919
+ msgid "Your data seems to be corrupt. Import failed."
920
+ msgstr ""
921
+
922
+ #: admin/page-import.php:269
923
+ msgid "I'm sorry, but I wasn't able to import entries from the CSV file."
924
+ msgstr ""
925
+
926
+ #: admin/page-import.php:271
927
+ msgid "1 entry imported successfully from the CSV file."
928
+ msgstr ""
929
+
930
+ #: admin/page-import.php:273
931
+ #, php-format
932
+ msgid "%d entries imported successfully from the CSV file."
933
+ msgstr ""
934
+
935
+ #: admin/page-import.php:282
936
+ msgid "Your upload triggered the following error:"
937
+ msgstr ""
938
+
939
+ #: admin/page-import.php:295
940
+ msgid "Import guestbook entries."
941
+ msgstr ""
942
+
943
+ #: admin/page-import.php:314
944
+ msgid "Import guestbook entries from DMSGuestbook"
945
+ msgstr "Importovat položky knihy návštěv z DMSGuestbook"
946
+
947
+ #: admin/page-import.php:343
948
+ #, php-format
949
+ msgid "%d entries were found and will be imported."
950
+ msgstr ""
951
+
952
+ #: admin/page-import.php:346 admin/page-import.php:387
953
+ msgid "The importer will preserve the following data per entry:"
954
+ msgstr "Import uchová následující záznamy:"
955
+
956
+ #: admin/page-import.php:357 admin/page-import.php:398
957
+ msgid ""
958
+ "However, data such as HTML formatting is not supported by Gwolle-GB and "
959
+ "<strong>will not</strong> be imported."
960
+ msgstr ""
961
+
962
+ #: admin/page-import.php:359 admin/page-import.php:400
963
+ msgid ""
964
+ "The importer does not delete any data, so you can go back whenever you want."
965
+ msgstr ""
966
+
967
+ #: admin/page-import.php:365
968
+ msgid "Import all entries from DMSGuestbook."
969
+ msgstr ""
970
+
971
+ #: admin/page-import.php:369 admin/page-import.php:442
972
+ #: admin/page-import.php:461
973
+ msgid "Start import"
974
+ msgstr "Zahájit import"
975
+
976
+ #: admin/page-import.php:372
977
+ msgid "DMSGuestbook was not found."
978
+ msgstr ""
979
+
980
+ #: admin/page-import.php:381
981
+ msgid "Import guestbook entries from WordPress comments"
982
+ msgstr ""
983
+
984
+ #: admin/page-import.php:390
985
+ msgid "User ID"
986
+ msgstr ""
987
+
988
+ #: admin/page-import.php:396
989
+ msgid "\"approved\" status"
990
+ msgstr ""
991
+
992
+ #: admin/page-import.php:403
993
+ msgid "Select a page to import the comments from:"
994
+ msgstr ""
995
+
996
+ #: admin/page-import.php:405
997
+ msgid "Select"
998
+ msgstr ""
999
+
1000
+ #: admin/page-import.php:421
1001
+ msgid "No Comments"
1002
+ msgstr ""
1003
+
1004
+ #: admin/page-import.php:423
1005
+ msgid " Comments"
1006
+ msgstr ""
1007
+
1008
+ #: admin/page-import.php:425
1009
+ msgid "1 Comment"
1010
+ msgstr ""
1011
+
1012
+ #: admin/page-import.php:438
1013
+ msgid "Import all entries from this page."
1014
+ msgstr ""
1015
+
1016
+ #: admin/page-import.php:450
1017
+ msgid "Import guestbook entries from Gwolle-GB"
1018
+ msgstr ""
1019
+
1020
+ #: admin/page-import.php:456
1021
+ msgid "Select a CSV file with exported entries to import again:"
1022
+ msgstr ""
1023
+
1024
+ #: admin/page-settings.php:197
1025
+ msgid "Form"
1026
+ msgstr ""
1027
+
1028
+ #: admin/page-settings.php:198
1029
+ msgid "Reading"
1030
+ msgstr ""
1031
+
1032
+ #: admin/page-settings.php:199
1033
+ msgid "Admin"
1034
+ msgstr ""
1035
+
1036
+ #: admin/page-settings.php:200 frontend/write.php:191 frontend/write.php:217
1037
+ msgid "Anti-spam"
1038
+ msgstr "Anti-spam"
1039
+
1040
+ #: admin/page-settings.php:201
1041
+ msgid "E-mail"
1042
+ msgstr ""
1043
+
1044
+ #: admin/page-settings.php:202 admin/page-settings.php:731
1045
+ msgid "Uninstall"
1046
+ msgstr "Odinstalovat"
1047
+
1048
+ #: admin/page-settings.php:208
1049
+ msgid "Configure the form that is shown to visitors."
1050
+ msgstr ""
1051
+
1052
+ #: admin/page-settings.php:224 admin/page-settings.php:245
1053
+ #: admin/page-settings.php:266 admin/page-settings.php:287
1054
+ #: admin/page-settings.php:308 admin/page-settings.php:329
1055
+ #: admin/page-settings.php:345
1056
+ msgid "Enabled"
1057
+ msgstr ""
1058
+
1059
+ #: admin/page-settings.php:232 admin/page-settings.php:253
1060
+ #: admin/page-settings.php:274 admin/page-settings.php:295
1061
+ #: admin/page-settings.php:316
1062
+ msgid "Mandatory"
1063
+ msgstr ""
1064
+
1065
+ #: admin/page-settings.php:238 frontend/write.php:125 frontend/write.php:132
1066
+ msgid "City"
1067
+ msgstr "Město"
1068
+
1069
+ #: admin/page-settings.php:259 frontend/write.php:139 frontend/write.php:146
1070
+ msgid "Email"
1071
+ msgstr "Email"
1072
+
1073
+ #: admin/page-settings.php:322
1074
+ msgid "Custom Anti-spam"
1075
+ msgstr ""
1076
+
1077
+ #: admin/page-settings.php:332 admin/page-settings.php:348
1078
+ msgid "When enabled it is mandatory."
1079
+ msgstr ""
1080
+
1081
+ #: admin/page-settings.php:338 admin/page-settings.php:751
1082
+ msgid "reCAPTCHA"
1083
+ msgstr ""
1084
+
1085
+ #: admin/page-settings.php:354 admin/page-settings.php:441
1086
+ #: admin/page-settings.php:497 admin/page-settings.php:630
1087
+ #: admin/page-settings.php:695
1088
+ msgid "Save settings"
1089
+ msgstr "Uložit nastavení"
1090
+
1091
+ #: admin/page-settings.php:373
1092
+ msgid "Entries per page on the frontend"
1093
+ msgstr "Záznamů na stránku"
1094
+
1095
+ #: admin/page-settings.php:388
1096
+ msgid "Number of entries shown on the frontend."
1097
+ msgstr "Počet zobrazovaných záznamů"
1098
+
1099
+ #: admin/page-settings.php:394
1100
+ msgid "Line breaks"
1101
+ msgstr ""
1102
+
1103
+ #: admin/page-settings.php:401
1104
+ msgid "Show line breaks."
1105
+ msgstr "Zobrazit konce řádků."
1106
+
1107
+ #: admin/page-settings.php:403
1108
+ msgid ""
1109
+ "Show line breaks as the entry authors entered them. (May result in very long "
1110
+ "entries. Is turned off by default.)"
1111
+ msgstr ""
1112
+ "Zobrazit konce řádků jak je zadal autor. (Může dojít k velmi dlouhých "
1113
+ "záznamům. Funkce je ve výchozím nastavení vypnutá)"
1114
+
1115
+ #: admin/page-settings.php:409
1116
+ msgid "Smileys"
1117
+ msgstr ""
1118
+
1119
+ #: admin/page-settings.php:416
1120
+ msgid "Display smileys as images."
1121
+ msgstr ""
1122
+
1123
+ #: admin/page-settings.php:418
1124
+ #, php-format
1125
+ msgid ""
1126
+ "Replaces smileys in entries like :) with their image %s. Uses the WP smiley "
1127
+ "replacer, so check on that one if you'd like to add new/more smileys."
1128
+ msgstr ""
1129
+
1130
+ #: admin/page-settings.php:424
1131
+ msgid "Links"
1132
+ msgstr ""
1133
+
1134
+ #: admin/page-settings.php:431
1135
+ msgid "Link authors' name to their website."
1136
+ msgstr "Odkaz na autorovi webové stránky"
1137
+
1138
+ #: admin/page-settings.php:433
1139
+ msgid ""
1140
+ "The author of an entry can set his/her website. If this setting is checked, "
1141
+ "his/her name will be a link to that website."
1142
+ msgstr ""
1143
+ "Autor záznamu může vložit jeho / její webové stránky. Je-li toto nastavení "
1144
+ "aktivní, bude jeho / její jméno odkaz na této internetové stránky"
1145
+
1146
+ #: admin/page-settings.php:460
1147
+ msgid "Entries per page in the admin"
1148
+ msgstr "Počet záznamů (admin)"
1149
+
1150
+ #: admin/page-settings.php:475
1151
+ msgid "Number of entries shown in the admin."
1152
+ msgstr "Počet záznamů zobrazených jako admin"
1153
+
1154
+ #: admin/page-settings.php:481
1155
+ msgid "Entry icons"
1156
+ msgstr "ikony záznamů"
1157
+
1158
+ #: admin/page-settings.php:487
1159
+ msgid "Show entry icons"
1160
+ msgstr "Zobrazit ikony záznamů"
1161
+
1162
+ #: admin/page-settings.php:489
1163
+ msgid ""
1164
+ "These icons are shown in every entry row of the admin list, so that you know "
1165
+ "its status (checked, spam and trash)."
1166
+ msgstr ""
1167
+ "Tyto ikony jsou zobrazeny v každém vstupním řádku správcovského seznamu, "
1168
+ "takže znáte jeho stav (spam, zkontrolovat a odstranit)"
1169
+
1170
+ #: admin/page-settings.php:516
1171
+ msgid "Moderate Guestbook"
1172
+ msgstr "Spravovat knihu návštěv"
1173
+
1174
+ #: admin/page-settings.php:524
1175
+ msgid "Moderate entries before publishing them."
1176
+ msgstr "Spravovat záznamy před jejich publikováním"
1177
+
1178
+ #: admin/page-settings.php:528
1179
+ msgid ""
1180
+ "New entries have to be unlocked by a moderator before they are visible to "
1181
+ "the public."
1182
+ msgstr "Nové záznamy musí být zkontrolovány administrátorem před zveřejněním."
1183
+
1184
+ #: admin/page-settings.php:530
1185
+ msgid ""
1186
+ "It is recommended that you turn this on, because you are responsible for the "
1187
+ "content on your website."
1188
+ msgstr ""
1189
+ "Je to doporučeno mít funkci zapnutou, protože VY odpovídáte za obsah vašeho "
1190
+ "webu"
1191
+
1192
+ #: admin/page-settings.php:541
1193
+ msgid "Learn more about Akismet..."
1194
+ msgstr "Více o Akismet,,,"
1195
+
1196
+ #: admin/page-settings.php:541 admin/page-settings.php:599
1197
+ msgid "What's that?"
1198
+ msgstr "Co je to?"
1199
+
1200
+ #: admin/page-settings.php:551
1201
+ msgid ""
1202
+ "Akismet helps you to fight spam. It's free and easy to install. Download and "
1203
+ "install it today to stop spam in your guestbook."
1204
+ msgstr ""
1205
+ "Akismet vám pomůže v boji proti spamu. Je to zdarma a snadno se instaluje. "
1206
+ "Stáhněte si a nainstalujte jej dnes a zastavíte spam v návštěvní knize"
1207
+
1208
+ #: admin/page-settings.php:554
1209
+ #, php-format
1210
+ msgid ""
1211
+ "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1212
+ "can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1213
+ msgstr ""
1214
+
1215
+ #: admin/page-settings.php:563
1216
+ msgid "Use Akismet"
1217
+ msgstr "Použít Akismet"
1218
+
1219
+ #: admin/page-settings.php:565
1220
+ msgid ""
1221
+ "The WordPress API key has been found, so you can start using Akismet right "
1222
+ "now."
1223
+ msgstr ""
1224
+ "WordPress API klíč byl nalezen, takže můžete začít používat Akismet hned teď"
1225
+
1226
+ #: admin/page-settings.php:577
1227
+ msgid "Custom Anti-Spam Security Question"
1228
+ msgstr ""
1229
+
1230
+ #: admin/page-settings.php:580
1231
+ msgid "12 + six"
1232
+ msgstr ""
1233
+
1234
+ #: admin/page-settings.php:581
1235
+ msgid "Custom security question to battle spam."
1236
+ msgstr ""
1237
+
1238
+ #: admin/page-settings.php:583
1239
+ msgid "18"
1240
+ msgstr ""
1241
+
1242
+ #: admin/page-settings.php:584
1243
+ msgid "The answer to your security question."
1244
+ msgstr ""
1245
+
1246
+ #: admin/page-settings.php:586
1247
+ msgid ""
1248
+ "You can ask your visitors to answer a custom security question, so only real "
1249
+ "people can post an entry."
1250
+ msgstr ""
1251
+
1252
+ #: admin/page-settings.php:599
1253
+ msgid "Learn more about reCAPTCHA..."
1254
+ msgstr "Více o Recaptcha..."
1255
+
1256
+ #: admin/page-settings.php:610
1257
+ msgid "<strong>Site (Public)</strong> key of your reCAPTCHA account"
1258
+ msgstr "<strong>Veřejný</strong> klíč od vašeho ReCAPTCHA účtu"
1259
+
1260
+ #: admin/page-settings.php:613
1261
+ msgid "<strong>Secret</strong> key of your reCAPTCHA account"
1262
+ msgstr "<strong>Soukromý</strong> klíč od vašeho RreCAPTCHA účtu"
1263
+
1264
+ #: admin/page-settings.php:615
1265
+ msgid "The keys can be found at your"
1266
+ msgstr "Klíče naleznete zde:"
1267
+
1268
+ #: admin/page-settings.php:615
1269
+ msgid "Go to my reCAPTCHA sites..."
1270
+ msgstr "Přejít k mým reCAPTCHA stránkám..."
1271
+
1272
+ #: admin/page-settings.php:615
1273
+ msgid "reCAPTCHA sites overview"
1274
+ msgstr "Přehled reCAPTCHA stránek"
1275
+
1276
+ #: admin/page-settings.php:619
1277
+ msgid ""
1278
+ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1279
+ "your theme or another plugin. The reCAPTCHA library in Gwolle-GB will not be "
1280
+ "loaded, and the found one will be used instead. This might give unexpected "
1281
+ "results."
1282
+ msgstr ""
1283
+
1284
+ #: admin/page-settings.php:621
1285
+ msgid ""
1286
+ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1287
+ "your theme or another plugin. However, this is an old and incompatible "
1288
+ "version, so reCAPTCHA will not be used for Gwolle-GB."
1289
+ msgstr ""
1290
+
1291
+ #: admin/page-settings.php:649
1292
+ msgid "Admin mail content"
1293
+ msgstr "Obsah mailu (admin)"
1294
+
1295
+ #: admin/page-settings.php:654 frontend/posthandling.php:304
1296
+ msgid ""
1297
+ "Hello,\n"
1298
+ "\n"
1299
+ "There is a new guestbook entry at '%blog_name%'.\n"
1300
+ "You can check it at %entry_management_url%.\n"
1301
+ "\n"
1302
+ "Have a nice day!\n"
1303
+ "Your Gwolle-GB-Mailer"
1304
+ msgstr ""
1305
+
1306
+ #: admin/page-settings.php:661
1307
+ msgid ""
1308
+ "You can set the content of the mail that a notification subscriber gets on "
1309
+ "new entries. The following tags are supported:"
1310
+ msgstr ""
1311
+ "Můžete nastavit obsah e-mailu, který účastník dostane při zadání nové "
1312
+ "položky. Následující tagy jsou podporovány:"
1313
+
1314
+ #: admin/page-settings.php:677
1315
+ msgid "Admin mail from address"
1316
+ msgstr ""
1317
+
1318
+ #: admin/page-settings.php:683
1319
+ msgid ""
1320
+ "You can set the email address that is used for the From header of the mail "
1321
+ "that a notification subscriber gets on new entries."
1322
+ msgstr ""
1323
+
1324
+ #: admin/page-settings.php:685
1325
+ msgid "By default the main admin address is used from General >> Settings."
1326
+ msgstr ""
1327
+
1328
+ #: admin/page-settings.php:719
1329
+ msgid "The entries and settings have been removed."
1330
+ msgstr ""
1331
+
1332
+ #: admin/page-settings.php:720
1333
+ msgid "The plugin is deactivated."
1334
+ msgstr ""
1335
+
1336
+ #: admin/page-settings.php:721
1337
+ msgid "You can now go to your"
1338
+ msgstr ""
1339
+
1340
+ #: admin/page-settings.php:721
1341
+ msgid "dashboard."
1342
+ msgstr ""
1343
+
1344
+ #: admin/page-settings.php:733
1345
+ msgid ""
1346
+ "Uninstalling means that all database entries are removed (settings and "
1347
+ "entries)."
1348
+ msgstr ""
1349
+ "Odinstalace znamená, že všechny položky databáze budou odstraněny (nastavení "
1350
+ "a položky)"
1351
+
1352
+ #: admin/page-settings.php:735
1353
+ msgid "This can <strong>not</strong> be undone."
1354
+ msgstr "To <strong>nemůže</ strong> být nedoděláno"
1355
+
1356
+ #: admin/page-settings.php:742
1357
+ msgid "Confirm"
1358
+ msgstr ""
1359
+
1360
+ #: admin/page-settings.php:745
1361
+ msgid "Yes, I'm absolutely sure of this. Proceed!"
1362
+ msgstr "Ano, jsem si naprosto jistý! Pokračovat!"
1363
+
1364
+ #: admin/page-settings.php:754
1365
+ msgid "Also delete the reCAPTCHA keys"
1366
+ msgstr ""
1367
+
1368
+ #: admin/page-settings.php:762
1369
+ msgid "Uninstall &raquo;"
1370
+ msgstr "Odinstalace &raquo;"
1371
+
1372
+ #: frontend/posthandling.php:191 frontend/posthandling.php:205
1373
+ msgid "There were errors submitting your guestbook entry."
1374
+ msgstr "Došlo k chybám při odeslání záznamu knihy návštěv"
1375
+
1376
+ #: frontend/posthandling.php:257
1377
+ msgid "Double post: An entry with the data you entered has already been saved."
1378
+ msgstr "Dvojí příspěvek: položka s daty, které jste zadali již byla uložena."
1379
+
1380
+ #: frontend/posthandling.php:273
1381
+ msgid "Thank you for your entry."
1382
+ msgstr "Díky za reakci ;)"
1383
+
1384
+ #: frontend/posthandling.php:275
1385
+ msgid "We will review it and unlock it in a short while."
1386
+ msgstr "Zkontroluji to a nechám zobrazit co nejdříve"
1387
+
1388
+ #: frontend/posthandling.php:309
1389
+ msgid "New Guestbook Entry"
1390
+ msgstr "Nový záznam do knihy návštěv"
1391
+
1392
+ #: frontend/read.php:77
1393
+ msgid "Previous page"
1394
+ msgstr "Předchozí stránka"
1395
+
1396
+ #: frontend/read.php:90 frontend/read.php:98 frontend/read.php:104
1397
+ #: frontend/read.php:119 frontend/read.php:130
1398
+ msgid "Page"
1399
+ msgstr "Stránka"
1400
+
1401
+ #: frontend/read.php:101 frontend/read.php:131
1402
+ msgid "Next page"
1403
+ msgstr "Další stránka"
1404
+
1405
+ #: frontend/read.php:141
1406
+ msgid "(no entries yet)"
1407
+ msgstr "(žádné záznamy)"
1408
+
1409
+ #: frontend/read.php:177
1410
+ msgid "from"
1411
+ msgstr "z místa"
1412
+
1413
+ #: frontend/read.php:181
1414
+ msgid "wrote at"
1415
+ msgstr "napsal(a) dne"
1416
+
1417
+ #: frontend/widget.php:12
1418
+ msgid "Displays the recent guestbook entries."
1419
+ msgstr "Zobrazuje nedávné knize návštěv"
1420
+
1421
+ #: frontend/widget.php:30 frontend/widget.php:147
1422
+ msgid "Visit guestbook"
1423
+ msgstr "Shlédni knihu návštěv"
1424
+
1425
+ #: frontend/widget.php:112
1426
+ msgid "Click here to get to the guestbook."
1427
+ msgstr "Klikněte sem pro vstup do knihy návštěv."
1428
+
1429
+ #: frontend/widget.php:161
1430
+ msgid "Title:"
1431
+ msgstr "Název:"
1432
+
1433
+ #: frontend/widget.php:167
1434
+ msgid "Number of entries:"
1435
+ msgstr "Počet záznamů:"
1436
+
1437
+ #: frontend/widget.php:183
1438
+ msgid "Best entries to show:"
1439
+ msgstr ""
1440
+
1441
+ #: frontend/widget.php:185
1442
+ msgid "List of entry_id's, comma-separated"
1443
+ msgstr ""
1444
+
1445
+ #: frontend/widget.php:189
1446
+ msgid "Number of words for each entry:"
1447
+ msgstr "Počet slov v záznamu:"
1448
+
1449
+ #: frontend/widget.php:205
1450
+ msgid "Link text:"
1451
+ msgstr "Text odkazu:"
1452
+
1453
+ #: frontend/widget.php:211
1454
+ msgid "Select the page of the guestbook:"
1455
+ msgstr "Vyberte stránku knihy návštěv:"
1456
+
1457
+ #: frontend/widget.php:213
1458
+ msgid "Select page"
1459
+ msgstr "Vybrat stránku"
1460
+
1461
+ #: frontend/write.php:93
1462
+ msgid "Write a new entry."
1463
+ msgstr "Napište nový záznam"
1464
+
1465
+ #: frontend/write.php:106
1466
+ msgid "Write a new entry for the Guestbook"
1467
+ msgstr "Napiště nový záznam do knihy návštěv"
1468
+
1469
+ #: frontend/write.php:197
1470
+ msgid "Answer"
1471
+ msgstr ""
1472
+
1473
+ #: frontend/write.php:198
1474
+ msgid "Question:"
1475
+ msgstr ""
1476
+
1477
+ #: frontend/write.php:237
1478
+ msgid "Submit"
1479
+ msgstr "Odeslat"
1480
+
1481
+ #: frontend/write.php:242
1482
+ msgid "Fields marked with * are obligatory."
1483
+ msgstr "Pole označená * jsou povinná"
1484
+
1485
+ #: frontend/write.php:245
1486
+ msgid "The E-mail address wil not be published."
1487
+ msgstr ""
1488
+
1489
+ #: frontend/write.php:248
1490
+ #, php-format
1491
+ msgid ""
1492
+ "For security reasons we save the ip address <span id=\"gwolle_gb_ip\">%s</"
1493
+ "span>."
1494
+ msgstr ""
1495
+
1496
+ #: frontend/write.php:253
1497
+ msgid "Your entry will be visible in the guestbook after we reviewed it."
1498
+ msgstr "Váš záznam v knize návštěv bude viditelná až po tom, co jej prohlédnu"
1499
+
1500
+ #: frontend/write.php:256
1501
+ msgid "We reserve our right to edit, delete, or not publish entries."
1502
+ msgstr "Rezervuji si právo editovat, smazat nebo nepublikovat Váš záznam"
1503
+
1504
+ #: functions/function.log.php:94
1505
+ msgid "Entry has been locked."
1506
+ msgstr "Záznam byl uzamčen"
1507
+
1508
+ #: functions/function.log.php:95
1509
+ msgid "Entry has been checked."
1510
+ msgstr "Záznam byl zkontrolován"
1511
+
1512
+ #: functions/function.log.php:96
1513
+ msgid "Entry marked as spam."
1514
+ msgstr "Záznam označen jako spam"
1515
+
1516
+ #: functions/function.log.php:97
1517
+ msgid "Entry marked as not spam."
1518
+ msgstr "Záznam označen jako není spam"
1519
+
1520
+ #: functions/function.log.php:98
1521
+ msgid "Entry has been edited."
1522
+ msgstr "Záznam byl upraven"
1523
+
1524
+ #: functions/function.log.php:99
1525
+ msgid "Imported from DMSGuestbook"
1526
+ msgstr "Importováno z DMSGuestbook"
1527
+
1528
+ #: functions/function.log.php:100
1529
+ msgid "Imported from WordPress comments"
1530
+ msgstr ""
1531
+
1532
+ #: functions/function.log.php:101
1533
+ msgid "Imported from Gwolle-GB"
1534
+ msgstr ""
1535
+
1536
+ #: functions/function.log.php:102
1537
+ msgid "Exported to CSV file"
1538
+ msgstr ""
1539
+
1540
+ #: functions/function.log.php:103
1541
+ msgid "Entry has been trashed."
1542
+ msgstr "Záznam byl přesunut do koše"
1543
+
1544
+ #: functions/function.log.php:104
1545
+ msgid "Entry has been untrashed."
1546
+ msgstr "Záznam byl obnoven z koše"
1547
+
1548
+ #: functions/function.misc.php:46
1549
+ msgid "No content to display. This entry is empty."
1550
+ msgstr "Nic k zobrazení. Záznam je prázdný"
1551
+
1552
+ #~ msgid "Successfully uninstalled"
1553
+ #~ msgstr "Úspěšně odinstalováno"
1554
+
1555
+ #~ msgid "You successfully uninstalled Gwolle-GB."
1556
+ #~ msgstr "Úspěšně jste odinstalovali Gwolle-GB"
1557
+
1558
+ #~ msgid "Use reCAPTCHA"
1559
+ #~ msgstr "Použít reCAPTCHA"
1560
+
1561
+ #~ msgid "Appearance"
1562
+ #~ msgstr "Vzhled"
1563
+
1564
+ #~ msgid "Display smilies as images."
1565
+ #~ msgstr "Zobrazit smajlíky jako obrázky"
1566
+
1567
+ #~ msgid "I'm aware of that, continue!"
1568
+ #~ msgstr "Jsem si toho vědom, pokračujte!"
1569
+
1570
+ #~ msgid ""
1571
+ #~ "I really don't want to bother you; this page just exists to prevent you "
1572
+ #~ "from accidentally deleting all your entries.<br />Please check the "
1573
+ #~ "'uninstall' checkbox and hit the button; all tables (including their "
1574
+ #~ "rows) and all settings of Gwolle-GB will be deleted.<br /><br />Are you "
1575
+ #~ "REALLY sure you wan't to continue? There's no 'undo'."
1576
+ #~ msgstr ""
1577
+ #~ "Fakt nechci prudit; tahle stránka je tu proto, abyste si nechtěně "
1578
+ #~ "nesmazali všechny záznamy. <br/> Zkontrolujte prosím políčko \"odinstalace"
1579
+ #~ "\" a stiskněte tlačítko.; Všechny tabulky (včetně jejich řadků) a všechna "
1580
+ #~ "nastavení Gwolle GB, budou vymazány. <br/> <br/> Jste si opravdu jisti, "
1581
+ #~ "že chcete pokračovat? Neexistuje žádné \"zpět\""
1582
+
1583
+ #~ msgid ""
1584
+ #~ "You now may deactivate the plugin using the <a href=\"%1\" title=\"Go to "
1585
+ #~ "the plugin manager...\">plugin manager</a> or/and delete the plugin from "
1586
+ #~ "your webserver."
1587
+ #~ msgstr ""
1588
+ #~ "Nyní lze deaktivovat plugin pomocí <a href=\"%1\" title=\" Jděte do "
1589
+ #~ "pluginem manageru...\"> Plugin Manager </a> a / nebo odstranit plugin z "
1590
+ #~ "vašeho webového serveru"
1591
+
1592
+ #~ msgid "Allright, we're done. <a href=\"%1\">Click here to continue...</a>"
1593
+ #~ msgstr ""
1594
+ #~ "Tak jo, jsme hotovi. <a href=\"%1\">Klidněte zde pro pokračování...</a>"
1595
+
1596
+ #~ msgid ""
1597
+ #~ "It looks like there has been an error. <a href=\"%1\">Click here to "
1598
+ #~ "continue...</a>"
1599
+ #~ msgstr ""
1600
+ #~ "Vypadá to, že došlo k chybě. <a href=\"%1\"> Klikněte zde pro "
1601
+ #~ "pokračování ... </a>"
1602
+
1603
+ #~ msgid ""
1604
+ #~ "Line breaks will not be visible to the visitors due to your <a href="
1605
+ #~ "\"%1\">settings</a>."
1606
+ #~ msgstr ""
1607
+ #~ "Konce řádků nebudou viditelné pro návštěvníky kvůli <a href=\"%1\"> "
1608
+ #~ "nastavení </a>"
1609
+
1610
+ #~ msgid "%1 entries were found and will be imported."
1611
+ #~ msgstr "%1 záznamy (ů) bylo nalezeno a budou importovány"
1612
+
1613
+ #~ msgid ""
1614
+ #~ "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1615
+ #~ "can enter it at the <a href=\"%1\">Akismet configuration page</a>."
1616
+ #~ msgstr ""
1617
+ #~ "Omlouvám se, ale nebyl schopen najít váš <strong>WordPress API klíč</"
1618
+ #~ "strong>. Můžete jej zadat na <a href=\"%1\"> konfigurační stránce "
1619
+ #~ "Akismet</a>."
1620
+
1621
+ #~ msgid ""
1622
+ #~ "Replaces smilies in entries like :) with their image %1. Uses the WP "
1623
+ #~ "smiley replacer, so check on that one if you'd like to add new/more "
1624
+ #~ "smilies."
1625
+ #~ msgstr ""
1626
+ #~ "Nahrazuje smajlíky v položkách (místo :) -> %1. Používá WP smajlíky."
1627
+
1628
+ #~ msgid ""
1629
+ #~ "For security reasons we save the ip address <span id=\"ip\">%1</span>."
1630
+ #~ msgstr ""
1631
+ #~ "V rámci bezpečnosti jsme k záznamu uložili IP adresu <span id=\"ip\">%1</"
1632
+ #~ "span>"
1633
+
1634
+ #~ msgid "This entry is Not Checked."
1635
+ #~ msgstr "Tento záznam není zkontrolován"
1636
+
1637
+ #~ msgid "This entry is Checked"
1638
+ #~ msgstr "Tento záznam je zkontrolován"
1639
+
1640
+ #~ msgid "This entry is Not marked as Spam."
1641
+ #~ msgstr "Tento záznam není označen jako spam"
1642
+
1643
+ #~ msgid "This entry is marked as Spam"
1644
+ #~ msgstr "Tento záznam je označen jako spam"
1645
+
1646
+ #~ msgid "This entry is Not in Trash."
1647
+ #~ msgstr "Tento záznam není v koši"
1648
+
1649
+ #~ msgid "This entry is in Trash"
1650
+ #~ msgstr "Tento záznam je v koši"
1651
+
1652
+ #~ msgid "Entry by %1 has been moved to trash."
1653
+ #~ msgstr "Záznam od %1 byl přesunut do koše"
1654
+
1655
+ #~ msgid "Undo"
1656
+ #~ msgstr "Zpět"
1657
+
1658
+ #~ msgid "Notification"
1659
+ #~ msgstr "Upozornění"
1660
+
1661
+ #~ msgid "No guestbook entries yet."
1662
+ #~ msgstr "Žádné záznamy v knize návštěv"
1663
+
1664
+ #~ msgid ""
1665
+ #~ "It looks like you have been using the plugin &quot;DMSGuestbook&quot;."
1666
+ #~ "<br>Do you want to import its entries into Gwolle-GB?"
1667
+ #~ msgstr ""
1668
+ #~ "Vypadá to, že jste používali plugin &quot;DMSGuestbook&quot;.<br> Chcete "
1669
+ #~ "importovat jeho položky do Gwolle GB?"
1670
+
1671
+ #~ msgid "Sure, take me to the import."
1672
+ #~ msgstr "Jistě, pusť mě k importu!"
1673
+
1674
+ #~ msgid ""
1675
+ #~ "You may disable this message at the <a href=\"%1\">settings page</a> of "
1676
+ #~ "Gwolle-GB."
1677
+ #~ msgstr ""
1678
+ #~ "Tuto zprávu můžeš zakázat v <a href=\"%1\">nastavení</a> pluginu Gwolle-GB"
1679
+
1680
+ #~ msgid "Nothing to import here."
1681
+ #~ msgstr "Není tu nic k importu"
1682
+
1683
+ #~ msgid ""
1684
+ #~ "If you had another guestbook plugin (e. g. DMSGuestbook) installed its "
1685
+ #~ "entries could be imported into Gwolle-GB with just a few clicks."
1686
+ #~ msgstr ""
1687
+ #~ "Pokud máte nainstalován jiný pluginu návštěvní knihy (např DMSGuestbook), "
1688
+ #~ "jeho položky lze importovat do Gwolle GB s několika málo kliknutí"
1689
+
1690
+ #~ msgid "Import guestbook entries from other plugins"
1691
+ #~ msgstr "Importovat položky knihy návštěv z jiných pluginů"
1692
+
1693
+ #~ msgid "One entry imported successfully."
1694
+ #~ msgstr "Jeden záznam úspěšně importován"
1695
+
1696
+ #~ msgid "%1 entries imported successfully."
1697
+ #~ msgstr "%1 záznam(y / ú) úspěšně importován(y)"
1698
+
1699
+ #~ msgid ""
1700
+ #~ "Sorry, but I wasn't able to determine the pages at which your guestbook "
1701
+ #~ "was displayed. You cannot choose the guestbook to import from."
1702
+ #~ msgstr ""
1703
+ #~ "Omlouvám se, ale nejsem schopen určit stránky, na které zobrazuje vaše "
1704
+ #~ "kniha návštěv. K importu si tuto knihu vybrat nemůžete"
1705
+
1706
+ #~ msgid ""
1707
+ #~ "I was able to find %1 configured DMSGuestbooks. Please choose the "
1708
+ #~ "guestbook you want to import entries from."
1709
+ #~ msgstr ""
1710
+ #~ "Byl jsem schopen najít %1 nastavených DMSGuestbooks. Vyberte knihu, ze "
1711
+ #~ "které chcete importovat záznamy"
1712
+
1713
+ #~ msgid "Page title"
1714
+ #~ msgstr "Název stránky"
1715
+
1716
+ #~ msgid "Number of guestbook entries"
1717
+ #~ msgstr "Počet záznamů v knize návštěv"
1718
+
1719
+ #~ msgid "Click here to view the entries of this guestbook..."
1720
+ #~ msgstr "Knikněte pro zobrazení záznamů v této knize..."
1721
+
1722
+ #~ msgid "Review entries"
1723
+ #~ msgstr "Přehled záznamů"
1724
+
1725
+ #~ msgid ""
1726
+ #~ "However, data such as HTML formating and gravatars are not supported by "
1727
+ #~ "Gwolle-GB and <strong>will not</strong> be imported."
1728
+ #~ msgstr ""
1729
+ #~ "Nicméně údaje, jako je HTML formátování a gravatary nejsou podporovány "
1730
+ #~ "Gwolle GB a <strong> nebudou </strong> importovány"
1731
+
1732
+ #~ msgid ""
1733
+ #~ "The importer does not delete any data, so you can go back whenever you "
1734
+ #~ "want.<br>Please start the import by pressing \"Start import\"."
1735
+ #~ msgstr ""
1736
+ #~ "Import neodstraní žádná data, takže se můžete vrátit kdykoliv budete "
1737
+ #~ "chtít. <br>Prosím spusťte import stisknutím tlačítka \"Start import\""
1738
+
1739
+ #~ msgid ""
1740
+ #~ "I'm sorry, but I wasn't able to find the table of DMSGuestbook. Please "
1741
+ #~ "check your MySQL database and try again."
1742
+ #~ msgstr ""
1743
+ #~ "Je mi líto, ale nebyl jsem schopen najít tabulku DMSGuestbook. "
1744
+ #~ "Zkontrolujte databázi MySQL a zkuste to znovu"
1745
+
1746
+ #~ msgid ""
1747
+ #~ "You may want to import entries from another plugin. Click on the plugin's "
1748
+ #~ "name to get more details on the import."
1749
+ #~ msgstr ""
1750
+ #~ "Možná budete chtít importovat položky z jiného pluginu. Klikněte na jméno "
1751
+ #~ "pluginu k získání více informací o importu"
1752
+
1753
+ #~ msgid "Supported plugins:"
1754
+ #~ msgstr "Podporované pluginy:"
1755
+
1756
+ #~ msgid "Table %1 not found."
1757
+ #~ msgstr "Tabulky %1 nenalezeny."
1758
+
1759
+ #~ msgid "Check for import"
1760
+ #~ msgstr "Označit pro import"
1761
+
1762
+ #~ msgid ""
1763
+ #~ "Check if there are other guestbook plugins installed to import their "
1764
+ #~ "entries (deprecated, will be refactored)."
1765
+ #~ msgstr ""
1766
+ #~ "Zkontrolujte, zda jsou nainstalované jiné pluginy knihy návštěv, ze "
1767
+ #~ "kterých chcete importovat položky (zastaralé, bude přepracován)"
1768
+
1769
+ #~ msgid ""
1770
+ #~ "If Gwolle-GB detects another guestbook plugin for WordPress it will "
1771
+ #~ "prompt you to import that guestbooks's data."
1772
+ #~ msgstr ""
1773
+ #~ "Pokud Gwolle-CZ zjistí další plugin návštěvní kniha pro WordPress, vyzve "
1774
+ #~ "Vás k importu."
1775
+
1776
+ #~ msgid ""
1777
+ #~ "Sorry, but the page you are looking for does not exists. Go back to the "
1778
+ #~ "<a href=\"%1\">settings page</a>"
1779
+ #~ msgstr ""
1780
+ #~ "Omlouváme se, ale stránka, kterou hledáte, neexistuje. Vraťte se zpět na "
1781
+ #~ "<a href=\"%1\">stránku nastavení</a>"
1782
+
1783
+ #~ msgid "Unchecked"
1784
+ #~ msgstr "Nezkontrolováno"
lang/gwolle-gb-da_DK.mo ADDED
Binary file
lang/gwolle-gb-da_DK.po ADDED
@@ -0,0 +1,1997 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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"
lang/gwolle-gb-el.mo ADDED
Binary file
lang/gwolle-gb-el.po ADDED
@@ -0,0 +1,2069 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Gwolle Guestbook\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-08-04 18:30+0200\n"
6
+ "PO-Revision-Date: 2015-08-04 18:30+0200\n"
7
+ "Last-Translator: Marcel Pol <marcel@timelord.nl>\n"
8
+ "Language-Team: el <el.example.com>\n"
9
+ "Language: el\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 1.8.3\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
17
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
18
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
19
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
20
+ "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
23
+
24
+ #: gwolle-gb.php:126
25
+ msgid ""
26
+ "Gwolle Guestbook is not just another guestbook for WordPress. The goal is to "
27
+ "provide an easy and slim way to integrate a guestbook into your WordPress "
28
+ "powered site. Don't use your 'comment' section the wrong way - install "
29
+ "Gwolle-GB and have a real guestbook."
30
+ msgstr ""
31
+
32
+ #: hooks.php:35 hooks.php:36 frontend/widget.php:22 frontend/widget.php:188
33
+ msgid "Guestbook"
34
+ msgstr "Βιβλίο Επισκεπτών"
35
+
36
+ #: hooks.php:46 hooks.php:47 admin/tabs/admintab.php:36
37
+ #: admin/tabs/readingtab.php:36
38
+ msgid "Entries"
39
+ msgstr "Καταχωρήσεις"
40
+
41
+ #. /editor.php
42
+ #: hooks.php:54
43
+ msgid "Entry editor"
44
+ msgstr "Επεξεργαστής καταχωρήσεων"
45
+
46
+ #: hooks.php:54 admin/page-gwolle-gb.php:85
47
+ msgid "New entry"
48
+ msgstr "Νέα καταχώρηση"
49
+
50
+ #. /settings.php
51
+ #: hooks.php:57 hooks.php:80 admin/page-settings.php:314
52
+ msgid "Settings"
53
+ msgstr "Ρυθμίσεις"
54
+
55
+ #. /import.php
56
+ #: hooks.php:60
57
+ msgid "Import"
58
+ msgstr "Εισαγωγή"
59
+
60
+ #. /export.php
61
+ #: hooks.php:63
62
+ msgid "Export"
63
+ msgstr "Εξαγωγή"
64
+
65
+ #: hooks.php:190 hooks.php:194 frontend/rss.php:67 frontend/rss.php:70
66
+ #, fuzzy
67
+ msgid "Guestbook Feed"
68
+ msgstr "Книга за гости"
69
+
70
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:696
71
+ #: frontend/gwolle_gb-entry.php:107
72
+ msgid "Edit entry"
73
+ msgstr "Επεξεργασία καταχώρησης"
74
+
75
+ #: admin/dashboard-widget.php:116 admin/page-editor.php:537
76
+ #: admin/page-entries.php:696 frontend/gwolle_gb-entry.php:107
77
+ msgid "Edit"
78
+ msgstr "Επεξεργασία"
79
+
80
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:459
81
+ #: admin/page-entries.php:699
82
+ msgid "Check entry"
83
+ msgstr "Έγκριση καταχώρησης"
84
+
85
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:459
86
+ #: admin/page-entries.php:699
87
+ msgid "Check"
88
+ msgstr "Έγκριση"
89
+
90
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:462
91
+ #: admin/page-entries.php:702
92
+ msgid "Uncheck entry"
93
+ msgstr "Μη-έγκριση καταχώρησης"
94
+
95
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:462
96
+ #: admin/page-entries.php:702
97
+ msgid "Uncheck"
98
+ msgstr "Μη-έγκριση"
99
+
100
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:465
101
+ #: admin/page-entries.php:705
102
+ msgid "Mark entry as spam."
103
+ msgstr "Δήλωση καταχώρησης ως spam"
104
+
105
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:408
106
+ #: admin/page-editor.php:465 admin/page-entries.php:437
107
+ #: admin/page-entries.php:705
108
+ msgid "Spam"
109
+ msgstr "Spam"
110
+
111
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:468
112
+ #: admin/page-entries.php:708
113
+ msgid "Mark entry as not-spam."
114
+ msgstr "Δήλωση καταχώρησης ως μη-spam"
115
+
116
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:468
117
+ #: admin/page-entries.php:708
118
+ msgid "Not spam"
119
+ msgstr "Όχι spam"
120
+
121
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:471
122
+ #: admin/page-entries.php:711
123
+ msgid "Move entry to trash."
124
+ msgstr "Μετακίνηση καταχώρησης στον κάδο"
125
+
126
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:418
127
+ #: admin/page-editor.php:471 admin/page-entries.php:441
128
+ #: admin/page-entries.php:711
129
+ msgid "Trash"
130
+ msgstr "Κάδος Ανακύκλωσης"
131
+
132
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:474
133
+ #: admin/page-entries.php:714
134
+ msgid "Recover entry from trash."
135
+ msgstr "Επαναφορά καταχώρησης απο τον κάδο"
136
+
137
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:474
138
+ #: admin/page-entries.php:714
139
+ msgid "Untrash"
140
+ msgstr "Μη-μετακίνηση στον κάδο"
141
+
142
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:477
143
+ #: admin/page-entries.php:717
144
+ msgid "Please wait..."
145
+ msgstr "Παρακαλούμε περιμένετε"
146
+
147
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:477
148
+ #: admin/page-entries.php:717
149
+ msgid "Wait..."
150
+ msgstr "Περιμένετε..."
151
+
152
+ #: admin/dashboard-widget.php:155
153
+ msgid "Refresh"
154
+ msgstr "Ανανέωση"
155
+
156
+ #: admin/dashboard-widget.php:156
157
+ msgid "View all"
158
+ msgstr "Προβολή όλων"
159
+
160
+ #: admin/dashboard-widget.php:157
161
+ msgid "View new"
162
+ msgstr "Προβολή νέου"
163
+
164
+ #: admin/dashboard-widget.php:160
165
+ msgid "No new and unchecked guestbook entries."
166
+ msgstr "Δεν υπάρχουν καινούργιες, μη-ελεγμένες καταχωρήσεις"
167
+
168
+ #: admin/dashboard-widget.php:172
169
+ msgid "Guestbook (new entries)"
170
+ msgstr "Βιβλίο Επισκεπτών (νέες καταχωρήσεις)"
171
+
172
+ #: admin/installSplash.php:14
173
+ msgid "Installation"
174
+ msgstr "Εγκατάσταση"
175
+
176
+ #: admin/installSplash.php:20
177
+ msgid ""
178
+ "Welcome!<br>It seems that either you're using this plugin for the first time "
179
+ "or you've deleted all settings.<br>However, to use this plugin we have to "
180
+ "setup the database tables. Good for you, we've made this as easy as possible."
181
+ "<br>All you've got to do is click on that button below, and that's it."
182
+ msgstr ""
183
+ "Καλως ήρθατε!<br>Φαίνετε ότι χρησιμοποιείτε το πρόσθετο για πρώτη φορά ή "
184
+ "έχετε διαγράψει όλες τις ρυθμίσεις.<br>Ωστόσο, για να χρησιμοποιήσετε το "
185
+ "πρόσθετο, θα πρέπει να αναβαθμίσουμε τους πίνακες της βάσης δεδομένων. "
186
+ "Ευτυχώς για'σας, η διαδικασία είναι όσο πιο εύκολη γίνεται.<br>Το μόνο που "
187
+ "έχετε να κάνετε είναι να πατήσετε το κουμπί. Τα υπόλοιπα είναι δική μας "
188
+ "δουλειά."
189
+
190
+ #: admin/installSplash.php:26
191
+ msgid "Sure, let's do this!"
192
+ msgstr "Ας το κάνουμε!"
193
+
194
+ #: admin/installSplash.php:33
195
+ #, php-format
196
+ msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
197
+ msgstr "Τελειώσαμε! <a href=\"%s\">Πατήστε εδώ για να συνεχίσουμε...</a>"
198
+
199
+ #: admin/installSplash.php:35
200
+ #, php-format
201
+ msgid ""
202
+ "It looks like there has been an error. <a href=\"%s\">Click here to "
203
+ "continue...</a>"
204
+ msgstr ""
205
+ "Μάλλον κάτι κάνατα λάθος.<a href=\"%s\">Πατήστε εδώ για να συνεχίσουμε...</a>"
206
+
207
+ #: admin/page-editor.php:15 admin/page-entries.php:16 admin/page-export.php:17
208
+ #: admin/page-gwolle-gb.php:287 admin/page-import.php:26
209
+ #: admin/page-settings.php:15 admin/tabs/admintab.php:15
210
+ #: admin/tabs/antispamtab.php:15 admin/tabs/emailtab.php:15
211
+ #: admin/tabs/formtab.php:15 admin/tabs/readingtab.php:15
212
+ #: admin/tabs/uninstalltab.php:18
213
+ msgid "Cheatin&#8217; uh?"
214
+ msgstr "Κλέβεις ε;"
215
+
216
+ #: admin/page-editor.php:32
217
+ msgid "Edit guestbook entry"
218
+ msgstr "Επεξεργασία καταχώρησης"
219
+
220
+ #: admin/page-editor.php:45
221
+ msgid "Entry could not be found."
222
+ msgstr "Η συγκεκριμένη καταχώρηση δεν υπάρχει"
223
+
224
+ #: admin/page-editor.php:47
225
+ msgid "Guestbook entry (error)"
226
+ msgstr "Εσφαλμένη καταχώρηση"
227
+
228
+ #: admin/page-editor.php:50
229
+ msgid "New guestbook entry"
230
+ msgstr "Νέα καταχώρηση"
231
+
232
+ #: admin/page-editor.php:60
233
+ msgid "Something strange happened."
234
+ msgstr "Κάτι παράξενο συμβαίνει"
235
+
236
+ #: admin/page-editor.php:88
237
+ msgid "Submitted as Spam to the Akismet service."
238
+ msgstr "Υποβλήθηκε ως spam στην υπηρεσία Akismet"
239
+
240
+ #: admin/page-editor.php:97
241
+ msgid "Submitted as Ham to the Akismet service."
242
+ msgstr "Υποβλήθηκε ως Ham στην υπηρεσία Akismet"
243
+
244
+ #: admin/page-editor.php:163 admin/page-gwolle-gb.php:364
245
+ #: admin/page-settings.php:320
246
+ msgid "Changes saved."
247
+ msgstr "Οι αλλαγές αποθηκεύτηκαν"
248
+
249
+ #: admin/page-editor.php:165 admin/page-editor.php:260
250
+ msgid "Error happened during saving."
251
+ msgstr "Σφάλμα κατα την αποθήκευση"
252
+
253
+ #: admin/page-editor.php:169
254
+ msgid "Entry was not changed."
255
+ msgstr "Η καταχώρηση δεν έχει αλλάξει"
256
+
257
+ #: admin/page-editor.php:180
258
+ msgid "Entry removed."
259
+ msgstr "Η καταχώρηση διαγράφηκε"
260
+
261
+ #: admin/page-editor.php:225
262
+ msgid "Entry has no content, even though that is mandatory."
263
+ msgstr "Η καταχώρηση δεν έχει περιεχόμενο"
264
+
265
+ #: admin/page-editor.php:258
266
+ msgid "Entry saved."
267
+ msgstr "Η καταχώρηση αποθηκεύτηκε"
268
+
269
+ #: admin/page-editor.php:264
270
+ msgid "Entry was not saved."
271
+ msgstr "Η καταχώρηση δεν αποθηκεύτηκε"
272
+
273
+ #: admin/page-editor.php:342 admin/page-editor.php:356
274
+ #: admin/page-editor.php:449 admin/page-editor.php:493
275
+ #: admin/page-editor.php:557 admin/page-editor.php:592
276
+ #: admin/page-editor.php:609 admin/page-editor.php:617
277
+ #: admin/page-export.php:40 admin/page-import.php:352
278
+ #: admin/page-import.php:419 admin/page-import.php:540
279
+ msgid "Click to open or close"
280
+ msgstr "Κλικ για άνοιγμα/κλείσιμο"
281
+
282
+ #: admin/page-editor.php:342
283
+ #, fuzzy
284
+ msgid "View Frontend"
285
+ msgstr "Προβολή νέου"
286
+
287
+ #: admin/page-editor.php:346 admin/page-gwolle-gb.php:141
288
+ #, fuzzy
289
+ msgid "View Guestbook"
290
+ msgstr "Βιβλίο Επισκεπτών"
291
+
292
+ #: admin/page-editor.php:356
293
+ msgid "Options"
294
+ msgstr "Επιλογές"
295
+
296
+ #: admin/page-editor.php:377
297
+ msgid "This entry is not yet visible."
298
+ msgstr "Αυτή η καταχώρηση δεν είναι ακόμα ορατή"
299
+
300
+ #: admin/page-editor.php:381 admin/page-editor.php:386
301
+ msgid "This entry is Visible."
302
+ msgstr "Αυτή η καταχώρηση είναι ορατή"
303
+
304
+ #: admin/page-editor.php:382 admin/page-editor.php:387
305
+ msgid "This entry is Not Visible."
306
+ msgstr "Αυτή η καταχώρηση δεν είναι ορατή"
307
+
308
+ #: admin/page-editor.php:398 frontend/posthandling.php:407
309
+ msgid "Checked"
310
+ msgstr "Εγκρίθηκε"
311
+
312
+ #: admin/page-editor.php:426
313
+ msgid "Remove this entry Permanently."
314
+ msgstr "Μόνιμη αφαίρεση της καταχώρησης"
315
+
316
+ #: admin/page-editor.php:437
317
+ msgid "Save"
318
+ msgstr "Αποθήκευση"
319
+
320
+ #: admin/page-editor.php:449
321
+ msgid "Actions"
322
+ msgstr "Ενέργειες"
323
+
324
+ #: admin/page-editor.php:493
325
+ msgid "Details"
326
+ msgstr "Λεπτομέρειες"
327
+
328
+ #: admin/page-editor.php:497 admin/page-editor.php:542
329
+ #: admin/page-entries.php:567 admin/page-entries.php:583
330
+ msgid "Author"
331
+ msgstr "Συγγραφέας"
332
+
333
+ #: admin/page-editor.php:501 admin/page-editor.php:508
334
+ #: admin/page-editor.php:526 admin/page-editor.php:533
335
+ #: functions/function.log.php:164
336
+ msgid "Unknown"
337
+ msgstr "Άγνωστο"
338
+
339
+ #: admin/page-editor.php:504
340
+ msgid "E-Mail"
341
+ msgstr "E-mail"
342
+
343
+ #: admin/page-editor.php:511 admin/page-editor.php:567
344
+ msgid "Written"
345
+ msgstr "Γραμμένο"
346
+
347
+ #: admin/page-editor.php:516
348
+ msgid "Not yet"
349
+ msgstr "Όχι ακόμα"
350
+
351
+ #: admin/page-editor.php:519
352
+ msgid "Author's IP-address"
353
+ msgstr "Η ip του συγγραφέα"
354
+
355
+ #: admin/page-editor.php:522
356
+ msgid "Whois search for this IP"
357
+ msgstr "Ψάξε γι'αυτή την ip"
358
+
359
+ #: admin/page-editor.php:529
360
+ msgid "Host"
361
+ msgstr "host"
362
+
363
+ #: admin/page-editor.php:537
364
+ #, fuzzy
365
+ msgid "Edit metadata"
366
+ msgstr "Επεξεργασία καταχώρησης"
367
+
368
+ #: admin/page-editor.php:545
369
+ #, fuzzy
370
+ msgid "Date and time"
371
+ msgstr "Date and Time"
372
+
373
+ #: admin/page-editor.php:557
374
+ msgid "Entry log"
375
+ msgstr "Καταχώρηση εισόδου"
376
+
377
+ #: admin/page-editor.php:576
378
+ msgid "No log yet."
379
+ msgstr "Μη συνδεδεμένος"
380
+
381
+ #: admin/page-editor.php:592 frontend/write.php:215
382
+ msgid "Guestbook entry"
383
+ msgstr "Καταχώρηση"
384
+
385
+ #: admin/page-editor.php:597
386
+ #, php-format
387
+ msgid ""
388
+ "Line breaks will not be visible to the visitors due to your <a href=\"%s"
389
+ "\">settings</a>."
390
+ msgstr ""
391
+ "Οι αλλαγές γραμμής δεν θα είναι εμφανείς στους επισκέπτες σας λόγω των <a "
392
+ "href=\"%s\">ρυθμίσεων σας</a>."
393
+
394
+ #: admin/page-editor.php:609 frontend/write.php:196 frontend/write.php:203
395
+ #: admin/tabs/formtab.php:165
396
+ msgid "Website"
397
+ msgstr "Ιστοσελίδα"
398
+
399
+ #: admin/page-editor.php:612
400
+ msgid "Example: <code>http://www.example.com/</code>"
401
+ msgstr "Παράδειγμα: <code>http://www.example.com/</code>"
402
+
403
+ #: admin/page-editor.php:617 admin/page-export.php:61
404
+ msgid "Origin"
405
+ msgstr "Πηγή"
406
+
407
+ #: admin/page-entries.php:209
408
+ msgid "entry checked."
409
+ msgstr "Ελεγμένη καταχώρηση"
410
+
411
+ #: admin/page-entries.php:211
412
+ msgid "entries checked."
413
+ msgstr "Ελεγμένες καταχωρίσεις"
414
+
415
+ #: admin/page-entries.php:213
416
+ msgid "No entries checked."
417
+ msgstr "Καμία ελεγμένη καταχώρηση"
418
+
419
+ #: admin/page-entries.php:217
420
+ msgid "entry unchecked."
421
+ msgstr "Μη επιτρεπόμενη καταχώρηση"
422
+
423
+ #: admin/page-entries.php:219
424
+ msgid "entries unchecked."
425
+ msgstr "Μη επιτρεπόμενες καταχωρίσεις"
426
+
427
+ #: admin/page-entries.php:221
428
+ msgid "No entries unchecked."
429
+ msgstr "Καμία μη-επιτρεπόμενη καταχώρηση"
430
+
431
+ #: admin/page-entries.php:225
432
+ msgid ""
433
+ "entry marked as spam and submitted to Akismet as spam (if Akismet was "
434
+ "enabled)."
435
+ msgstr ""
436
+ "Η συγκεκριμένη καταχώρηση θεωρείτε spam και υποβλήθηκε στην υπηρεσία Akismet "
437
+ "ως spam (εάν το Akismet είναι ε νεργό)"
438
+
439
+ #: admin/page-entries.php:227
440
+ msgid ""
441
+ "entries marked as spam and submitted to Akismet as spam (if Akismet was "
442
+ "enabled)."
443
+ msgstr ""
444
+ "Οι συγκεκριμένες καταχωρήσεις θεωρήθηκαν ψspam και υποβλήθηκαν στην υπηρεσία "
445
+ "Akismet ως spam (εάν το Akismet είναι ενεργό)"
446
+
447
+ #: admin/page-entries.php:229
448
+ msgid "No entries marked as spam."
449
+ msgstr "Καμία καταχώρηση spam"
450
+
451
+ #: admin/page-entries.php:233
452
+ msgid ""
453
+ "entry marked as not spam and submitted to Akismet as ham (if Akismet was "
454
+ "enabled)."
455
+ msgstr ""
456
+ "Η συγκεκριμένη καταχώρηση θεωρήθηκε ως μη-spam και υποβλήθηκε στην υπηρεσία "
457
+ "Akismet ως ham (εάν το Akismet είναι ενεργό)"
458
+
459
+ #: admin/page-entries.php:235
460
+ msgid ""
461
+ "entries marked as not spam and submitted to Akismet as ham (if Akismet was "
462
+ "enabled)."
463
+ msgstr ""
464
+ "Οι συγκεκριμένες καταχωρήσεις θεωρήθηκαν ως μη-spam και υποβλήθηκαν στην "
465
+ "υπηρεσία Akismet ως ham (εάν το Akismet είναι ενεργό)"
466
+
467
+ #: admin/page-entries.php:237
468
+ msgid "No entries marked as not spam."
469
+ msgstr "Καμία καταχώρηση ως μη-spam"
470
+
471
+ #: admin/page-entries.php:241
472
+ msgid "entry considered spam and marked as such."
473
+ msgstr "Η συγκεκριμένη καταχώρηση θεωρείται spam"
474
+
475
+ #: admin/page-entries.php:243
476
+ msgid "entries considered spam and marked as such."
477
+ msgstr "Οι συγκεκριμένες καταχωρίσεις θεωρούνται spam"
478
+
479
+ #: admin/page-entries.php:246
480
+ msgid "entry not considered spam and marked as such."
481
+ msgstr "Η συγκεκριμένη καταχώρηση δεν θεωρείται spam"
482
+
483
+ #: admin/page-entries.php:248
484
+ msgid "entries not considered spam and marked as such."
485
+ msgstr "Οι συγκεκριμένες καταχωρίσεις δεν θεωρούνται spam"
486
+
487
+ #: admin/page-entries.php:251
488
+ msgid "entry already considered spam and not changed."
489
+ msgstr "Η συγκεκριμένη καταχώρηση έχει θεωρηθεί spam αλλά δεν έχει αλλαχθεί"
490
+
491
+ #: admin/page-entries.php:253
492
+ msgid "entries already considered spam and not changed."
493
+ msgstr ""
494
+ "Οι συγκεκριμένες καταχωρίσεις έχουν θεωρηθεί spam και ακόμα δεν έχουν "
495
+ "αλλαχθεί"
496
+
497
+ #: admin/page-entries.php:256
498
+ msgid "entry already considered not spam and not changed."
499
+ msgstr ""
500
+ "Η συγκεκριμένη καταχώρηση έχει ήδη θεωρηθεί μη-spam και δεν έχει αλλαχθεί"
501
+
502
+ #: admin/page-entries.php:258
503
+ msgid "entries already considered not spam and not changed."
504
+ msgstr ""
505
+ "Οι συγκεκριμένες καταχωρίσεις έχουν ήδη θεωρηθεί μη-spam και δεν έχουν "
506
+ "αλλαχθεί"
507
+
508
+ #: admin/page-entries.php:262
509
+ msgid "entry moved to trash."
510
+ msgstr "Η συγκεκριμένη καταχώρηση εστάλη στο κάδο"
511
+
512
+ #: admin/page-entries.php:264
513
+ msgid "entries moved to trash."
514
+ msgstr "Οι συγκεκριμένες καταχωρίσεις εστάλησαν στον κάδο"
515
+
516
+ #: admin/page-entries.php:266
517
+ msgid "No entries moved to trash."
518
+ msgstr "Καμία καταχώρηση δεν έχει σταλεί στον κάδο"
519
+
520
+ #: admin/page-entries.php:270
521
+ msgid "entry recovered from trash."
522
+ msgstr "Επαναφορά απο τον κάδο"
523
+
524
+ #: admin/page-entries.php:272
525
+ msgid "entries recovered from trash."
526
+ msgstr "Επαναφορά απο τον κάδο"
527
+
528
+ #: admin/page-entries.php:274
529
+ msgid "No entries recovered from trash."
530
+ msgstr "Καμία επαναφορά απο τον κάδο"
531
+
532
+ #: admin/page-entries.php:278 admin/page-entries.php:293
533
+ msgid "entry removed permanently."
534
+ msgstr "Η συγκεκριμένη καταχώρηση διαγράφηκε τελείως"
535
+
536
+ #: admin/page-entries.php:280 admin/page-entries.php:295
537
+ msgid "entries removed permanently."
538
+ msgstr "Οι συγκεκριμένες καταχωρίσεις διεγράφησαν τελείως"
539
+
540
+ #: admin/page-entries.php:282 admin/page-entries.php:297
541
+ msgid "No entries permanently removed."
542
+ msgstr "Καμία καταχώρηση δεν διαγράφηκε τελείως"
543
+
544
+ #: admin/page-entries.php:329
545
+ msgid "Please activate Akismet if you want to battle spam."
546
+ msgstr "Παρακαλώ ενεργοποιείστε το Akismet για να προστατευθείτε απ'το spam"
547
+
548
+ #: admin/page-entries.php:402
549
+ msgid "Guestbook entries"
550
+ msgstr "Καταχωρίσεις βιβλίου"
551
+
552
+ #: admin/page-entries.php:424
553
+ msgid "All"
554
+ msgstr "Όλα"
555
+
556
+ #: admin/page-entries.php:429
557
+ msgid "Unlocked"
558
+ msgstr "Ξεκλειδωμένο"
559
+
560
+ #: admin/page-entries.php:433
561
+ msgid "New"
562
+ msgstr "Νέο"
563
+
564
+ #: admin/page-entries.php:448
565
+ msgid "Mass edit actions"
566
+ msgstr "Μαζική επεξεργασία"
567
+
568
+ #: admin/page-entries.php:451
569
+ msgid "Recover from trash"
570
+ msgstr "Επαναφορά απο τον κάδο"
571
+
572
+ #: admin/page-entries.php:452 admin/page-entries.php:469
573
+ msgid "Remove permanently"
574
+ msgstr "Οριστική διαγραφή"
575
+
576
+ #: admin/page-entries.php:455
577
+ msgid "Mark as checked"
578
+ msgstr "Ελεγμένη"
579
+
580
+ #: admin/page-entries.php:458
581
+ msgid "Mark as not checked"
582
+ msgstr "Μη ελεγμένη"
583
+
584
+ #: admin/page-entries.php:461
585
+ msgid "Mark as spam"
586
+ msgstr "Spam"
587
+
588
+ #: admin/page-entries.php:463
589
+ msgid "Mark as not spam"
590
+ msgstr "Μη spam"
591
+
592
+ #: admin/page-entries.php:465
593
+ msgid "Check with Akismet"
594
+ msgstr "Έλεγχος με Akismet"
595
+
596
+ #: admin/page-entries.php:467
597
+ msgid "Move to trash"
598
+ msgstr "Μετακίνηση στον κάδο"
599
+
600
+ #: admin/page-entries.php:474
601
+ msgid "Apply"
602
+ msgstr "Υποβολή"
603
+
604
+ #: admin/page-entries.php:477 admin/page-entries.php:735
605
+ msgid "Empty Spam"
606
+ msgstr "Άδειασμα spam"
607
+
608
+ #: admin/page-entries.php:479 admin/page-entries.php:737
609
+ msgid "Empty Trash"
610
+ msgstr "Άδειασμα κάδου"
611
+
612
+ #: admin/page-entries.php:492
613
+ msgid "Showing:"
614
+ msgstr "Φαίνεται:"
615
+
616
+ #: admin/page-entries.php:493
617
+ msgid "of"
618
+ msgstr "απο"
619
+
620
+ #: admin/page-entries.php:560 admin/page-entries.php:576
621
+ msgid "ID"
622
+ msgstr "ID"
623
+
624
+ #: admin/page-entries.php:566 admin/page-entries.php:582
625
+ #: admin/tabs/readingtab.php:189
626
+ msgid "Date"
627
+ msgstr "Ημερομηνία"
628
+
629
+ #: admin/page-entries.php:568 admin/page-entries.php:584
630
+ msgid "Entry (excerpt)"
631
+ msgstr "Καταχώρηση (προεπισκόπηση)"
632
+
633
+ #: admin/page-entries.php:569 admin/page-entries.php:585
634
+ msgid "Action"
635
+ msgstr "Ενέργεια"
636
+
637
+ #: admin/page-entries.php:598
638
+ msgid "No entries found."
639
+ msgstr "Καμία καταχώρηση δεν βρέθηκε"
640
+
641
+ #: admin/page-export.php:27
642
+ msgid "Export guestbook entries."
643
+ msgstr "Εξαγωγή καταχωρήσεων"
644
+
645
+ #: admin/page-export.php:40
646
+ msgid "Export guestbook entries from Gwolle-GB"
647
+ msgstr "Εξαγωγή καταχωρίσεων απο Gwolle-GB"
648
+
649
+ #: admin/page-export.php:47
650
+ msgid "No entries were found."
651
+ msgstr "Καμία καταχώρηση δεν βρέθηκε"
652
+
653
+ #: admin/page-export.php:52
654
+ #, php-format
655
+ msgid "%d entries were found and will be exported."
656
+ msgstr "%d καταχωρίσεις βρέθηκαν και θα εξαχθούν"
657
+
658
+ #: admin/page-export.php:55
659
+ msgid "The exporter will preserve the following data per entry:"
660
+ msgstr "Ο εξαγωγέας θα διατηρήσει τα ακόλουθα για κάθε καταχώρηση:"
661
+
662
+ #: admin/page-export.php:58 admin/page-import.php:386
663
+ #: admin/page-import.php:427 frontend/write.php:139 frontend/write.php:146
664
+ #: admin/tabs/formtab.php:105 admin/tabs/readingtab.php:152
665
+ msgid "Name"
666
+ msgstr "Όνομα"
667
+
668
+ #: admin/page-export.php:59 admin/page-import.php:387
669
+ #: admin/page-import.php:429
670
+ msgid "E-Mail address"
671
+ msgstr "Διέυθυνση e-mail"
672
+
673
+ #: admin/page-export.php:60 admin/page-import.php:388
674
+ #: admin/page-import.php:430
675
+ msgid "URL/Website"
676
+ msgstr "URL/Website"
677
+
678
+ #: admin/page-export.php:62 admin/page-import.php:389
679
+ #: admin/page-import.php:431
680
+ msgid "Date of the entry"
681
+ msgstr "Ημερομηνία καταχώρησης"
682
+
683
+ #: admin/page-export.php:63 admin/page-import.php:390
684
+ #: admin/page-import.php:432
685
+ msgid "IP address"
686
+ msgstr "Διεύθυνση ip"
687
+
688
+ #: admin/page-export.php:64
689
+ msgid "Host address"
690
+ msgstr "Διεύθυνση host"
691
+
692
+ #: admin/page-export.php:65 admin/page-import.php:391
693
+ #: admin/page-import.php:433 admin/tabs/formtab.php:185
694
+ #: admin/tabs/uninstalltab.php:31
695
+ msgid "Message"
696
+ msgstr "Μήνυμα"
697
+
698
+ #: admin/page-export.php:66 admin/page-import.php:393
699
+ msgid "\"is checked\" flag"
700
+ msgstr "\"ελέγμένη\""
701
+
702
+ #: admin/page-export.php:67 admin/page-import.php:392
703
+ msgid "\"is spam\" flag"
704
+ msgstr "\"spam\""
705
+
706
+ #: admin/page-export.php:68
707
+ msgid "\"is trash\" flag"
708
+ msgstr "\"σκουπίδι\""
709
+
710
+ #: admin/page-export.php:70
711
+ msgid "The exporter does not delete any data, so your data will still be here."
712
+ msgstr ""
713
+ "Ο εξαγωγέας δεν διαγράφει δεδομένα οπότε τα δεδομένα σας θα παραμείνουν εδώ"
714
+
715
+ #: admin/page-export.php:75
716
+ msgid "Export all entries from this website."
717
+ msgstr "Εξαγωγή όλων των καταχωρίσεων απο αυτό το site"
718
+
719
+ #: admin/page-export.php:79
720
+ msgid "Start export"
721
+ msgstr "Εκκίνηση εξαγωγής"
722
+
723
+ #: admin/page-gwolle-gb.php:34
724
+ msgid "Overview"
725
+ msgstr "Επισκόπηση"
726
+
727
+ #: admin/page-gwolle-gb.php:48
728
+ msgid "Entry total"
729
+ msgstr "Συνολικό περιεχόμενο καταχώρησης"
730
+
731
+ #: admin/page-gwolle-gb.php:51
732
+ msgid "Entries total"
733
+ msgstr "Συνολικό περιεχόμενο καταχωρίσεων"
734
+
735
+ #: admin/page-gwolle-gb.php:67
736
+ msgid "Unlocked entry"
737
+ msgstr "Ξεκλειδωμένη καταχώρηση"
738
+
739
+ #: admin/page-gwolle-gb.php:69
740
+ msgid "Unlocked entries"
741
+ msgstr "Ξεκλειδωμένες καταχωρίσεις"
742
+
743
+ #: admin/page-gwolle-gb.php:87
744
+ msgid "New entries"
745
+ msgstr "Νέες καταχωρίσεις"
746
+
747
+ #: admin/page-gwolle-gb.php:103
748
+ msgid "Spam entry"
749
+ msgstr "Spam καταχώρηση"
750
+
751
+ #: admin/page-gwolle-gb.php:105
752
+ msgid "Spam entries"
753
+ msgstr "Spam καταχωρίσεις"
754
+
755
+ #: admin/page-gwolle-gb.php:121
756
+ msgid "Trashed entry"
757
+ msgstr "Διεγραμένη καταχώρηση"
758
+
759
+ #: admin/page-gwolle-gb.php:123
760
+ msgid "Trashed entries"
761
+ msgstr "Διεγραμένες καταχωρίσεις"
762
+
763
+ #: admin/page-gwolle-gb.php:145
764
+ msgid "Write admin entry"
765
+ msgstr "Συγγραφή καταχώρησης διαχειριστή"
766
+
767
+ #: admin/page-gwolle-gb.php:156 admin/tabs/emailtab.php:47
768
+ msgid ""
769
+ "Sorry, but the function <code>mail()</code> required to notify you by mail "
770
+ "is not enabled in your PHP configuration. You might want to install a "
771
+ "WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can "
772
+ "contact your hosting provider to change this."
773
+ msgstr ""
774
+ "Συγγνώμη αλλά η συνάρτηση <code>mail()</code> η οποία χρειαζόταν για να "
775
+ "ειδοποιείστε μέσω e-mail δεν είναι ενεργή στις ρυθμίσεις PHP.Μπορεί να "
776
+ "προτιμάτε να εγκαταστήσετε ένα plugin το οποίο θα χρηιμοποιεί SMTP αντί "
777
+ "για<code>mail()</code>. Εναλλακτικά, μπορείτε να επικοινωνήσετε με τον "
778
+ "hosting provider σας για να σας βοηθήσει."
779
+
780
+ #: admin/page-gwolle-gb.php:182
781
+ msgid "Send me an e-mail when a new entry has been posted."
782
+ msgstr "Στείλε μου mail όποτε καταχωρείτε ένα νέο μήνυμα"
783
+
784
+ #: admin/page-gwolle-gb.php:184
785
+ msgid "Save setting"
786
+ msgstr "Αποθήκευση"
787
+
788
+ #: admin/page-gwolle-gb.php:189
789
+ msgid "The following users have subscribed to this service:"
790
+ msgstr "Οι ακόλουθοι χρήστες έχουν εγγραφεί στην υπηρεσία:"
791
+
792
+ #: admin/page-gwolle-gb.php:201 functions/function.log.php:173
793
+ #: admin/tabs/emailtab.php:66 admin/tabs/emailtab.php:119
794
+ msgid "You"
795
+ msgstr "Εσύ"
796
+
797
+ #: admin/page-gwolle-gb.php:210
798
+ msgid "No subscriber yet"
799
+ msgstr "Κανένας subscriber ακόμα"
800
+
801
+ #: admin/page-gwolle-gb.php:230
802
+ msgid "This is how you can get your guestbook displayed on your website:"
803
+ msgstr "Έτσι μπορείτε να εμφανίσετε το guestbook στη σελίδα σας"
804
+
805
+ #: admin/page-gwolle-gb.php:232
806
+ msgid "Create a new page."
807
+ msgstr "Δημιοργήστε μια καινούργια σελίδα"
808
+
809
+ #: admin/page-gwolle-gb.php:233
810
+ msgid ""
811
+ "Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the "
812
+ "content."
813
+ msgstr ""
814
+ "Επιλέξτα έναν τίτλο και βάλτε &quot;[gwolle_gb]&quot; (χωρίς τα εισαγωγικά) "
815
+ "σαν περιεχόμενο"
816
+
817
+ #: admin/page-gwolle-gb.php:234
818
+ msgid ""
819
+ "It is probably a good idea to disable comments on that page; otherwise, your "
820
+ "visitors might get a little confused."
821
+ msgstr ""
822
+ "Καλύτερα να απενεργοποιήσετε τα σχόλια στην συγκεκριμένη σσελίδα αλλιώς οι "
823
+ "επισκέπτες σας ίσως μπερδευτούν"
824
+
825
+ #: admin/page-gwolle-gb.php:241
826
+ msgid "These entries will be visible for your visitors:"
827
+ msgstr "Αυτές οι καταχωρίσεις θα είναι ορατές για τους επισκέπτες του site"
828
+
829
+ #: admin/page-gwolle-gb.php:243
830
+ msgid "Marked as Checked."
831
+ msgstr "Ελεγμένη"
832
+
833
+ #: admin/page-gwolle-gb.php:244
834
+ msgid "Not marked as Spam."
835
+ msgstr "Μη spam"
836
+
837
+ #: admin/page-gwolle-gb.php:245
838
+ msgid "Not marked as Trash."
839
+ msgstr "Όχι σκουπίδι"
840
+
841
+ #: admin/page-gwolle-gb.php:249
842
+ msgid "The Main Menu counter counts the following entries:"
843
+ msgstr "Αριθμός καταχωρίσεων:"
844
+
845
+ #: admin/page-gwolle-gb.php:251
846
+ msgid "Marked as Unchecked (You might want to moderate them)."
847
+ msgstr "Μη ελεγμένες (ίσως θα θέλατε να τις τσεκάρετε)"
848
+
849
+ #: admin/page-gwolle-gb.php:252
850
+ msgid "Not marked as Spam (You might want to check them)."
851
+ msgstr "Μη spam ίσως θα θέλατε να τις τσεκάρετε)"
852
+
853
+ #: admin/page-gwolle-gb.php:253
854
+ msgid "Not marked as Trash (You decide what goes to the trash)."
855
+ msgstr "Όχι σκουπίδια (εσείς αποφασίζετε τι θα πάει στον κάδο)"
856
+
857
+ #: admin/page-gwolle-gb.php:260
858
+ msgid "This plugin is being maintained by Marcel Pol from"
859
+ msgstr ""
860
+
861
+ #: admin/page-gwolle-gb.php:264
862
+ msgid "Review this plugin."
863
+ msgstr "Ανασκόπηση plugin"
864
+
865
+ #: admin/page-gwolle-gb.php:265
866
+ msgid "If this plugin has any value to you, then please leave a review at"
867
+ msgstr ""
868
+
869
+ #: admin/page-gwolle-gb.php:266
870
+ msgid "The plugin page at wordpress.org."
871
+ msgstr ""
872
+
873
+ #: admin/page-gwolle-gb.php:267
874
+ msgid "the plugin page at wordpress.org"
875
+ msgstr ""
876
+
877
+ #: admin/page-gwolle-gb.php:270
878
+ msgid "Donate to the EFF."
879
+ msgstr "Δωρίστε στο EFF"
880
+
881
+ #: admin/page-gwolle-gb.php:271
882
+ msgid ""
883
+ "The Electronic Frontier Foundation is one of the few organisations that "
884
+ "wants to keep the internet a free place."
885
+ msgstr ""
886
+ "Το Electronic Frontier Foundation είναι ένας απο τους λίγους οργανισμούς που "
887
+ "θέλουν να διατηρήσουν το internet ένα ασφαλές μέρος"
888
+
889
+ #: admin/page-gwolle-gb.php:272
890
+ msgid "Please donate to the EFF."
891
+ msgstr "Παρακαλούμε, δωρίστε στο EFF"
892
+
893
+ #: admin/page-gwolle-gb.php:274 admin/page-gwolle-gb.php:276
894
+ msgid "Donate to the maintainer."
895
+ msgstr "Δωρίστε στον συντηρητή"
896
+
897
+ #: admin/page-gwolle-gb.php:275
898
+ msgid ""
899
+ "If you rather want to donate to the maintainer of the plugin, you can donate "
900
+ "through PayPal."
901
+ msgstr ""
902
+ "Αν θέλετε να δωρίσετε στον συντηρητή του plugin μπορείτε να το κάνετε μέσω "
903
+ "paypal"
904
+
905
+ #: admin/page-gwolle-gb.php:276
906
+ msgid "Donate through"
907
+ msgstr "Δωρίστε"
908
+
909
+ #: admin/page-gwolle-gb.php:276
910
+ msgid "PayPal"
911
+ msgstr ""
912
+
913
+ #: admin/page-gwolle-gb.php:277
914
+ msgid "to"
915
+ msgstr ""
916
+
917
+ #: admin/page-gwolle-gb.php:347
918
+ msgid "Welcome to the Guestbook!"
919
+ msgstr "Καλωσήρθατε!!!"
920
+
921
+ #: admin/page-gwolle-gb.php:348
922
+ msgid "E-mail Notifications"
923
+ msgstr "Ενημερώσεις μέσω e-mail"
924
+
925
+ #: admin/page-gwolle-gb.php:349
926
+ msgid "Review and Donate"
927
+ msgstr ""
928
+
929
+ #: admin/page-gwolle-gb.php:351 admin/page-gwolle-gb.php:352
930
+ msgid "Help"
931
+ msgstr "Βοήθεια"
932
+
933
+ #: admin/page-gwolle-gb.php:353
934
+ #, fuzzy
935
+ msgid "This plugin uses the following scripts and services:"
936
+ msgstr "Το Plugin χρησιμοποιεί τα ακόλ,ουθα scripts/προγράμματα/εικόνες:"
937
+
938
+ #: admin/page-gwolle-gb.php:358
939
+ msgid "Gwolle Guestbook"
940
+ msgstr "Gwolle Guestbook"
941
+
942
+ #: admin/page-import.php:90
943
+ msgid ""
944
+ "I'm sorry, but I wasn't able to import entries from DMSGuestbook "
945
+ "successfully."
946
+ msgstr ""
947
+ "Συγγνώμη αλλά δεν μπορέσαμε να εισάγουμε καταχωρίσεις απο DMSGuestbook "
948
+ "επιτυχημένα"
949
+
950
+ #: admin/page-import.php:92
951
+ msgid "1 entry imported successfully from DMSGuestbook."
952
+ msgstr "1 καταχώρηση εισήχθη απο DMSGuestbook"
953
+
954
+ #: admin/page-import.php:94
955
+ #, php-format
956
+ msgid "%d entries imported successfully from DMSGuestbook."
957
+ msgstr "%d καταχωρίσεις εισήχθησαν απο DMSGuestbook."
958
+
959
+ #: admin/page-import.php:98
960
+ msgid ""
961
+ "<strong>Nothing to import.</strong> The guestbook you've chosen does not "
962
+ "contain any entries."
963
+ msgstr "<strong>Τίποτα για εισαγωγή.</strong>"
964
+
965
+ #: admin/page-import.php:103
966
+ msgid "I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook."
967
+ msgstr "Συγγνώμη αλλά δεν μπορέσαμε να βρούμε τη MySQL βάση απο DMSGuestbook."
968
+
969
+ #: admin/page-import.php:108
970
+ msgid "You haven't chosen a guestbook. Please select one and try again."
971
+ msgstr "Δεν έχετε επιλέξει κάποιο βιβλίο"
972
+
973
+ #: admin/page-import.php:133 admin/page-import.php:181
974
+ msgid ""
975
+ "You haven't chosen how to import from WordPress comments. Please choose and "
976
+ "try again."
977
+ msgstr "Δεν έχετε επιλέξει τρόπο εισαγωγής απο WordPress comments"
978
+
979
+ #: admin/page-import.php:168
980
+ msgid ""
981
+ "I'm sorry, but I wasn't able to import comments from that page successfully."
982
+ msgstr "Συγγνώμη αλλά δεν μπορέσαμε να εισάγουμε σχόλια απο αυτή τη σελίδα"
983
+
984
+ #: admin/page-import.php:170
985
+ msgid "1 entry imported successfully from WordPress comments."
986
+ msgstr "1 καταχώρηση εισήχθη απο WordPress comments."
987
+
988
+ #: admin/page-import.php:172
989
+ #, php-format
990
+ msgid "%d entries imported successfully from WordPress comments."
991
+ msgstr "%d καταχωρίσεις εισήχθησαν απο WordPress comments."
992
+
993
+ #: admin/page-import.php:176
994
+ msgid ""
995
+ "<strong>Nothing to import.</strong> There seem to be no comments on this "
996
+ "page, post or at all."
997
+ msgstr "<strong>Τίποτα για εισαγωγή</strong>"
998
+
999
+ #: admin/page-import.php:195
1000
+ msgid "Your filesize is too large."
1001
+ msgstr "Your filesize is too large."
1002
+
1003
+ #: admin/page-import.php:216
1004
+ msgid "Invalid file format."
1005
+ msgstr "Invalid file format."
1006
+
1007
+ #: admin/page-import.php:255
1008
+ msgid ""
1009
+ "It seems your CSV file is from an export that is not compatible with this "
1010
+ "version of Gwolle-GB."
1011
+ msgstr ""
1012
+ "It seems your CSV file is from an export that is not compatible with this "
1013
+ "version of Gwolle-GB."
1014
+
1015
+ #: admin/page-import.php:264 admin/page-import.php:298
1016
+ msgid "Your data seems to be corrupt. Import failed."
1017
+ msgstr "Your data seems to be corrupt. Import failed."
1018
+
1019
+ #: admin/page-import.php:307
1020
+ msgid "I'm sorry, but I wasn't able to import entries from the CSV file."
1021
+ msgstr "I'm sorry, but I wasn't able to import entries from the CSV file."
1022
+
1023
+ #: admin/page-import.php:309
1024
+ msgid "1 entry imported successfully from the CSV file."
1025
+ msgstr "1 entry imported successfully from the CSV file."
1026
+
1027
+ #: admin/page-import.php:311
1028
+ #, php-format
1029
+ msgid "%d entries imported successfully from the CSV file."
1030
+ msgstr "%d entries imported successfully from the CSV file."
1031
+
1032
+ #: admin/page-import.php:320
1033
+ msgid "Your upload triggered the following error:"
1034
+ msgstr "Your upload triggered the following error:"
1035
+
1036
+ #: admin/page-import.php:333
1037
+ msgid "Import guestbook entries."
1038
+ msgstr "Εισαγωγή καταχωρίσεων"
1039
+
1040
+ #: admin/page-import.php:352
1041
+ msgid "Import guestbook entries from DMSGuestbook"
1042
+ msgstr "Import guestbook entries from DMSGuestbook"
1043
+
1044
+ #: admin/page-import.php:381
1045
+ #, php-format
1046
+ msgid "%d entries were found and will be imported."
1047
+ msgstr "%d entries were found and will be imported."
1048
+
1049
+ #: admin/page-import.php:384 admin/page-import.php:425
1050
+ msgid "The importer will preserve the following data per entry:"
1051
+ msgstr "The importer will preserve the following data per entry:"
1052
+
1053
+ #: admin/page-import.php:395 admin/page-import.php:436
1054
+ msgid ""
1055
+ "However, data such as HTML formatting is not supported by Gwolle-GB and "
1056
+ "<strong>will not</strong> be imported."
1057
+ msgstr ""
1058
+ "However, data such as HTML formatting is not supported by Gwolle-GB and "
1059
+ "<strong>will not</strong> be imported."
1060
+
1061
+ #: admin/page-import.php:397 admin/page-import.php:440
1062
+ msgid ""
1063
+ "The importer does not delete any data, so you can go back whenever you want."
1064
+ msgstr ""
1065
+ "The importer does not delete any data, so you can go back whenever you want."
1066
+
1067
+ #: admin/page-import.php:403
1068
+ msgid "Import all entries from DMSGuestbook."
1069
+ msgstr "Import all entries from DMSGuestbook."
1070
+
1071
+ #: admin/page-import.php:407 admin/page-import.php:532
1072
+ #: admin/page-import.php:551
1073
+ msgid "Start import"
1074
+ msgstr "Start import"
1075
+
1076
+ #: admin/page-import.php:410
1077
+ msgid "DMSGuestbook was not found."
1078
+ msgstr "DMSGuestbook was not found."
1079
+
1080
+ #: admin/page-import.php:419
1081
+ msgid "Import guestbook entries from WordPress comments"
1082
+ msgstr "Import guestbook entries from WordPress comments"
1083
+
1084
+ #: admin/page-import.php:428
1085
+ msgid "User ID"
1086
+ msgstr "User ID"
1087
+
1088
+ #: admin/page-import.php:434
1089
+ msgid "\"approved\" status"
1090
+ msgstr "\"approved\" status"
1091
+
1092
+ #: admin/page-import.php:438
1093
+ msgid "Spam comments will not be imported."
1094
+ msgstr ""
1095
+
1096
+ #: admin/page-import.php:443
1097
+ msgid "Select a page to import the comments from:"
1098
+ msgstr "Select a page to import the comments from:"
1099
+
1100
+ #: admin/page-import.php:445 admin/page-import.php:483
1101
+ msgid "Select"
1102
+ msgstr "Select"
1103
+
1104
+ #: admin/page-import.php:469 admin/page-import.php:506
1105
+ msgid " Comments"
1106
+ msgstr " Comments"
1107
+
1108
+ #: admin/page-import.php:471 admin/page-import.php:508
1109
+ msgid "1 Comment"
1110
+ msgstr "1 Comment"
1111
+
1112
+ #: admin/page-import.php:481
1113
+ msgid "Select a post to import the comments from:"
1114
+ msgstr "Select a post to import the comments from:"
1115
+
1116
+ #: admin/page-import.php:525
1117
+ msgid "Select where to import the comments from:"
1118
+ msgstr "Select where to import the comments from:"
1119
+
1120
+ #: admin/page-import.php:526
1121
+ msgid "Comments from selected page."
1122
+ msgstr "Comments from selected page."
1123
+
1124
+ #: admin/page-import.php:527
1125
+ msgid "Comments from selected post."
1126
+ msgstr ""
1127
+
1128
+ #: admin/page-import.php:528
1129
+ msgid "All Comments"
1130
+ msgstr "All Comments"
1131
+
1132
+ #: admin/page-import.php:540
1133
+ msgid "Import guestbook entries from Gwolle-GB"
1134
+ msgstr "Import guestbook entries from Gwolle-GB"
1135
+
1136
+ #: admin/page-import.php:546
1137
+ msgid "Select a CSV file with exported entries to import again:"
1138
+ msgstr "Select a CSV file with exported entries to import again:"
1139
+
1140
+ #: admin/page-settings.php:326
1141
+ msgid "Form"
1142
+ msgstr "Φόρμα"
1143
+
1144
+ #: admin/page-settings.php:327
1145
+ msgid "Reading"
1146
+ msgstr "Ανάγνωση"
1147
+
1148
+ #: admin/page-settings.php:328
1149
+ msgid "Admin"
1150
+ msgstr "Διαχειριστής"
1151
+
1152
+ #: admin/page-settings.php:329 frontend/write.php:282 frontend/write.php:312
1153
+ msgid "Anti-spam"
1154
+ msgstr "Anti-spam"
1155
+
1156
+ #: admin/page-settings.php:330
1157
+ msgid "E-mail"
1158
+ msgstr "E-mail"
1159
+
1160
+ #: admin/page-settings.php:331 admin/tabs/uninstalltab.php:45
1161
+ msgid "Uninstall"
1162
+ msgstr "Απεγκατάσταση"
1163
+
1164
+ #: frontend/gwolle_gb-entry.php:63
1165
+ msgid "from"
1166
+ msgstr "απο"
1167
+
1168
+ #: frontend/gwolle_gb-entry.php:72
1169
+ msgid "wrote on"
1170
+ msgstr "έγραψε την"
1171
+
1172
+ #: frontend/gwolle_gb-entry.php:76
1173
+ msgid "on"
1174
+ msgstr "on"
1175
+
1176
+ #: frontend/posthandling.php:39
1177
+ msgid "Submitting a new guestbook entry is only allowed for logged-in users."
1178
+ msgstr "Η υποβολη καταχωρίσεων επιτρέπεται μόνο στους συνδεδεμένους χρήστες"
1179
+
1180
+ #: frontend/posthandling.php:195 frontend/posthandling.php:238
1181
+ msgid "There were errors submitting your guestbook entry."
1182
+ msgstr "Υπήρξαν λάθη κατα την συγγραφή της καταχώρησης σας"
1183
+
1184
+ #: frontend/posthandling.php:201
1185
+ msgid "Your name is not filled in, even though it is mandatory."
1186
+ msgstr "Δεν δώσατε όνομα"
1187
+
1188
+ #: frontend/posthandling.php:204
1189
+ msgid "Your origin is not filled in, even though it is mandatory."
1190
+ msgstr "Δεν δώσατε πηγή"
1191
+
1192
+ #: frontend/posthandling.php:207
1193
+ msgid ""
1194
+ "Your e-mail address is not filled in correctly, even though it is mandatory."
1195
+ msgstr "Δεν δώσατε e-mail"
1196
+
1197
+ #: frontend/posthandling.php:210
1198
+ msgid "Your website is not filled in, even though it is mandatory."
1199
+ msgstr "Δεν δώσατε url"
1200
+
1201
+ #: frontend/posthandling.php:213
1202
+ msgid "There is no message, even though it is mandatory."
1203
+ msgstr "Δεν υπάρχει μήνυμα"
1204
+
1205
+ #: frontend/posthandling.php:216
1206
+ msgid ""
1207
+ "The anti-spam question was not answered correctly, even though it is "
1208
+ "mandatory."
1209
+ msgstr "Η anti-spam ερώτηση δεν απαντήθηκε"
1210
+
1211
+ #: frontend/posthandling.php:219
1212
+ msgid "The reCAPTCHA was not filled in correctly, even though it is mandatory."
1213
+ msgstr "Το reCAPTCHA δεν συμπληρώθηκε σωστά"
1214
+
1215
+ #: frontend/posthandling.php:311
1216
+ msgid "Double post: An entry with the data you entered has already been saved."
1217
+ msgstr "Διπλότυπο : μια καταχώρηση με τα ίδια στοιχεία υπάρχει ήδη"
1218
+
1219
+ #: frontend/posthandling.php:328
1220
+ msgid "Thank you for your entry."
1221
+ msgstr "Ευχαριστούμε για το σχόλιο σας!"
1222
+
1223
+ #: frontend/posthandling.php:330
1224
+ msgid "We will review it and unlock it in a short while."
1225
+ msgstr "Θα το δημοσιεύσουμε σε λίγο."
1226
+
1227
+ #: frontend/posthandling.php:367 admin/tabs/emailtab.php:138
1228
+ msgid ""
1229
+ "\n"
1230
+ "Hello,\n"
1231
+ "\n"
1232
+ "There is a new guestbook entry at '%blog_name%'.\n"
1233
+ "You can check it at %entry_management_url%.\n"
1234
+ "\n"
1235
+ "Have a nice day.\n"
1236
+ "Your Gwolle-GB-Mailer\n"
1237
+ "\n"
1238
+ "\n"
1239
+ "Website address: %blog_url%\n"
1240
+ "User name: %user_name%\n"
1241
+ "User email: %user_email%\n"
1242
+ "Entry status: %status%\n"
1243
+ "Entry content:\n"
1244
+ "%entry_content%\n"
1245
+ msgstr ""
1246
+ "\n"
1247
+ "Γεια σας,\n"
1248
+ "\n"
1249
+ "Υπάρχει μία νέα καταχώρηση στο'%blog_name%'.\n"
1250
+ "Μπορείτε να τη δείτε εδώ %entry_management_url%.\n"
1251
+ "\n"
1252
+ "Καλή σας μέρα!.\n"
1253
+ " Gwolle-GB-Mailer\n"
1254
+ "\n"
1255
+ "\n"
1256
+ "Διεύθυνση site: %blog_url%\n"
1257
+ "Όνομα χρήστη: %user_name%\n"
1258
+ "e-mail χρήστη: %user_email%\n"
1259
+ "Status καταχώρησης: %status%\n"
1260
+ "Πειρεχόμενο καταχώρησης:\n"
1261
+ "%entry_content%\n"
1262
+
1263
+ #: frontend/posthandling.php:388 frontend/posthandling.php:456
1264
+ msgid "New Guestbook Entry"
1265
+ msgstr "Νέα καταχώρηση"
1266
+
1267
+ #: frontend/posthandling.php:409
1268
+ #, fuzzy
1269
+ msgid "Unchecked"
1270
+ msgstr "Δεν υπάρχουν καινούργιες, μη-ελεγμένες καταχωρήσεις"
1271
+
1272
+ #: frontend/posthandling.php:437 admin/tabs/emailtab.php:198
1273
+ msgid ""
1274
+ "\n"
1275
+ "Hello,\n"
1276
+ "\n"
1277
+ "You have just posted a new guestbook entry at '%blog_name%'.\n"
1278
+ "\n"
1279
+ "Have a nice day.\n"
1280
+ "The editors at %blog_name%.\n"
1281
+ "\n"
1282
+ "\n"
1283
+ "Website address: %blog_url%\n"
1284
+ "User name: %user_name%\n"
1285
+ "User email: %user_email%\n"
1286
+ "Entry content:\n"
1287
+ "%entry_content%\n"
1288
+ msgstr ""
1289
+ "\n"
1290
+ "Γεια σας,\n"
1291
+ "\n"
1292
+ "Μόλις υποβάλατε μια νέα καταχώρηση στο '%blog_name%'.\n"
1293
+ "\n"
1294
+ "Καλή σας μέρα!.\n"
1295
+ "Ο διαχειριστής του %blog_name%.\n"
1296
+ "\n"
1297
+ "\n"
1298
+ "Διεύθυνση site: %blog_url%\n"
1299
+ "Όνομα χρήστη: %user_name%\n"
1300
+ "e-mail χρήστη: %user_email%\n"
1301
+ "Περιεχόμενο καταχώρησης:\n"
1302
+ "%entry_content%\n"
1303
+
1304
+ #: frontend/read.php:79
1305
+ msgid "Previous page"
1306
+ msgstr "Προηγούμενη σελίδα"
1307
+
1308
+ #: frontend/read.php:92 frontend/read.php:100 frontend/read.php:106
1309
+ #: frontend/read.php:121 frontend/read.php:132
1310
+ msgid "Page"
1311
+ msgstr "Σελίδα"
1312
+
1313
+ #: frontend/read.php:103 frontend/read.php:133
1314
+ msgid "Next page"
1315
+ msgstr "Επόμενη σελίδα"
1316
+
1317
+ #: frontend/read.php:144
1318
+ msgid "(no entries yet)"
1319
+ msgstr "Καμία καταχώρηση"
1320
+
1321
+ #: frontend/rss.php:81
1322
+ msgid "Guestbook Entry by"
1323
+ msgstr "Καταχώρηση απο"
1324
+
1325
+ #: frontend/widget.php:12
1326
+ msgid "Displays the recent guestbook entries."
1327
+ msgstr "Displays the recent guestbook entries."
1328
+
1329
+ #: frontend/widget.php:28 frontend/widget.php:194
1330
+ msgid "Visit guestbook"
1331
+ msgstr "Visit guestbook"
1332
+
1333
+ #: frontend/widget.php:147
1334
+ msgid "Click here to get to the guestbook."
1335
+ msgstr "Click here to get to the guestbook."
1336
+
1337
+ #: frontend/widget.php:210
1338
+ msgid "Title:"
1339
+ msgstr "Τίτλος"
1340
+
1341
+ #: frontend/widget.php:216
1342
+ msgid "Number of entries:"
1343
+ msgstr "Πλήθος καταχωρίσεων"
1344
+
1345
+ #: frontend/widget.php:232
1346
+ msgid "Best entries to show:"
1347
+ msgstr "Best entries to show:"
1348
+
1349
+ #: frontend/widget.php:234
1350
+ msgid "List of entry_id's, comma-separated"
1351
+ msgstr "List of entry_id's, comma-separated"
1352
+
1353
+ #: frontend/widget.php:240
1354
+ msgid "Show name of author."
1355
+ msgstr "Show name of author."
1356
+
1357
+ #: frontend/widget.php:246
1358
+ msgid "Show date of entry."
1359
+ msgstr "Show date of entry."
1360
+
1361
+ #: frontend/widget.php:250
1362
+ msgid "Number of words for each entry:"
1363
+ msgstr "Number of words for each entry:"
1364
+
1365
+ #: frontend/widget.php:266
1366
+ msgid "Link text:"
1367
+ msgstr "Link text:"
1368
+
1369
+ #: frontend/widget.php:272
1370
+ msgid "Select the page of the guestbook:"
1371
+ msgstr "Select the page of the guestbook:"
1372
+
1373
+ #: frontend/widget.php:274
1374
+ msgid "Select page"
1375
+ msgstr "Select page"
1376
+
1377
+ #: frontend/write.php:94
1378
+ msgid "Write a new entry."
1379
+ msgstr "Υποβολή νέας καταχώρησης"
1380
+
1381
+ #: frontend/write.php:102
1382
+ msgid "Log in to post an entry"
1383
+ msgstr ""
1384
+
1385
+ #: frontend/write.php:129 admin/tabs/formtab.php:58
1386
+ msgid "Write a new entry for the Guestbook"
1387
+ msgstr "Πείτε μας τη γνώμη σας!</BR></BR>"
1388
+
1389
+ #: frontend/write.php:158 frontend/write.php:165 admin/tabs/formtab.php:125
1390
+ #: admin/tabs/readingtab.php:164
1391
+ msgid "City"
1392
+ msgstr "Πόλη"
1393
+
1394
+ #: frontend/write.php:177 frontend/write.php:184 admin/tabs/formtab.php:145
1395
+ msgid "Email"
1396
+ msgstr "E-mail"
1397
+
1398
+ #: frontend/write.php:283
1399
+ msgid "Question:"
1400
+ msgstr "Ερώτηση:"
1401
+
1402
+ #: frontend/write.php:289
1403
+ msgid "Answer"
1404
+ msgstr "Απάντηση"
1405
+
1406
+ #: frontend/write.php:332
1407
+ msgid "Submit"
1408
+ msgstr "Υποβολή"
1409
+
1410
+ #: frontend/write.php:341 admin/tabs/formtab.php:74
1411
+ msgid ""
1412
+ "\n"
1413
+ "Fields marked with * are obligatory.\n"
1414
+ "Your E-mail address wil not be published.\n"
1415
+ "For security reasons we save the ip address %ip%.\n"
1416
+ "It might be that your entry will only be visible in the guestbook after we "
1417
+ "reviewed it.\n"
1418
+ "We reserve our right to edit, delete, or not publish entries.\n"
1419
+ msgstr ""
1420
+ "\n"
1421
+ "Τα πεδία με * είναι υποχρεωτικά.\n"
1422
+
1423
+ #: functions/function.log.php:94
1424
+ msgid "Entry has been locked."
1425
+ msgstr "Η συγκεκριμένη καταχώρηση κλειδώθηκε"
1426
+
1427
+ #: functions/function.log.php:95
1428
+ msgid "Entry has been checked."
1429
+ msgstr "Η συγκεκριμένη καταχώρηση έχει ελεγχθεί"
1430
+
1431
+ #: functions/function.log.php:96
1432
+ msgid "Entry marked as spam."
1433
+ msgstr "Spam"
1434
+
1435
+ #: functions/function.log.php:97
1436
+ msgid "Entry marked as not spam."
1437
+ msgstr "Μη spam"
1438
+
1439
+ #: functions/function.log.php:98
1440
+ msgid "Entry has been edited."
1441
+ msgstr "Entry has been edited."
1442
+
1443
+ #: functions/function.log.php:99
1444
+ msgid "Imported from DMSGuestbook"
1445
+ msgstr "Imported from DMSGuestbook"
1446
+
1447
+ #: functions/function.log.php:100
1448
+ msgid "Imported from WordPress comments"
1449
+ msgstr "Imported from WordPress comments"
1450
+
1451
+ #: functions/function.log.php:101
1452
+ msgid "Imported from Gwolle-GB"
1453
+ msgstr "Imported from Gwolle-GB"
1454
+
1455
+ #: functions/function.log.php:102
1456
+ msgid "Exported to CSV file"
1457
+ msgstr "Exported to CSV file"
1458
+
1459
+ #: functions/function.log.php:103
1460
+ msgid "Entry has been trashed."
1461
+ msgstr "Entry has been trashed."
1462
+
1463
+ #: functions/function.log.php:104
1464
+ msgid "Entry has been untrashed."
1465
+ msgstr "Entry has been untrashed."
1466
+
1467
+ #: functions/function.misc.php:66
1468
+ msgid "No content to display. This entry is empty."
1469
+ msgstr "No content to display. This entry is empty."
1470
+
1471
+ #: functions/function.misc.php:324
1472
+ msgid "Day"
1473
+ msgstr ""
1474
+
1475
+ #: functions/function.misc.php:327
1476
+ msgid "Month"
1477
+ msgstr ""
1478
+
1479
+ #: functions/function.misc.php:332
1480
+ #, php-format
1481
+ msgid "%1$s-%2$s"
1482
+ msgstr ""
1483
+
1484
+ #: functions/function.misc.php:337
1485
+ msgid "Year"
1486
+ msgstr ""
1487
+
1488
+ #: functions/function.misc.php:340
1489
+ msgid "Hour"
1490
+ msgstr ""
1491
+
1492
+ #: functions/function.misc.php:342
1493
+ msgid "Minute"
1494
+ msgstr ""
1495
+
1496
+ #: functions/function.misc.php:351
1497
+ #, fuzzy
1498
+ msgid "Save the date and time"
1499
+ msgstr "Date and Time"
1500
+
1501
+ #: functions/function.misc.php:352
1502
+ msgid "OK"
1503
+ msgstr ""
1504
+
1505
+ #: functions/function.misc.php:354
1506
+ msgid "Cancel saving date and time"
1507
+ msgstr ""
1508
+
1509
+ #: functions/function.misc.php:355
1510
+ msgid "Cancel"
1511
+ msgstr ""
1512
+
1513
+ #: admin/tabs/admintab.php:26
1514
+ msgid "Entries per page in the admin"
1515
+ msgstr "Entries per page in the admin"
1516
+
1517
+ #: admin/tabs/admintab.php:41
1518
+ msgid "Number of entries shown in the admin."
1519
+ msgstr "Number of entries shown in the admin."
1520
+
1521
+ #: admin/tabs/admintab.php:46
1522
+ msgid "Entry icons"
1523
+ msgstr "Entry icons"
1524
+
1525
+ #: admin/tabs/admintab.php:52
1526
+ msgid "Show entry icons"
1527
+ msgstr "Show entry icons"
1528
+
1529
+ #: admin/tabs/admintab.php:54
1530
+ msgid ""
1531
+ "These icons are shown in every entry row of the admin list, so that you know "
1532
+ "its status (checked, spam and trash)."
1533
+ msgstr ""
1534
+ "These icons are shown in every entry row of the admin list, so that you know "
1535
+ "its status (checked, spam and trash)."
1536
+
1537
+ #: admin/tabs/admintab.php:61 admin/tabs/antispamtab.php:135
1538
+ #: admin/tabs/emailtab.php:235 admin/tabs/formtab.php:252
1539
+ #: admin/tabs/readingtab.php:229
1540
+ msgid "Save settings"
1541
+ msgstr "Save settings"
1542
+
1543
+ #: admin/tabs/antispamtab.php:26
1544
+ msgid "Moderate Guestbook"
1545
+ msgstr "Moderate Guestbook"
1546
+
1547
+ #: admin/tabs/antispamtab.php:34
1548
+ msgid "Moderate entries before publishing them."
1549
+ msgstr "Moderate entries before publishing them."
1550
+
1551
+ #: admin/tabs/antispamtab.php:38
1552
+ msgid ""
1553
+ "New entries have to be unlocked by a moderator before they are visible to "
1554
+ "the public."
1555
+ msgstr ""
1556
+ "New entries have to be unlocked by a moderator before they are visible to "
1557
+ "the public."
1558
+
1559
+ #: admin/tabs/antispamtab.php:40
1560
+ msgid ""
1561
+ "It is recommended that you turn this on, because you are responsible for the "
1562
+ "content on your website."
1563
+ msgstr ""
1564
+ "It is recommended that you turn this on, because you are responsible for the "
1565
+ "content on your website."
1566
+
1567
+ #: admin/tabs/antispamtab.php:50
1568
+ msgid "Learn more about Akismet..."
1569
+ msgstr "Learn more about Akismet..."
1570
+
1571
+ #: admin/tabs/antispamtab.php:50 admin/tabs/antispamtab.php:106
1572
+ msgid "What's that?"
1573
+ msgstr "What's that?"
1574
+
1575
+ #: admin/tabs/antispamtab.php:60
1576
+ msgid ""
1577
+ "Akismet helps you to fight spam. It's free and easy to install. Download and "
1578
+ "install it today to stop spam in your guestbook."
1579
+ msgstr ""
1580
+ "Akismet helps you to fight spam. It's free and easy to install. Download and "
1581
+ "install it today to stop spam in your guestbook."
1582
+
1583
+ #: admin/tabs/antispamtab.php:63
1584
+ #, php-format
1585
+ msgid ""
1586
+ "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1587
+ "can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1588
+ msgstr ""
1589
+ "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1590
+ "can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1591
+
1592
+ #: admin/tabs/antispamtab.php:72
1593
+ msgid "Use Akismet"
1594
+ msgstr "Use Akismet"
1595
+
1596
+ #: admin/tabs/antispamtab.php:74
1597
+ msgid ""
1598
+ "The WordPress API key has been found, so you can start using Akismet right "
1599
+ "now."
1600
+ msgstr ""
1601
+ "The WordPress API key has been found, so you can start using Akismet right "
1602
+ "now."
1603
+
1604
+ #: admin/tabs/antispamtab.php:85
1605
+ msgid "Custom Anti-Spam Security Question"
1606
+ msgstr "Custom Anti-Spam Security Question"
1607
+
1608
+ #: admin/tabs/antispamtab.php:88
1609
+ msgid "12 + six ="
1610
+ msgstr "12 + six ="
1611
+
1612
+ #: admin/tabs/antispamtab.php:89
1613
+ msgid "Custom security question to battle spam."
1614
+ msgstr "Custom security question to battle spam."
1615
+
1616
+ #: admin/tabs/antispamtab.php:91
1617
+ msgid "18"
1618
+ msgstr "18"
1619
+
1620
+ #: admin/tabs/antispamtab.php:92
1621
+ msgid "The answer to your security question."
1622
+ msgstr "The answer to your security question."
1623
+
1624
+ #: admin/tabs/antispamtab.php:94
1625
+ msgid ""
1626
+ "You can ask your visitors to answer a custom security question, so only real "
1627
+ "people can post an entry."
1628
+ msgstr ""
1629
+ "You can ask your visitors to answer a custom security question, so only real "
1630
+ "people can post an entry."
1631
+
1632
+ #: admin/tabs/antispamtab.php:106
1633
+ msgid "Learn more about reCAPTCHA..."
1634
+ msgstr "Learn more about reCAPTCHA..."
1635
+
1636
+ #: admin/tabs/antispamtab.php:112
1637
+ msgid "<strong>Site (Public)</strong> key of your reCAPTCHA account"
1638
+ msgstr "<strong>Site (Public)</strong> key of your reCAPTCHA account"
1639
+
1640
+ #: admin/tabs/antispamtab.php:115
1641
+ msgid "<strong>Secret</strong> key of your reCAPTCHA account"
1642
+ msgstr "<strong>Secret</strong> key of your reCAPTCHA account"
1643
+
1644
+ #: admin/tabs/antispamtab.php:118
1645
+ msgid ""
1646
+ "reCAPTCHA is a way to have visitors fill in a field with a few letters or "
1647
+ "numbers. It is a way to make sure that you have a human visitor and not a "
1648
+ "spambot. Not every visitor will appreciate it though, some will consider it "
1649
+ "unfriendly."
1650
+ msgstr ""
1651
+ "reCAPTCHA is a way to have visitors fill in a field with a few letters or "
1652
+ "numbers. It is a way to make sure that you have a human visitor and not a "
1653
+ "spambot. Not every visitor will appreciate it though, some will consider it "
1654
+ "unfriendly."
1655
+
1656
+ #: admin/tabs/antispamtab.php:120
1657
+ msgid "The keys can be found at your"
1658
+ msgstr "The keys can be found at your"
1659
+
1660
+ #: admin/tabs/antispamtab.php:120
1661
+ msgid "Go to my reCAPTCHA sites..."
1662
+ msgstr "Go to my reCAPTCHA sites..."
1663
+
1664
+ #: admin/tabs/antispamtab.php:120
1665
+ msgid "reCAPTCHA sites overview"
1666
+ msgstr "reCAPTCHA sites overview"
1667
+
1668
+ #: admin/tabs/antispamtab.php:126
1669
+ #, php-format
1670
+ msgid ""
1671
+ "reCAPTCHA requires PHP version 5.3 or newer. You are using PHP version %s. "
1672
+ "Contact your hosting provider."
1673
+ msgstr ""
1674
+
1675
+ #: admin/tabs/emailtab.php:26
1676
+ msgid "Admin mail from address"
1677
+ msgstr "Admin mail from address"
1678
+
1679
+ #: admin/tabs/emailtab.php:32
1680
+ msgid ""
1681
+ "You can set the email address that is used for the From header of the mail "
1682
+ "that a notification subscriber gets on new entries."
1683
+ msgstr ""
1684
+ "You can set the email address that is used for the From header of the mail "
1685
+ "that a notification subscriber gets on new entries."
1686
+
1687
+ #: admin/tabs/emailtab.php:34
1688
+ msgid "By default the main admin address is used from General >> Settings."
1689
+ msgstr "By default the main admin address is used from General >> Settings."
1690
+
1691
+ #: admin/tabs/emailtab.php:41
1692
+ msgid "Unsubscribe moderators"
1693
+ msgstr "Unsubscribe moderators"
1694
+
1695
+ #: admin/tabs/emailtab.php:51
1696
+ msgid "Unsubscribe User"
1697
+ msgstr "Unsubscribe User"
1698
+
1699
+ #: admin/tabs/emailtab.php:73
1700
+ msgid "These users have subscribed to the notification emails."
1701
+ msgstr "These users have subscribed to the notification emails."
1702
+
1703
+ #: admin/tabs/emailtab.php:74
1704
+ msgid ""
1705
+ "Select a user if you want that user to unsubscribe from the notification "
1706
+ "emails."
1707
+ msgstr ""
1708
+ "Select a user if you want that user to unsubscribe from the notification "
1709
+ "emails."
1710
+
1711
+ #: admin/tabs/emailtab.php:79
1712
+ msgid "Subscribe moderators"
1713
+ msgstr "Subscribe moderators"
1714
+
1715
+ #: admin/tabs/emailtab.php:82
1716
+ msgid "Subscribe User"
1717
+ msgstr "Subscribe User"
1718
+
1719
+ #: admin/tabs/emailtab.php:125
1720
+ msgid "You can subscribe a moderator to the notification emails."
1721
+ msgstr "You can subscribe a moderator to the notification emails."
1722
+
1723
+ #: admin/tabs/emailtab.php:126
1724
+ msgid "Select a user that you want subscribed to the notification emails."
1725
+ msgstr "Select a user that you want subscribed to the notification emails."
1726
+
1727
+ #: admin/tabs/emailtab.php:127
1728
+ msgid ""
1729
+ "You will only see users with the roles of Administrator, Editor and Author, "
1730
+ "who have the capability 'moderate_comments' ."
1731
+ msgstr ""
1732
+ "You will only see users with the roles of Administrator, Editor and Author, "
1733
+ "who have the capability 'moderate_comments' ."
1734
+
1735
+ #: admin/tabs/emailtab.php:133
1736
+ msgid "Admin mail content"
1737
+ msgstr "Admin mail content"
1738
+
1739
+ #: admin/tabs/emailtab.php:160
1740
+ msgid ""
1741
+ "You can set the content of the mail that a notification subscriber gets on "
1742
+ "new entries. The following tags are supported:"
1743
+ msgstr ""
1744
+ "You can set the content of the mail that a notification subscriber gets on "
1745
+ "new entries. The following tags are supported:"
1746
+
1747
+ #: admin/tabs/emailtab.php:175
1748
+ msgid "Mail Author"
1749
+ msgstr "Mail Author"
1750
+
1751
+ #: admin/tabs/emailtab.php:183
1752
+ msgid "Mail the author with a confirmation email."
1753
+ msgstr "Mail the author with a confirmation email."
1754
+
1755
+ #: admin/tabs/emailtab.php:187
1756
+ msgid ""
1757
+ "The author of the guestbook entry will receive an email after posting. It "
1758
+ "will have a copy of the entry."
1759
+ msgstr ""
1760
+ "The author of the guestbook entry will receive an email after posting. It "
1761
+ "will have a copy of the entry."
1762
+
1763
+ #: admin/tabs/emailtab.php:193
1764
+ msgid "Author mail content"
1765
+ msgstr "Author mail content"
1766
+
1767
+ #: admin/tabs/emailtab.php:218
1768
+ msgid ""
1769
+ "You can set the content of the mail that the author of the entry will "
1770
+ "receive. The following tags are supported:"
1771
+ msgstr ""
1772
+ "You can set the content of the mail that the author of the entry will "
1773
+ "receive. The following tags are supported:"
1774
+
1775
+ #: admin/tabs/formtab.php:26
1776
+ msgid "Require Login"
1777
+ msgstr "Require Login"
1778
+
1779
+ #: admin/tabs/formtab.php:33
1780
+ msgid "Require user to be logged in."
1781
+ msgstr "Require user to be logged in."
1782
+
1783
+ #: admin/tabs/formtab.php:35
1784
+ msgid "Only allow logged-in users to add a guestbook entry."
1785
+ msgstr "Only allow logged-in users to add a guestbook entry."
1786
+
1787
+ #: admin/tabs/formtab.php:40
1788
+ msgid "Labels float"
1789
+ msgstr "Labels float"
1790
+
1791
+ #: admin/tabs/formtab.php:47
1792
+ msgid "Labels in the form float to the left."
1793
+ msgstr "Labels in the form float to the left."
1794
+
1795
+ #: admin/tabs/formtab.php:49
1796
+ msgid ""
1797
+ "Labels in the form float to the left. Otherwise the labels will be above the "
1798
+ "input-fields."
1799
+ msgstr ""
1800
+ "Labels in the form float to the left. Otherwise the labels will be above the "
1801
+ "input-fields."
1802
+
1803
+ #: admin/tabs/formtab.php:54
1804
+ msgid "Header Text"
1805
+ msgstr "Header Text"
1806
+
1807
+ #: admin/tabs/formtab.php:63
1808
+ msgid "You can set the header that is shown on top of the form."
1809
+ msgstr "You can set the header that is shown on top of the form."
1810
+
1811
+ #: admin/tabs/formtab.php:69
1812
+ msgid "Notice Text"
1813
+ msgstr "Notice Text"
1814
+
1815
+ #: admin/tabs/formtab.php:86
1816
+ msgid "You can set the content of the notice that gets shown below the form."
1817
+ msgstr "You can set the content of the notice that gets shown below the form."
1818
+
1819
+ #: admin/tabs/formtab.php:88
1820
+ msgid "You can use the tag %ip% to show the ip address."
1821
+ msgstr "You can use the tag %ip% to show the ip address."
1822
+
1823
+ #: admin/tabs/formtab.php:101
1824
+ msgid "Configure the form that is shown to visitors."
1825
+ msgstr "Configure the form that is shown to visitors."
1826
+
1827
+ #: admin/tabs/formtab.php:112 admin/tabs/formtab.php:132
1828
+ #: admin/tabs/formtab.php:152 admin/tabs/formtab.php:172
1829
+ #: admin/tabs/formtab.php:192 admin/tabs/formtab.php:212
1830
+ #: admin/tabs/formtab.php:227 admin/tabs/formtab.php:242
1831
+ #: admin/tabs/readingtab.php:147 admin/tabs/readingtab.php:159
1832
+ #: admin/tabs/readingtab.php:171 admin/tabs/readingtab.php:183
1833
+ #: admin/tabs/readingtab.php:196 admin/tabs/readingtab.php:209
1834
+ #: admin/tabs/readingtab.php:221
1835
+ msgid "Enabled"
1836
+ msgstr "Enabled"
1837
+
1838
+ #: admin/tabs/formtab.php:120 admin/tabs/formtab.php:140
1839
+ #: admin/tabs/formtab.php:160 admin/tabs/formtab.php:180
1840
+ #: admin/tabs/formtab.php:200
1841
+ msgid "Mandatory"
1842
+ msgstr "Mandatory"
1843
+
1844
+ #: admin/tabs/formtab.php:205
1845
+ msgid "BBcode and Emoji"
1846
+ msgstr ""
1847
+
1848
+ #: admin/tabs/formtab.php:215
1849
+ msgid "Will only be shown if the Message is enabled."
1850
+ msgstr ""
1851
+
1852
+ #: admin/tabs/formtab.php:220
1853
+ msgid "Custom Anti-spam"
1854
+ msgstr "Custom Anti-spam"
1855
+
1856
+ #: admin/tabs/formtab.php:230 admin/tabs/formtab.php:245
1857
+ msgid "When enabled it is mandatory."
1858
+ msgstr "When enabled it is mandatory."
1859
+
1860
+ #: admin/tabs/formtab.php:235 admin/tabs/uninstalltab.php:63
1861
+ msgid "reCAPTCHA"
1862
+ msgstr "reCAPTCHA"
1863
+
1864
+ #: admin/tabs/readingtab.php:26
1865
+ msgid "Entries per page on the frontend"
1866
+ msgstr "Entries per page on the frontend"
1867
+
1868
+ #: admin/tabs/readingtab.php:41
1869
+ msgid "Number of entries shown on the frontend."
1870
+ msgstr "Number of entries shown on the frontend."
1871
+
1872
+ #: admin/tabs/readingtab.php:46
1873
+ msgid "Length of the entry content"
1874
+ msgstr "Length of the entry content"
1875
+
1876
+ #: admin/tabs/readingtab.php:56
1877
+ msgid "Unlimited Words"
1878
+ msgstr "Unlimited Words"
1879
+
1880
+ #: admin/tabs/readingtab.php:63
1881
+ msgid "Words"
1882
+ msgstr "Words"
1883
+
1884
+ #: admin/tabs/readingtab.php:69
1885
+ msgid "Maximum length of the entry content in words."
1886
+ msgstr "Maximum length of the entry content in words."
1887
+
1888
+ #: admin/tabs/readingtab.php:70
1889
+ msgid "Please be aware that this will strip linebreaks as well."
1890
+ msgstr ""
1891
+
1892
+ #: admin/tabs/readingtab.php:76
1893
+ msgid "Line breaks"
1894
+ msgstr "Line breaks"
1895
+
1896
+ #: admin/tabs/readingtab.php:83
1897
+ msgid "Show line breaks."
1898
+ msgstr "Show line breaks."
1899
+
1900
+ #: admin/tabs/readingtab.php:85
1901
+ msgid ""
1902
+ "Show line breaks as the entry authors entered them. (May result in very long "
1903
+ "entries. Is turned off by default.)"
1904
+ msgstr ""
1905
+ "Show line breaks as the entry authors entered them. (May result in very long "
1906
+ "entries. Is turned off by default.)"
1907
+
1908
+ #: admin/tabs/readingtab.php:90
1909
+ msgid "Smileys"
1910
+ msgstr "Smileys"
1911
+
1912
+ #: admin/tabs/readingtab.php:97
1913
+ msgid "Display smileys as images."
1914
+ msgstr "Display smileys as images."
1915
+
1916
+ #: admin/tabs/readingtab.php:99
1917
+ #, php-format
1918
+ msgid ""
1919
+ "Replaces smileys in entries like :) with their image %s. Uses the WP smiley "
1920
+ "replacer, so check on that one if you'd like to add new/more smileys."
1921
+ msgstr ""
1922
+ "Replaces smileys in entries like :) with their image %s. Uses the WP smiley "
1923
+ "replacer, so check on that one if you'd like to add new/more smileys."
1924
+
1925
+ #: admin/tabs/readingtab.php:104
1926
+ msgid "Links"
1927
+ msgstr "Links"
1928
+
1929
+ #: admin/tabs/readingtab.php:111
1930
+ msgid "Link authors' name to their website."
1931
+ msgstr "Link authors' name to their website."
1932
+
1933
+ #: admin/tabs/readingtab.php:113
1934
+ msgid ""
1935
+ "The author of an entry can set his/her website. If this setting is checked, "
1936
+ "his/her name will be a link to that website."
1937
+ msgstr ""
1938
+ "The author of an entry can set his/her website. If this setting is checked, "
1939
+ "his/her name will be a link to that website."
1940
+
1941
+ #: admin/tabs/readingtab.php:118
1942
+ msgid "Admin Entry Styling"
1943
+ msgstr "Admin Entry Styling"
1944
+
1945
+ #: admin/tabs/readingtab.php:125
1946
+ msgid "Admin entries get a special CSS styling."
1947
+ msgstr "Admin entries get a special CSS styling."
1948
+
1949
+ #: admin/tabs/readingtab.php:127
1950
+ msgid ""
1951
+ "Admin entries get a special CSS styling. It will get a lightgrey background."
1952
+ msgstr ""
1953
+ "Admin entries get a special CSS styling. It will get a lightgrey background."
1954
+
1955
+ #: admin/tabs/readingtab.php:135
1956
+ msgid "Configure the parts of the entries that are shown to visitors."
1957
+ msgstr "Configure the parts of the entries that are shown to visitors."
1958
+
1959
+ #: admin/tabs/readingtab.php:140
1960
+ msgid "Avatar"
1961
+ msgstr "Avatar"
1962
+
1963
+ #: admin/tabs/readingtab.php:176
1964
+ msgid "Date and Time"
1965
+ msgstr "Date and Time"
1966
+
1967
+ #: admin/tabs/readingtab.php:184
1968
+ msgid "Setting this will show the date and the time of the entry."
1969
+ msgstr "Setting this will show the date and the time of the entry."
1970
+
1971
+ #: admin/tabs/readingtab.php:197
1972
+ msgid ""
1973
+ "Setting this will show the date of the entry. If Date and Time above are "
1974
+ "enabled, that setting has preference."
1975
+ msgstr ""
1976
+ "Setting this will show the date of the entry. If Date and Time above are "
1977
+ "enabled, that setting has preference."
1978
+
1979
+ #: admin/tabs/readingtab.php:202
1980
+ msgid "Content"
1981
+ msgstr "Content"
1982
+
1983
+ #: admin/tabs/readingtab.php:214
1984
+ msgid "Edit link"
1985
+ msgstr "Edit link"
1986
+
1987
+ #: admin/tabs/readingtab.php:222
1988
+ msgid ""
1989
+ "A link to the editor will be added to the content. Only visible for "
1990
+ "moderators."
1991
+ msgstr ""
1992
+ "A link to the editor will be added to the content. Only visible for "
1993
+ "moderators."
1994
+
1995
+ #: admin/tabs/uninstalltab.php:34
1996
+ msgid "The entries and settings have been removed."
1997
+ msgstr "The entries and settings have been removed."
1998
+
1999
+ #: admin/tabs/uninstalltab.php:35
2000
+ msgid "The plugin is deactivated."
2001
+ msgstr "The plugin is deactivated."
2002
+
2003
+ #: admin/tabs/uninstalltab.php:36
2004
+ msgid "You can now go to your"
2005
+ msgstr "You can now go to your"
2006
+
2007
+ #: admin/tabs/uninstalltab.php:36
2008
+ msgid "dashboard."
2009
+ msgstr "dashboard."
2010
+
2011
+ #: admin/tabs/uninstalltab.php:47
2012
+ msgid ""
2013
+ "Uninstalling means that all database entries are removed (settings and "
2014
+ "entries)."
2015
+ msgstr ""
2016
+ "Uninstalling means that all database entries are removed (settings and "
2017
+ "entries)."
2018
+
2019
+ #: admin/tabs/uninstalltab.php:49
2020
+ msgid "This can <strong>not</strong> be undone."
2021
+ msgstr "This can <strong>not</strong> be undone."
2022
+
2023
+ #: admin/tabs/uninstalltab.php:55
2024
+ msgid "Confirm"
2025
+ msgstr "Confirm"
2026
+
2027
+ #: admin/tabs/uninstalltab.php:58
2028
+ msgid "Yes, I'm absolutely sure of this. Proceed!"
2029
+ msgstr "Yes, I'm absolutely sure of this. Proceed!"
2030
+
2031
+ #: admin/tabs/uninstalltab.php:66
2032
+ msgid "Also delete the reCAPTCHA keys"
2033
+ msgstr "Also delete the reCAPTCHA keys"
2034
+
2035
+ #: admin/tabs/uninstalltab.php:73
2036
+ msgid "Uninstall &raquo;"
2037
+ msgstr "Uninstall &raquo;"
2038
+
2039
+ #~ msgid ""
2040
+ #~ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library "
2041
+ #~ "in your theme or another plugin. The reCAPTCHA library in Gwolle-GB will "
2042
+ #~ "not be loaded, and the found one will be used instead. This might give "
2043
+ #~ "unexpected results."
2044
+ #~ msgstr ""
2045
+ #~ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library "
2046
+ #~ "in your theme or another plugin. The reCAPTCHA library in Gwolle-GB will "
2047
+ #~ "not be loaded, and the found one will be used instead. This might give "
2048
+ #~ "unexpected results."
2049
+
2050
+ #~ msgid ""
2051
+ #~ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library "
2052
+ #~ "in your theme or another plugin. However, this is an old and incompatible "
2053
+ #~ "version, so reCAPTCHA will not be used for Gwolle-GB."
2054
+ #~ msgstr ""
2055
+ #~ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library "
2056
+ #~ "in your theme or another plugin. However, this is an old and incompatible "
2057
+ #~ "version, so reCAPTCHA will not be used for Gwolle-GB."
2058
+
2059
+ #~ msgid "Donate"
2060
+ #~ msgstr "Дарете"
2061
+
2062
+ #~ msgid "No Comments"
2063
+ #~ msgstr "Няма коментари"
2064
+
2065
+ #~ msgid "Import all entries from this page."
2066
+ #~ msgstr "Импортиране на всички записи от тази страница."
2067
+
2068
+ #~ msgid "hours"
2069
+ #~ msgstr "час"
lang/gwolle-gb-es_ES.mo ADDED
Binary file
lang/gwolle-gb-es_ES.po ADDED
@@ -0,0 +1,717 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Gwolle-GB\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-03-16 14:05+0100\n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: José Luis Sanz Ruiz <joseluis90m@gmail.com>\n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: __;_e\n"
13
+ "X-Poedit-Basepath: /Users/wolfgangtimme/Sites/heinegym/wordpress/wp-content/"
14
+ "plugins/gwolle-gb/\n"
15
+ "X-Poedit-SearchPath-0: .\n"
16
+
17
+ msgid "(no entries yet)"
18
+ msgstr "(Nadie ha firmado aún)"
19
+
20
+ msgid "<br>We will review it and unlock it in a short while."
21
+ msgstr "revisaremos su firma y será aprobada lo antes posible."
22
+
23
+ msgid "<strong>Attention:</strong> This entry is marked as spam!"
24
+ msgstr "<strong>Atención:</strong> Esta firma se ha marcado como spam!"
25
+
26
+ msgid "<strong>Private</strong> key of your Recaptcha account"
27
+ msgstr "Clave <strong>privada</strong> de su cuenta de Recaptcha"
28
+
29
+ msgid "<strong>Public</strong> key of your Recaptcha account"
30
+ msgstr "Clave <strong>pública</strong> de su cuenta de Recaptcha"
31
+
32
+ msgid ""
33
+ "A message will be sent to the Akismet team that this entry is not spam. "
34
+ "Continue?"
35
+ msgstr ""
36
+ "Se va a enviar un mensaje al equipo de Akismet para comunicar que esta firma "
37
+ "realmente no es spam. ¿Continuar?"
38
+
39
+ msgid "Access control"
40
+ msgstr "Control de acceso"
41
+
42
+ msgid "Action"
43
+ msgstr "Acción"
44
+
45
+ msgid "Admin mail content"
46
+ msgstr "Contenido del e-mail enviado al administrador"
47
+
48
+ msgid ""
49
+ "Akismet helps you to fight spam. It's free and easy to install. Download and "
50
+ "install it today to stop spam in your guestbook."
51
+ msgstr ""
52
+ "Akismet le ayuda a combatir el spam en su web. Es gratuito y fácil de "
53
+ "instalar. Descargue e instalelo ahora para evitar el spam en su libro de "
54
+ "visitas."
55
+
56
+ msgid "All"
57
+ msgstr "Todo"
58
+
59
+ msgid "Allright, we're done. <a href=\"%1\">Click here to continue...</a>"
60
+ msgstr ""
61
+ "Correcto, todo lo que hemos hecho <a href=\"%1\">Click aquí para continuar..."
62
+ "</a>"
63
+
64
+ msgid "An error occured while trying to delete the entry."
65
+ msgstr "Ocurrió un error mientras se eliminaba la firma."
66
+
67
+ msgid "An error occurred while saving your changes."
68
+ msgstr "Ha ocurrido un error mientras se guardaban los cambios."
69
+
70
+ msgid "Apply"
71
+ msgstr "Aplicar"
72
+
73
+ msgid "Author"
74
+ msgstr "Autor"
75
+
76
+ msgid "Author's IP-address"
77
+ msgstr "Dirección IP del autor"
78
+
79
+ msgid "Back to the entries."
80
+ msgstr "Volver a las firmas."
81
+
82
+ msgid "Changes saved."
83
+ msgstr "Los cambios se han guardado."
84
+
85
+ msgid "Changes successfully saved."
86
+ msgstr "Los cambios se guardaron correctamente."
87
+
88
+ msgid ""
89
+ "Choose a heading (doesn't matter) and set &quot;[gwolle-gb]&quot; (without "
90
+ "the quotes) as the content."
91
+ msgstr ""
92
+ "Elija un título (no importa cual) y pegue &quot;[gwolle-gb]&quot (sin "
93
+ "comillas) como contenido."
94
+
95
+ msgid "Choose the userlevel that has access to the guestbook backend."
96
+ msgstr ""
97
+ "Elija el nivel de usuarios que pueden tener acceso total sobre el libro de "
98
+ "visitas."
99
+
100
+ msgid "Class by"
101
+ msgstr "Clasificado por"
102
+
103
+ msgid "Create a new article or page."
104
+ msgstr "Crear un nuevo artículo o página."
105
+
106
+ msgid "Date"
107
+ msgstr "Fecha"
108
+
109
+ msgid "Delete"
110
+ msgstr "Eliminar"
111
+
112
+ msgid "Details"
113
+ msgstr "Detalles"
114
+
115
+ msgid "E-Mail"
116
+ msgstr "E-mail"
117
+
118
+ msgid "E-Mail me no matter the new entry is spam or not."
119
+ msgstr "Notificarme por email aunque la nueva firma sea spam."
120
+
121
+ msgid "Edit guestbook entry"
122
+ msgstr "Editar firma"
123
+
124
+ msgid "Entries"
125
+ msgstr "Firmas"
126
+
127
+ msgid "Entries per page"
128
+ msgstr "Firmas por página"
129
+
130
+ msgid "Entry (excerpt)"
131
+ msgstr "Firma (extracto)"
132
+
133
+ msgid "Entry could not be found."
134
+ msgstr "La firma no pudo ser encontrada."
135
+
136
+ msgid "Entry editor"
137
+ msgstr "Editor de firmas"
138
+
139
+ msgid "Entry has been locked."
140
+ msgstr "La firma ha sido bloqueada."
141
+
142
+ msgid "Entry has been unlocked."
143
+ msgstr "La firma ha sido desbloqueada."
144
+
145
+ msgid "Entry icons"
146
+ msgstr "Iconos de la firma"
147
+
148
+ msgid "Entry marked as not-spam."
149
+ msgstr "La firma ha sido marcada como no-spam."
150
+
151
+ msgid "Entry marked as spam."
152
+ msgstr "La firma ha sido marcada como spam."
153
+
154
+ msgid "Entry successfully classified as not-spam."
155
+ msgstr "La firma se marcó correcamente como no-spam."
156
+
157
+ msgid "Entry successfully deleted."
158
+ msgstr "La firma se ha eliminado correctamente."
159
+
160
+ msgid "Error"
161
+ msgstr "Error"
162
+
163
+ msgid ""
164
+ "Example: <code>http://www.google.com/</code> &#8212; don't forget the "
165
+ "<code>http://</code>!"
166
+ msgstr ""
167
+ "Ejemplo: <code>http://www.google.com/</code> &#8212; ¡No olvides poner "
168
+ "delante <code>http://</code>!"
169
+
170
+ msgid "Fields marked with * are obligatory."
171
+ msgstr "Los campos marcados con * son obligatorios, el resto opcionales."
172
+
173
+ msgid "For security reasons we save you ip address <span id=\"ip\">%1</span>."
174
+ msgstr ""
175
+ "Por razones de seguridad guardaremos su dirección IP <span id=\"ip\">%1</"
176
+ "span>, no se alarme, sólo la usamos en casos de spam o actividades "
177
+ "delictivas en este blog."
178
+
179
+ msgid "Form fields"
180
+ msgstr "Campos del formulario"
181
+
182
+ msgid "Go to my reCAPTCHA sites..."
183
+ msgstr "Ir a mis sitios reCAPTCHA..."
184
+
185
+ msgid "Guestbook"
186
+ msgstr "Libro de visitas"
187
+
188
+ msgid "Guestbook entries"
189
+ msgstr "Firmas del libro de visitas"
190
+
191
+ msgid "Guestbook entry"
192
+ msgstr "Firma en el libro"
193
+
194
+ msgid ""
195
+ "Hello,\n"
196
+ "\n"
197
+ "there is a new guestbook entry at '%blog_name%'.\n"
198
+ "You can check it at %entry_management_url%.\n"
199
+ "\n"
200
+ "Have a nice day!\n"
201
+ "Your Gwolle-GB-Mailer"
202
+ msgstr ""
203
+ "Hola,\n"
204
+ "\n"
205
+ "Hay una nueva firma en su libro de visitas de '%blog_name%'.\n"
206
+ "Puede revisarla aquí: %entry_management_url%.\n"
207
+ "\n"
208
+ "¡Tenga un buen día!\n"
209
+ "Su servicio de email de Gwolle-GB"
210
+
211
+ msgid "Help"
212
+ msgstr "Ayuda"
213
+
214
+ msgid "Here you can manage the entries."
215
+ msgstr "Aquí puede gestionar las firmas."
216
+
217
+ msgid "Homepage"
218
+ msgstr "Página Web personal"
219
+
220
+ msgid "Host"
221
+ msgstr "Servidor de acceso / ISP"
222
+
223
+ msgid ""
224
+ "I really don't want to bother you; this page just exists to prevent you from "
225
+ "accidentally deleting all your entries.<br>Please check the 'uninstall' "
226
+ "checkbox and hit the button; all tables (including their rows) and all "
227
+ "settings of Gwolle-GB will be deleted.<br><br>Are you REALLY sure you wan't "
228
+ "to continue? There's no 'undo'."
229
+ msgstr ""
230
+ "No quiero asustarle; esta página existe precisamente para evitar que se "
231
+ "borren accidentalmente todas sus firmas.<br>¿Está realemente seguro de que "
232
+ "quiere continuar? No hay forma de revertir esta acción."
233
+
234
+ msgid "I'm aware of that, continue!"
235
+ msgstr "¡Lo sé y deseo continuar!"
236
+
237
+ msgid ""
238
+ "I'm sorry, but it seems you're running an PHP version prior 4.x. The Akismet "
239
+ "classes that come with Gwolle-GB are only compatible to 4.x and higher. To "
240
+ "be able to use Akismet you should consider updating your server. (The System "
241
+ "says your PHP version is %1.)"
242
+ msgstr ""
243
+ "Lo sentimos, pero parece que estas utilizando una versión de PHP inferior a "
244
+ "4.x. Las clases que vienen con Gwolle-GB sólo son compatibles con la 4.x y "
245
+ "superiores. Para poder utilizar Akismet deberá pensar en actualizar su "
246
+ "servidor. (El sistema informa que su versión de PHP es %1.)"
247
+
248
+ msgid ""
249
+ "I've found the Wordpress API key, so you can start using Akismet right now."
250
+ msgstr ""
251
+ "He encontrado la clave API de Wordpress, a partir de ahora puede empezar a "
252
+ "utilizar Akismet."
253
+
254
+ msgid "ID"
255
+ msgstr "Identidad"
256
+
257
+ msgid "Icons by"
258
+ msgstr "Iconos de"
259
+
260
+ msgid ""
261
+ "If you like feel free to drop a message at the <a href=\"%1\" title=\"Go to "
262
+ "the Gwolle-GB homepage...\" target=\"_blank\">Gwolle-GB homepage</a> "
263
+ "regarding why you choosed not to use this plugin anymore; I'd really "
264
+ "appreciate that."
265
+ msgstr ""
266
+ "Tiene la libertad de dejar un mensaje en el <a href=\"%1\" title=\"Ir al "
267
+ "sitio web de Gwolle-GB...\" target=\"_blank\">Sitio web de Gwolle-GB</a> y "
268
+ "explicarnos porque ha decido no seguir usando este plugin; Apreciaré sus "
269
+ "intervenciones."
270
+
271
+ msgid "Installation"
272
+ msgstr "Instalación"
273
+
274
+ msgid ""
275
+ "It looks like there has been an error. <a href=\"%1\">Click here to "
276
+ "continue...</a>"
277
+ msgstr ""
278
+ "¡Vaya! Parece que ha habido un error. <a href=\"%1\">Click aquí para "
279
+ "continuar...</a>"
280
+
281
+ msgid ""
282
+ "It's highly recommended that you turn this on, because your responsible for "
283
+ "the content on your homepage."
284
+ msgstr ""
285
+ "Se recomienda encarecidamente que esto esté activado, porque usted es el "
286
+ "responsable de los contenidos de su página web."
287
+
288
+ msgid "Latest updates"
289
+ msgstr "Últimas actualizaciones"
290
+
291
+ msgid "Learn more about Akismet..."
292
+ msgstr "Aprender más sobre Akismet..."
293
+
294
+ msgid "Learn more about Recaptcha..."
295
+ msgstr "Aprender más sobre Recaptcha..."
296
+
297
+ msgid "Line breaks"
298
+ msgstr "Salto de linea"
299
+
300
+ msgid ""
301
+ "Line breaks will not be visible to the visitors due to your <a href="
302
+ "\"%1\">settings</a>."
303
+ msgstr ""
304
+ "Los saltos de linea no son visibles por los visitantes devido a sus <a href="
305
+ "\"%1\">ajustes</a>."
306
+
307
+ msgid "Link to guestbook"
308
+ msgstr "Enlace al libro de visitas"
309
+
310
+ msgid "Log"
311
+ msgstr "Registro"
312
+
313
+ msgid "Mark as checked"
314
+ msgstr "Marcar como comprobado"
315
+
316
+ msgid "Mark as not checked"
317
+ msgstr "Marcar como sin comprobar"
318
+
319
+ msgid "Mark as not spam"
320
+ msgstr "Marcar como no-spam"
321
+
322
+ msgid "Mark as spam"
323
+ msgstr "Marcara como spam"
324
+
325
+ msgid "Mass edit actions"
326
+ msgstr "Opciones de edición masiva"
327
+
328
+ msgid "Moderate Guestbook"
329
+ msgstr "Moderar el libro de visitas"
330
+
331
+ msgid "Moderate entries before publishing them."
332
+ msgstr "Moderar las firmas antes de que sean publicadas."
333
+
334
+ msgid "Name"
335
+ msgstr "Nombre"
336
+
337
+ msgid "New"
338
+ msgstr "Nueva"
339
+
340
+ msgid ""
341
+ "New entries have to be unlocked by an administrator before they are visible "
342
+ "to the public."
343
+ msgstr ""
344
+ "Las nuevas firmas tienen que ser desbloqueadas por un administrador antes de "
345
+ "que puedan ser visibles al público."
346
+
347
+ msgid "New entry"
348
+ msgstr "Nueva firma"
349
+
350
+ msgid "New guestbook entry"
351
+ msgstr "Nueva firma en el libro"
352
+
353
+ msgid "No Spam!"
354
+ msgstr "¡No es Spam!"
355
+
356
+ msgid "No entries found."
357
+ msgstr "No se han encontrado firmas."
358
+
359
+ msgid "No entries were edited."
360
+ msgstr "No se han editado firmas"
361
+
362
+ msgid "No entries yet."
363
+ msgstr "Todavía no hay firmas."
364
+
365
+ msgid "No mass edit action selected."
366
+ msgstr "No hay ninguna selección masiva para editar."
367
+
368
+ msgid "Notification"
369
+ msgstr "Notificación"
370
+
371
+ msgid "Number of entries shown on the frontend in reading mode."
372
+ msgstr "Número de entradas mostradas en el modo lectura."
373
+
374
+ msgid ""
375
+ "Of course, you should disable comments on that new content; otherwise, your "
376
+ "visitors might get a little confused. ;)"
377
+ msgstr ""
378
+ "Debe deshabilitar los comentarios en la nueva página; de lo contrario tus "
379
+ "visitantes podrían quedar algo confused al ver que bajo el libro de visitas "
380
+ "se puede comentar ;)"
381
+
382
+ msgid "One entry"
383
+ msgstr "Una firma"
384
+
385
+ msgid "Only users with the role %1 have access to the guestbook backend."
386
+ msgstr ""
387
+ "Sólo los usuarios con nivel %1 tienen acceso total al libro de visitas."
388
+
389
+ msgid "Options"
390
+ msgstr "Opciones"
391
+
392
+ msgid "Origin"
393
+ msgstr "Lugar (país, ciudad, etc.)"
394
+
395
+ msgid "Overview"
396
+ msgstr "Resumen estadístico"
397
+
398
+ msgid ""
399
+ "Please <a href=\"%1\">enable Akismet</a> to use the spam feature of Gwolle-"
400
+ "GB."
401
+ msgstr ""
402
+ "Por favor <a href=\"%1\">habilite Akismet</a> para usar la solución spam de "
403
+ "Gwolle-GB."
404
+
405
+ msgid ""
406
+ "Please activate the use of Akismet on your <a href=\"%1\">Gwolle-GB "
407
+ "configuration page</a>. Thanks!"
408
+ msgstr ""
409
+ "Por favor activa el uso de Akismet en tu <a href=\"%1\">página de ajustes de "
410
+ "Gwolle-GB</a>. ¡Gracias!"
411
+
412
+ msgid "Please check your Akismet configuration."
413
+ msgstr "Pro favor compruebe su configuración de Akismet."
414
+
415
+ msgid "Please enter a name."
416
+ msgstr "Por favor escriba un nombre."
417
+
418
+ msgid "Please write an entry."
419
+ msgstr "Por favor firme."
420
+
421
+ msgid "Save"
422
+ msgstr "Guardar"
423
+
424
+ msgid "Save settings"
425
+ msgstr "Guardar ajustes"
426
+
427
+ msgid "Send me an e-mail when a new entry has been posted."
428
+ msgstr "Envíeme un e-mail cuando alguien firme el libro de visitas."
429
+
430
+ msgid ""
431
+ "Set the link (= complete URL) to the page the guestbook set up on manually, "
432
+ "in case it is not detected correctly."
433
+ msgstr ""
434
+ "Escriba el link (= URL completa) de la página que contiene el libro de "
435
+ "visitas manualmente, en caso de que no sea detectada correctamente."
436
+
437
+ msgid "Settings"
438
+ msgstr "Ajustes"
439
+
440
+ msgid "Show entry icons"
441
+ msgstr "Mostrar los iconos en las firmas"
442
+
443
+ msgid ""
444
+ "Show line breaks as the entry authors entered them. (May result in very long "
445
+ "entries. Is turned off by default.)"
446
+ msgstr ""
447
+ "Mostrar saltos de linea cuando los autores los pongan en las firmas. (Esto "
448
+ "puede ocasionar firmas muy largas hacia abajo. Está desactivado por defecto.)"
449
+
450
+ msgid "Show line breaks."
451
+ msgstr "Mostrar el salto de linea."
452
+
453
+ msgid "Showing:"
454
+ msgstr "Mostrando:"
455
+
456
+ msgid ""
457
+ "Sorry, but the function <code>mail()</code> required to notify you by mail "
458
+ "is not enabled in your PHP configuration. Please contact your hosting "
459
+ "provider to change this."
460
+ msgstr ""
461
+ "Lo sentimos, pero la función <code>mail()</code> requerida para notificarle "
462
+ "por email no está habilitada en la configuración de PHP. Por favor, pongase "
463
+ "en contacto con el proveedor de hosting para que se lo habilite."
464
+
465
+ msgid ""
466
+ "Sorry, but the page you're looking for does not exists. Go back to the <a "
467
+ "href=\"%1\">settings page</a>"
468
+ msgstr ""
469
+ "Lo siento, la página que está buscando no existe. Vuelva atrás a la <a href="
470
+ "\"%1\">página de ajustes</a>"
471
+
472
+ msgid ""
473
+ "Sorry, wasn't able to locate your <strong>Wordpress API key. You can enter "
474
+ "it at the <a href=\"%1\">Akismet configuration page</a>."
475
+ msgstr ""
476
+ "Lo sentimos, pero no podemos localizar su <strong>clave API de wordpress. "
477
+ "Puede meterla en la <a href=\"%1\">página de configuración de Akismet</a>."
478
+
479
+ msgid "Spam"
480
+ msgstr "Spam"
481
+
482
+ msgid "Spam!"
483
+ msgstr "¡Spam!"
484
+
485
+ msgid "Staff"
486
+ msgstr "Redacción"
487
+
488
+ msgid "Submit"
489
+ msgstr "¡Firmar!"
490
+
491
+ msgid "Successfully uninstalled"
492
+ msgstr "Desinstalación completa"
493
+
494
+ msgid "Sure, let's do this!"
495
+ msgstr "¡Seguro, vamos a ello!"
496
+
497
+ msgid "Thanks for your entry."
498
+ msgstr "¡Gracias por firmar!"
499
+
500
+ msgid "The captcha has not been entered correctly."
501
+ msgstr "Las letras no se han introducido correctamente."
502
+
503
+ msgid "The following users have subscribed to this service:"
504
+ msgstr "Los siguientes usuarios están suscritos al servicio:"
505
+
506
+ msgid "The keys can be found at your"
507
+ msgstr "Estas claves se encuentran en su"
508
+
509
+ msgid ""
510
+ "There seems to be something wrong with your Wordpress API key; wasn't able "
511
+ "to validate it correctly. Please check it via <a href=\"%1\">Akismet "
512
+ "configuration page</a>."
513
+ msgstr ""
514
+ "Parece que algo está mal en en su clave API de wordpress; No se pudo validar "
515
+ "correctamente. Por favor compruebela en la <a href=\"%1\">página de "
516
+ "configuración de Akismet</a>"
517
+
518
+ msgid ""
519
+ "These icons are shown in every entry row, so that you know its entry status "
520
+ "(spam, locked or unlocked)."
521
+ msgstr ""
522
+ "Estos iconos son mostrados en todas las firmas, con ellas puede saber el "
523
+ "estado de una firma (spam, bloqueada o desbloqueada)."
524
+
525
+ msgid "This can <strong>not</strong> be undone."
526
+ msgstr "Esto <strong>NO</strong> se puede deshacer."
527
+
528
+ msgid "This entry is checked."
529
+ msgstr "Esta firma ha sido comprobada"
530
+
531
+ msgid "This is how the guestbook will be displayed on your page"
532
+ msgstr "Así es como se ve su libro de visitas en su página"
533
+
534
+ msgid "This plugin uses the following scripts/programs/images:"
535
+ msgstr "El plugin utiliza los siguientes scripts/programas/imágenes:"
536
+
537
+ msgid "Uninstall"
538
+ msgstr "Desinstalar"
539
+
540
+ msgid "Uninstall &raquo;"
541
+ msgstr "Desinstalar &raquo;"
542
+
543
+ msgid "Uninstall process stopped."
544
+ msgstr "Se canceló la instalación."
545
+
546
+ msgid ""
547
+ "Uninstalling means that all database entries are removed (settings and "
548
+ "entries)."
549
+ msgstr ""
550
+ "Desinstalando se van a borrar todas las firmas de la base de datos (firmas y "
551
+ "ajustes)"
552
+
553
+ msgid "Unlocked"
554
+ msgstr "Desbloqueada"
555
+
556
+ msgid "Use Akismet"
557
+ msgstr "Utilizar Akismet"
558
+
559
+ msgid "Use Recaptcha"
560
+ msgstr "Utilizar Recaptcha"
561
+
562
+ msgid ""
563
+ "Using the <a href=\"%1\" target=\"_blank\">Akismet PHP4-Class by Bret Kuhns</"
564
+ "a>."
565
+ msgstr ""
566
+ "Usando el <a href=\"%1\" target=\"_blank\">Akismet PHP4-Klasse de Bret "
567
+ "Kuhns</a>."
568
+
569
+ msgid ""
570
+ "Using the <a href=\"%1\" target=\"_blank\">Akismet PHP5-Class by Alex</a>."
571
+ msgstr ""
572
+ "Usando el <a href=\"%1\" target=\"_blank\">Akismet PHP5-Klasse de Alex</a>."
573
+
574
+ msgid "We reserve our right to shorten, delete, or not publish entries."
575
+ msgstr ""
576
+ "Nos reservamos todo el derecho a recortar, eliminar o no publicar sus firmas."
577
+
578
+ msgid "Welcome to the Guestbook!"
579
+ msgstr "¡Bienvenido al libro de visitas!"
580
+
581
+ msgid ""
582
+ "Welcome!<br>It seems that either you're using this plugin for the first time "
583
+ "or you've deleted all settings.<br>However, to use this plugin we have to "
584
+ "setup the database tables. Good for you, we've made this as easy as possible."
585
+ "<br>All you've got to do is click on that button below, and that's it."
586
+ msgstr ""
587
+ "¡Bienvenido!<br>Parece que esta utilizando este plugin por primera vez o "
588
+ "eliminó todos los ajustes anteriormente.<br>De todas maneras, para usar este "
589
+ "plugin hay que escribir en las tablas de la base de datos. Es bueno para "
590
+ "usted, ya que hacemos esto lo más fácilmente posible.<br>Todo lo que tienes "
591
+ "que hacer es clickear en el botón siguiente, y ya está."
592
+
593
+ msgid ""
594
+ "Well, there has been an error querying the database.<br>Please try again "
595
+ "later, thanks!"
596
+ msgstr ""
597
+ "Se ha producido un error mientras se comunicaba con la base de datos. "
598
+ "<br>Por favor, intentelo de nuevo más tarde, ¡Gracias!"
599
+
600
+ msgid "What's that?"
601
+ msgstr "¿Qué es esto?"
602
+
603
+ msgid "Write a new entry."
604
+ msgstr "Dejar una firma en el libro."
605
+
606
+ msgid "Write admin entry"
607
+ msgstr "Escribir una firma como administrador"
608
+
609
+ msgid "Written"
610
+ msgstr "escrito"
611
+
612
+ msgid "Yes, I'm absolutely sure of this. Proceed!"
613
+ msgstr "Sí, estoy totalmente seguro de lo que hago. ¡Adelante!"
614
+
615
+ msgid "You"
616
+ msgstr "Tú"
617
+
618
+ msgid ""
619
+ "You can set the content of the mail a notification subscriber gets on new "
620
+ "entries. The following tags are supported:"
621
+ msgstr ""
622
+ "Puede ajustar el contenido del e-mail de notifiación para suscriptores a las "
623
+ "nuevas firmas. Se pueden usar los siguientes tags:"
624
+
625
+ msgid "You don't have the privileges to perform this action."
626
+ msgstr "No tiene suficientes privilegios para realizar esta acción."
627
+
628
+ msgid ""
629
+ "You now may deactivate the plugin using the <a href=\"%1\" title=\"Go to the "
630
+ "plugin manager...\">plugin manager</a> or/and delete the plugin from your "
631
+ "webserver."
632
+ msgstr ""
633
+ "Puede desactivar el plugin usando <a href=\"%1\" title=\"Ir al gestor de "
634
+ "plugins...\">gestor de plugins</a> y/o eliminar el plugin de su servidor web."
635
+
636
+ msgid "You successfully uninstalled Gwolle-GB."
637
+ msgstr "Ha desinstalado Gwolle-GB correctamente.."
638
+
639
+ msgid ""
640
+ "You\\'re about to delete this guestbook entry. This can\\'t be undone. Are "
641
+ "you still sure you want to continue?"
642
+ msgstr ""
643
+ "Está a punto de eliminar esta firma del libro. Esta acción no podrá ser "
644
+ "deshecha. ¿Está seguro/a que desea continuar?"
645
+
646
+ msgid ""
647
+ "You\\'re about to mark this guestbook entry as spam. It will be sent to the "
648
+ "Akismet team to help other people fighting spam. Entries marked as spam are "
649
+ "automatically deleted after 15 days. Continue?"
650
+ msgstr ""
651
+ "Va a marcar esta firma del libro como spam. La firma será enviada al equipo "
652
+ "de Akismet para ayudar a otra gente a filtrar el spam. Las firmas que se "
653
+ "marcan como spam se borran automáticamente pasados 15 días. ¿Continuar?"
654
+
655
+ msgid ""
656
+ "Your entry will be visible in the guestbook when we reviewed it and gave our "
657
+ "permission."
658
+ msgstr ""
659
+ "Su firma será visible en el libro de visitas cuando la revisemos y sea "
660
+ "aprobada."
661
+
662
+ msgid "entries"
663
+ msgstr "firmas"
664
+
665
+ msgid "entries total"
666
+ msgstr "firmas en total"
667
+
668
+ msgid "entry total"
669
+ msgstr "firma en total"
670
+
671
+ msgid "from"
672
+ msgstr "de"
673
+
674
+ msgid "new entries"
675
+ msgstr "nuevas firmas"
676
+
677
+ msgid "new entry"
678
+ msgstr "nueva firma"
679
+
680
+ msgid "no subscriber yet"
681
+ msgstr "no hay usuarios suscritos aún"
682
+
683
+ msgid "not yet"
684
+ msgstr "todavía"
685
+
686
+ msgid "o'clock"
687
+ msgstr "en punto"
688
+
689
+ msgid "of"
690
+ msgstr "de"
691
+
692
+ msgid "reCAPTCHA sites overview"
693
+ msgstr "cuenta de la web reCAPTCHA"
694
+
695
+ msgid "spam entries"
696
+ msgstr "firmas spam"
697
+
698
+ msgid "spam entry"
699
+ msgstr "firma spam"
700
+
701
+ msgid "successfully edited."
702
+ msgstr "Edición correcta."
703
+
704
+ msgid "unknown"
705
+ msgstr "desconocido"
706
+
707
+ msgid "unlocked entries"
708
+ msgstr "firmas desbloqueadas"
709
+
710
+ msgid "unlocked entry"
711
+ msgstr "firma desbloqueada"
712
+
713
+ msgid "v%1 installed"
714
+ msgstr "v%1 instalada"
715
+
716
+ msgid "wrote at"
717
+ msgstr "escribió el"
lang/gwolle-gb-nb_NO.mo ADDED
Binary file
lang/gwolle-gb-nb_NO.po ADDED
@@ -0,0 +1,2283 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: Norwegian Bokmål\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2015-09-29 10:15+0200\n"
11
+ "PO-Revision-Date: 2015-09-29 10:15+0200\n"
12
+ "Last-Translator: Marcel Pol <marcel@timelord.nl>\n"
13
+ "Language-Team: \n"
14
+ "Language: nb_NO\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.4\n"
19
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
20
+
21
+ #: gwolle-gb.php:142
22
+ msgid ""
23
+ "Gwolle Guestbook is not just another guestbook for WordPress. The goal is to "
24
+ "provide an easy and slim way to integrate a guestbook into your WordPress "
25
+ "powered site. Don't use your 'comment' section the wrong way - install "
26
+ "Gwolle Guestbook and have a real guestbook."
27
+ msgstr ""
28
+
29
+ #: gwolle-gb.php:143
30
+ msgid ""
31
+ "Gwolle Guestbook is the WordPress guestbook you've just been looking for. "
32
+ "Beautiful and easy."
33
+ msgstr ""
34
+
35
+ #: hooks.php:33 hooks.php:34 frontend/widget.php:22 frontend/widget.php:246
36
+ msgid "Guestbook"
37
+ msgstr "Gjestebok"
38
+
39
+ #: hooks.php:44 hooks.php:45 admin/tabs/admintab.php:36
40
+ #: admin/tabs/readingtab.php:36
41
+ msgid "Entries"
42
+ msgstr "Oppføringer"
43
+
44
+ #. /editor.php
45
+ #: hooks.php:52
46
+ msgid "Entry editor"
47
+ msgstr "Post redaktør"
48
+
49
+ #: hooks.php:52 admin/page-gwolle-gb.php:87
50
+ msgid "New entry"
51
+ msgstr "Nytt innlegg"
52
+
53
+ #. /settings.php
54
+ #: hooks.php:55 hooks.php:82 admin/page-settings.php:317
55
+ msgid "Settings"
56
+ msgstr "Innstillinger"
57
+
58
+ #. /import.php
59
+ #: hooks.php:58
60
+ msgid "Import"
61
+ msgstr "Importer"
62
+
63
+ #. /export.php
64
+ #: hooks.php:61
65
+ msgid "Export"
66
+ msgstr "Eksport"
67
+
68
+ #: hooks.php:219 hooks.php:223 frontend/rss.php:67 frontend/rss.php:70
69
+ msgid "Guestbook Feed"
70
+ msgstr "Gjestebok Feed"
71
+
72
+ #: hooks.php:286
73
+ #, php-format
74
+ msgid "%s guestbook entry awaiting moderation"
75
+ msgstr ""
76
+
77
+ #: hooks.php:288
78
+ #, php-format
79
+ msgid "%s guestbook entries awaiting moderation"
80
+ msgstr ""
81
+
82
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:638
83
+ #: frontend/gwolle_gb-entry.php:124
84
+ msgid "Edit entry"
85
+ msgstr "Rediger oppføring"
86
+
87
+ #: admin/dashboard-widget.php:116 admin/page-editor.php:691
88
+ #: admin/page-entries.php:638 frontend/gwolle_gb-entry.php:124
89
+ msgid "Edit"
90
+ msgstr "Rediger"
91
+
92
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:611
93
+ #: admin/page-entries.php:641
94
+ msgid "Check entry"
95
+ msgstr "Sjekk inn"
96
+
97
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:611
98
+ #: admin/page-entries.php:641
99
+ msgid "Check"
100
+ msgstr "Sjekk"
101
+
102
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:614
103
+ #: admin/page-entries.php:644
104
+ msgid "Uncheck entry"
105
+ msgstr "Fjern oppføring"
106
+
107
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:614
108
+ #: admin/page-entries.php:644
109
+ msgid "Uncheck"
110
+ msgstr "Fjern"
111
+
112
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:617
113
+ #: admin/page-entries.php:647
114
+ msgid "Mark entry as spam."
115
+ msgstr "Merk posten som spam."
116
+
117
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:516
118
+ #: admin/page-editor.php:559 admin/page-editor.php:617
119
+ #: admin/page-entries.php:428 admin/page-entries.php:598
120
+ #: admin/page-entries.php:647
121
+ msgid "Spam"
122
+ msgstr "Spam"
123
+
124
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:620
125
+ #: admin/page-entries.php:650
126
+ msgid "Mark entry as not-spam."
127
+ msgstr "Merk posten som ikke-spam."
128
+
129
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:620
130
+ #: admin/page-entries.php:650
131
+ msgid "Not spam"
132
+ msgstr "Ikke spam"
133
+
134
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:623
135
+ #: admin/page-entries.php:653
136
+ msgid "Move entry to trash."
137
+ msgstr "Flytta post till papperskorgen"
138
+
139
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:517
140
+ #: admin/page-editor.php:569 admin/page-editor.php:623
141
+ #: admin/page-entries.php:432 admin/page-entries.php:599
142
+ #: admin/page-entries.php:653
143
+ msgid "Trash"
144
+ msgstr "Papirkurv"
145
+
146
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:626
147
+ #: admin/page-entries.php:656
148
+ msgid "Recover entry from trash."
149
+ msgstr "Gjenopprette oppføringen fra papirkurven."
150
+
151
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:626
152
+ #: admin/page-entries.php:656
153
+ msgid "Untrash"
154
+ msgstr "Gjenopprett"
155
+
156
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:629
157
+ #: admin/page-entries.php:659
158
+ msgid "Please wait..."
159
+ msgstr "Vennligst vent …"
160
+
161
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:523
162
+ #: admin/page-editor.php:629 admin/page-entries.php:606
163
+ #: admin/page-entries.php:659
164
+ msgid "Wait..."
165
+ msgstr "vente"
166
+
167
+ #: admin/dashboard-widget.php:155
168
+ msgid "Refresh"
169
+ msgstr "Oppdater"
170
+
171
+ #: admin/dashboard-widget.php:156
172
+ msgid "View all"
173
+ msgstr "Se alle"
174
+
175
+ #: admin/dashboard-widget.php:157
176
+ msgid "View new"
177
+ msgstr "Visning"
178
+
179
+ #: admin/dashboard-widget.php:160
180
+ msgid "No new and unchecked guestbook entries."
181
+ msgstr "Ingen nye og ukontrollert gjestebok oppføringer."
182
+
183
+ #: admin/dashboard-widget.php:172
184
+ msgid "Guestbook (new entries)"
185
+ msgstr "Gjestebok (nye innlegg)"
186
+
187
+ #: admin/installSplash.php:14
188
+ msgid "Installation"
189
+ msgstr "Installasjon"
190
+
191
+ #: admin/installSplash.php:20
192
+ msgid ""
193
+ "Welcome!<br>It seems that either you're using this plugin for the first time "
194
+ "or you've deleted all settings.<br>However, to use this plugin we have to "
195
+ "setup the database tables. Good for you, we've made this as easy as possible."
196
+ "<br>All you've got to do is click on that button below, and that's it."
197
+ msgstr ""
198
+ "Velkommen!<br>Det synes at enten du bruker denne plugin for første gang, "
199
+ "eller du har slettet alle innstillingene.<br>Vi må imidlertid sette "
200
+ "databasetabellene for å bruke denne plugin. Bra for deg, har vi gjort dette "
201
+ "så enkelt som mulig.<br>Alt du har å gjøre er å klikke på knappen nedenfor, "
202
+ "og dvs den."
203
+
204
+ #: admin/installSplash.php:26
205
+ msgid "Sure, let's do this!"
206
+ msgstr "Sikker, la oss gjøre dette!"
207
+
208
+ #: admin/installSplash.php:33
209
+ #, php-format
210
+ msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
211
+ msgstr ""
212
+ "Allright, vi er ferdig. <a href=\"%s\">Klikk her for å fortsette...</a>"
213
+
214
+ #: admin/installSplash.php:35
215
+ #, php-format
216
+ msgid ""
217
+ "It looks like there has been an error. <a href=\"%s\">Click here to "
218
+ "continue...</a>"
219
+ msgstr ""
220
+ "Det ser ut som det har oppstått en feil. <a href=\"%s\">Klikk her for å "
221
+ "fortsette...</a>"
222
+
223
+ #: admin/page-editor.php:15 admin/page-entries.php:16 admin/page-export.php:17
224
+ #: admin/page-gwolle-gb.php:290 admin/page-import.php:26
225
+ #: admin/page-settings.php:15 admin/tabs/admintab.php:15
226
+ #: admin/tabs/antispamtab.php:15 admin/tabs/emailtab.php:15
227
+ #: admin/tabs/formtab.php:15 admin/tabs/readingtab.php:15
228
+ #: admin/tabs/uninstalltab.php:18
229
+ msgid "Cheatin&#8217; uh?"
230
+ msgstr "Fuskar&#8217; uh?"
231
+
232
+ #: admin/page-editor.php:32
233
+ msgid "Edit guestbook entry"
234
+ msgstr "Redigere innlegget"
235
+
236
+ #: admin/page-editor.php:45
237
+ msgid "Entry could not be found."
238
+ msgstr "Finner ikke oppføring."
239
+
240
+ #: admin/page-editor.php:47
241
+ msgid "Guestbook entry (error)"
242
+ msgstr "Hilsen (feil)"
243
+
244
+ #: admin/page-editor.php:50
245
+ msgid "New guestbook entry"
246
+ msgstr "Ny gjestebok oppføring"
247
+
248
+ #: admin/page-editor.php:60
249
+ msgid "Something strange happened."
250
+ msgstr "Noe merkelig skjedde."
251
+
252
+ #: admin/page-editor.php:92
253
+ msgid "Submitted as Spam to the Akismet service."
254
+ msgstr "Sendt som Spam til Akismet tjenesten."
255
+
256
+ #: admin/page-editor.php:101
257
+ msgid "Submitted as Ham to the Akismet service."
258
+ msgstr "Sendt som Ham til tjenesten Akismet."
259
+
260
+ #: admin/page-editor.php:201 admin/page-gwolle-gb.php:367
261
+ #: admin/page-settings.php:323
262
+ msgid "Changes saved."
263
+ msgstr "Endringer ble lagret."
264
+
265
+ #: admin/page-editor.php:203 admin/page-editor.php:316
266
+ msgid "Error happened during saving."
267
+ msgstr "Oppstod under lagring."
268
+
269
+ #: admin/page-editor.php:207
270
+ msgid "Entry was not changed."
271
+ msgstr "Oppføringen ble ikke endret."
272
+
273
+ #: admin/page-editor.php:217
274
+ msgid "Entry removed."
275
+ msgstr "Oppføring fjernet."
276
+
277
+ #: admin/page-editor.php:266
278
+ msgid "Entry has no content, even though that is mandatory."
279
+ msgstr "Oppføringen har ikke innhold, selv om det er obligatorisk."
280
+
281
+ #: admin/page-editor.php:313
282
+ msgid "Entry saved."
283
+ msgstr "Oppføring lagres."
284
+
285
+ #: admin/page-editor.php:320
286
+ msgid "Entry was not saved."
287
+ msgstr "Oppføringen ble ikke lagret."
288
+
289
+ #: admin/page-editor.php:358 admin/page-editor.php:401
290
+ #: admin/page-editor.php:410 admin/page-editor.php:418
291
+ #: admin/page-editor.php:489 admin/page-editor.php:503
292
+ #: admin/page-editor.php:601 admin/page-editor.php:645
293
+ #: admin/page-editor.php:714 admin/page-export.php:40 admin/page-import.php:363
294
+ #: admin/page-import.php:430 admin/page-import.php:551
295
+ msgid "Click to open or close"
296
+ msgstr "Klikk for å åpne eller lukke"
297
+
298
+ #: admin/page-editor.php:358 frontend/write.php:227
299
+ msgid "Guestbook entry"
300
+ msgstr "Gjestebok innlegging"
301
+
302
+ #: admin/page-editor.php:360 admin/page-export.php:65 admin/page-import.php:402
303
+ #: admin/page-import.php:444 frontend/write.php:234 admin/tabs/formtab.php:187
304
+ #: admin/tabs/uninstalltab.php:31
305
+ msgid "Message"
306
+ msgstr "Melding"
307
+
308
+ #: admin/page-editor.php:363 admin/page-editor.php:433
309
+ #, php-format
310
+ msgid ""
311
+ "Line breaks will not be visible to the visitors due to your <a href=\"%s"
312
+ "\">settings</a>."
313
+ msgstr ""
314
+ "Linjeskift vil ikke være synlig for besøkende på grunn av <a href=\"%s"
315
+ "\">Innstillinger</a>."
316
+
317
+ #: admin/page-editor.php:373 frontend/write.php:248
318
+ msgid "Bold"
319
+ msgstr ""
320
+
321
+ #: admin/page-editor.php:374 frontend/write.php:249
322
+ msgid "Italic"
323
+ msgstr ""
324
+
325
+ #: admin/page-editor.php:375 frontend/write.php:250
326
+ msgid "Bulleted List"
327
+ msgstr ""
328
+
329
+ #: admin/page-editor.php:376 frontend/write.php:251
330
+ msgid "Numeric List"
331
+ msgstr ""
332
+
333
+ #: admin/page-editor.php:377 frontend/write.php:252
334
+ msgid "Picture"
335
+ msgstr ""
336
+
337
+ #: admin/page-editor.php:378 frontend/write.php:253
338
+ msgid "Source"
339
+ msgstr ""
340
+
341
+ #: admin/page-editor.php:379 frontend/write.php:254
342
+ #, fuzzy
343
+ msgid "Link"
344
+ msgstr "Lenker"
345
+
346
+ #: admin/page-editor.php:380 frontend/write.php:255
347
+ msgid "Your text to link..."
348
+ msgstr ""
349
+
350
+ #: admin/page-editor.php:381 frontend/write.php:256
351
+ msgid "Clean"
352
+ msgstr ""
353
+
354
+ #: admin/page-editor.php:382 frontend/write.php:257
355
+ msgid "Emoji"
356
+ msgstr ""
357
+
358
+ #: admin/page-editor.php:401 admin/page-editor.php:403 frontend/write.php:207
359
+ #: frontend/write.php:214 admin/tabs/formtab.php:167
360
+ msgid "Website"
361
+ msgstr "Nettsted"
362
+
363
+ #: admin/page-editor.php:404
364
+ msgid "Example: <code>http://www.example.com/</code>"
365
+ msgstr "Eksempel:<code>http://www.example.com/</code>"
366
+
367
+ #: admin/page-editor.php:410 admin/page-export.php:61
368
+ msgid "Origin"
369
+ msgstr "Opprinnelse"
370
+
371
+ #: admin/page-editor.php:412 frontend/write.php:167 frontend/write.php:174
372
+ #: admin/tabs/formtab.php:127 admin/tabs/readingtab.php:181
373
+ msgid "City"
374
+ msgstr "Poststed"
375
+
376
+ #: admin/page-editor.php:419 frontend/gwolle_gb-entry.php:148
377
+ msgid "Admin Reply by:"
378
+ msgstr ""
379
+
380
+ #: admin/page-editor.php:424 admin/page-export.php:69 functions/mail.php:197
381
+ #, fuzzy
382
+ msgid "Admin Reply"
383
+ msgstr "Administrator"
384
+
385
+ #: admin/page-editor.php:428
386
+ #, fuzzy
387
+ msgid "Mail the author a notification about this reply."
388
+ msgstr "Post forfatteren med en e-postbekreftelse."
389
+
390
+ #: admin/page-editor.php:489
391
+ #, fuzzy
392
+ msgid "View Frontend"
393
+ msgstr "Visning"
394
+
395
+ #: admin/page-editor.php:493 admin/page-gwolle-gb.php:143
396
+ #, fuzzy
397
+ msgid "View Guestbook"
398
+ msgstr "Gjestebok"
399
+
400
+ #: admin/page-editor.php:503
401
+ msgid "Options"
402
+ msgstr "Alternativer"
403
+
404
+ #: admin/page-editor.php:514 admin/page-entries.php:596
405
+ msgid "Visible"
406
+ msgstr ""
407
+
408
+ #: admin/page-editor.php:515 admin/page-entries.php:597
409
+ msgid "Invisible"
410
+ msgstr ""
411
+
412
+ #: admin/page-editor.php:521 admin/page-entries.php:603
413
+ msgid "Admin Replied"
414
+ msgstr ""
415
+
416
+ #: admin/page-editor.php:529
417
+ msgid "This entry is not yet visible."
418
+ msgstr "Denne oppføringen er ikke synlige."
419
+
420
+ #: admin/page-editor.php:533 admin/page-editor.php:538
421
+ msgid "This entry is Visible."
422
+ msgstr "Denne oppføringen er synlig."
423
+
424
+ #: admin/page-editor.php:534 admin/page-editor.php:539
425
+ msgid "This entry is Not Visible."
426
+ msgstr "Den här posten är synlig."
427
+
428
+ #: admin/page-editor.php:549 functions/mail.php:80
429
+ msgid "Checked"
430
+ msgstr "Avkrysset"
431
+
432
+ #: admin/page-editor.php:577
433
+ msgid "Remove this entry Permanently."
434
+ msgstr "Fjerne denne oppføringen permanent."
435
+
436
+ #: admin/page-editor.php:589
437
+ msgid "Save"
438
+ msgstr "Lagre"
439
+
440
+ #: admin/page-editor.php:601
441
+ msgid "Actions"
442
+ msgstr "Handlinger"
443
+
444
+ #: admin/page-editor.php:645
445
+ msgid "Details"
446
+ msgstr "Detaljer"
447
+
448
+ #: admin/page-editor.php:649 admin/page-editor.php:696
449
+ #: admin/page-entries.php:499 admin/page-entries.php:516
450
+ msgid "Author"
451
+ msgstr "Forfattar"
452
+
453
+ #: admin/page-editor.php:653 admin/page-editor.php:660
454
+ #: admin/page-editor.php:678 admin/page-editor.php:685 functions/log.php:170
455
+ msgid "Unknown"
456
+ msgstr "Ukjent"
457
+
458
+ #: admin/page-editor.php:656
459
+ msgid "E-Mail"
460
+ msgstr "Epost"
461
+
462
+ #: admin/page-editor.php:663 admin/page-editor.php:724
463
+ msgid "Written"
464
+ msgstr "Skriving"
465
+
466
+ #: admin/page-editor.php:668
467
+ msgid "Not yet"
468
+ msgstr "Ikke ennå"
469
+
470
+ #: admin/page-editor.php:671
471
+ msgid "Author's IP-address"
472
+ msgstr "Forfatterens IP-adresse"
473
+
474
+ #: admin/page-editor.php:674
475
+ msgid "Whois search for this IP"
476
+ msgstr "Whois-søk for dette IP"
477
+
478
+ #: admin/page-editor.php:681
479
+ msgid "Host"
480
+ msgstr "Host adress"
481
+
482
+ #: admin/page-editor.php:688 admin/page-entries.php:491
483
+ #: admin/page-entries.php:508
484
+ msgid "Book"
485
+ msgstr ""
486
+
487
+ #: admin/page-editor.php:691
488
+ #, fuzzy
489
+ msgid "Edit metadata"
490
+ msgstr "Rediger oppføring"
491
+
492
+ #: admin/page-editor.php:699
493
+ #, fuzzy
494
+ msgid "Date and time"
495
+ msgstr "Dato og klokkeslett:"
496
+
497
+ #: admin/page-editor.php:704 admin/page-entries.php:588
498
+ msgid "Book ID"
499
+ msgstr ""
500
+
501
+ #: admin/page-editor.php:714
502
+ msgid "Entry log"
503
+ msgstr "Post loggen"
504
+
505
+ #: admin/page-editor.php:733
506
+ msgid "No log yet."
507
+ msgstr "Ingen Logg ennå."
508
+
509
+ #: admin/page-entries.php:209
510
+ msgid "entry checked."
511
+ msgstr "oppføringen sjekket."
512
+
513
+ #: admin/page-entries.php:211
514
+ msgid "entries checked."
515
+ msgstr "Inga poster markerade."
516
+
517
+ #: admin/page-entries.php:213
518
+ msgid "No entries checked."
519
+ msgstr "Ingen oppføringer sjekket."
520
+
521
+ #: admin/page-entries.php:217
522
+ msgid "entry unchecked."
523
+ msgstr "oppføring ukontrollert."
524
+
525
+ #: admin/page-entries.php:219
526
+ msgid "entries unchecked."
527
+ msgstr "Ikke avkrysset"
528
+
529
+ #: admin/page-entries.php:221
530
+ msgid "No entries unchecked."
531
+ msgstr "Ikke avkrysset"
532
+
533
+ #: admin/page-entries.php:225
534
+ msgid ""
535
+ "entry marked as spam and submitted to Akismet as spam (if Akismet was "
536
+ "enabled)."
537
+ msgstr ""
538
+ "oppføringen merket som spam, og sendt til Akismet som spam (hvis Akismet er "
539
+ "aktivert)."
540
+
541
+ #: admin/page-entries.php:227
542
+ msgid ""
543
+ "entries marked as spam and submitted to Akismet as spam (if Akismet was "
544
+ "enabled)."
545
+ msgstr ""
546
+ "Oppføringer merket som spam, og sendt til Akismet som spam (hvis Akismet er "
547
+ "aktivert)."
548
+
549
+ #: admin/page-entries.php:229
550
+ msgid "No entries marked as spam."
551
+ msgstr "Ingen innlegg merket som spam."
552
+
553
+ #: admin/page-entries.php:233
554
+ msgid ""
555
+ "entry marked as not spam and submitted to Akismet as ham (if Akismet was "
556
+ "enabled)."
557
+ msgstr ""
558
+ "oppføringen merket som ikke spam og sendt til Akismet som skinke (hvis "
559
+ "Akismet er aktivert)."
560
+
561
+ #: admin/page-entries.php:235
562
+ msgid ""
563
+ "entries marked as not spam and submitted to Akismet as ham (if Akismet was "
564
+ "enabled)."
565
+ msgstr ""
566
+ "Oppføringer merket som ikke spam og sendt til Akismet som skinke (hvis "
567
+ "Akismet er aktivert)."
568
+
569
+ #: admin/page-entries.php:237
570
+ msgid "No entries marked as not spam."
571
+ msgstr "Ingen innlegg merket som spam."
572
+
573
+ #: admin/page-entries.php:241
574
+ msgid "entry considered spam and marked as such."
575
+ msgstr "oppføringen som anses for søppelpost, og merket slik."
576
+
577
+ #: admin/page-entries.php:243
578
+ msgid "entries considered spam and marked as such."
579
+ msgstr "oppføringer som anses for søppelpost, og merket slik."
580
+
581
+ #: admin/page-entries.php:246
582
+ msgid "entry not considered spam and marked as such."
583
+ msgstr "oppføring ikke som anses for søppelpost og merket som sådan."
584
+
585
+ #: admin/page-entries.php:248
586
+ msgid "entries not considered spam and marked as such."
587
+ msgstr "oppføringer ikke vurdert spam og merket som sådan."
588
+
589
+ #: admin/page-entries.php:251
590
+ msgid "entry already considered spam and not changed."
591
+ msgstr "oppføringen allerede regnet som spam og er endret ikke."
592
+
593
+ #: admin/page-entries.php:253
594
+ msgid "entries already considered spam and not changed."
595
+ msgstr "allerede ansett som spam og er endret ikke."
596
+
597
+ #: admin/page-entries.php:256
598
+ msgid "entry already considered not spam and not changed."
599
+ msgstr "oppføringen vurdert allerede ikke spam og er endret ikke."
600
+
601
+ #: admin/page-entries.php:258
602
+ msgid "entries already considered not spam and not changed."
603
+ msgstr "ansett som allerede ikke spam og er endret ikke."
604
+
605
+ #: admin/page-entries.php:262
606
+ msgid "entry moved to trash."
607
+ msgstr "oppføringen flyttet til papirkurven."
608
+
609
+ #: admin/page-entries.php:264
610
+ msgid "entries moved to trash."
611
+ msgstr "oppføringer flyttet til papirkurven."
612
+
613
+ #: admin/page-entries.php:266
614
+ msgid "No entries moved to trash."
615
+ msgstr "Ingen oppføringer flyttet til papirkurven."
616
+
617
+ #: admin/page-entries.php:270
618
+ msgid "entry recovered from trash."
619
+ msgstr "oppføringen gjenopprettet fra papirkurven."
620
+
621
+ #: admin/page-entries.php:272
622
+ msgid "entries recovered from trash."
623
+ msgstr "oppføringer gjenopprettet fra papirkurven."
624
+
625
+ #: admin/page-entries.php:274
626
+ msgid "No entries recovered from trash."
627
+ msgstr "Ingen innlegg funnet i papirkurv"
628
+
629
+ #: admin/page-entries.php:278 admin/page-entries.php:293
630
+ msgid "entry removed permanently."
631
+ msgstr "entry fjernet permanent."
632
+
633
+ #: admin/page-entries.php:280 admin/page-entries.php:295
634
+ msgid "entries removed permanently."
635
+ msgstr "poster fjernet permanent."
636
+
637
+ #: admin/page-entries.php:282 admin/page-entries.php:297
638
+ msgid "No entries permanently removed."
639
+ msgstr "Ingen oppføringer permanent fjernet."
640
+
641
+ #: admin/page-entries.php:329
642
+ msgid "Please activate Akismet if you want to battle spam."
643
+ msgstr "Aktiver Akismet hvis du kampen spam."
644
+
645
+ #: admin/page-entries.php:392
646
+ msgid "Guestbook entries"
647
+ msgstr "Gjestebok oppføringer"
648
+
649
+ #: admin/page-entries.php:415 frontend/pagination.php:83
650
+ #: frontend/pagination.php:85
651
+ msgid "All"
652
+ msgstr "Alle"
653
+
654
+ #: admin/page-entries.php:420
655
+ msgid "Unlocked"
656
+ msgstr "Ulåst"
657
+
658
+ #: admin/page-entries.php:424
659
+ msgid "New"
660
+ msgstr "Ny"
661
+
662
+ #: admin/page-entries.php:440
663
+ msgid "Mass edit actions"
664
+ msgstr "Masse redigere handlinger"
665
+
666
+ #: admin/page-entries.php:443
667
+ msgid "Recover from trash"
668
+ msgstr "Gjenopprette fra papirkurven"
669
+
670
+ #: admin/page-entries.php:444 admin/page-entries.php:461
671
+ msgid "Remove permanently"
672
+ msgstr "Fjerne permanent"
673
+
674
+ #: admin/page-entries.php:447
675
+ msgid "Mark as checked"
676
+ msgstr "Mark som sjekket"
677
+
678
+ #: admin/page-entries.php:450
679
+ msgid "Mark as not checked"
680
+ msgstr "Merk som ikke sjekket"
681
+
682
+ #: admin/page-entries.php:453
683
+ msgid "Mark as spam"
684
+ msgstr "Merk som søppelpost"
685
+
686
+ #: admin/page-entries.php:455
687
+ msgid "Mark as not spam"
688
+ msgstr "Merk som uønsket"
689
+
690
+ #: admin/page-entries.php:457
691
+ msgid "Check with Akismet"
692
+ msgstr "Sjekk med Akismet"
693
+
694
+ #: admin/page-entries.php:459
695
+ msgid "Move to trash"
696
+ msgstr "Flytt til papirkurven"
697
+
698
+ #: admin/page-entries.php:466
699
+ msgid "Apply"
700
+ msgstr "Bruk"
701
+
702
+ #: admin/page-entries.php:469 admin/page-entries.php:677
703
+ msgid "Empty Spam"
704
+ msgstr "Tøm Spam"
705
+
706
+ #: admin/page-entries.php:471 admin/page-entries.php:679
707
+ msgid "Empty Trash"
708
+ msgstr "Tøm papirkurven"
709
+
710
+ #: admin/page-entries.php:492 admin/page-entries.php:509
711
+ msgid "ID"
712
+ msgstr "ID"
713
+
714
+ #: admin/page-entries.php:498 admin/page-entries.php:515
715
+ #: admin/tabs/readingtab.php:206
716
+ msgid "Date"
717
+ msgstr "Dato"
718
+
719
+ #: admin/page-entries.php:500 admin/page-entries.php:517
720
+ msgid "Entry (excerpt)"
721
+ msgstr "Oppføring (utdrag)"
722
+
723
+ #: admin/page-entries.php:501 admin/page-entries.php:518
724
+ msgid "Action"
725
+ msgstr "Handling"
726
+
727
+ #: admin/page-entries.php:531
728
+ msgid "No entries found."
729
+ msgstr "Ingen oppføringer funnet"
730
+
731
+ #: admin/page-export.php:27
732
+ msgid "Export guestbook entries."
733
+ msgstr "Eksportere gjestebok oppføringer."
734
+
735
+ #: admin/page-export.php:40
736
+ msgid "Export guestbook entries from Gwolle-GB"
737
+ msgstr "Eksportere gjestebok oppføringer fra Gwolle GB"
738
+
739
+ #: admin/page-export.php:47
740
+ msgid "No entries were found."
741
+ msgstr "Ingen oppføringer funnet"
742
+
743
+ #: admin/page-export.php:52
744
+ #, php-format
745
+ msgid "%d entries were found and will be exported."
746
+ msgstr "%d oppføringer ble funnet og eksporteres."
747
+
748
+ #: admin/page-export.php:55
749
+ msgid "The exporter will preserve the following data per entry:"
750
+ msgstr "Eksportøren vil bevare følgende data per post:"
751
+
752
+ #: admin/page-export.php:58 admin/page-import.php:397 admin/page-import.php:438
753
+ #: frontend/write.php:147 frontend/write.php:154 admin/tabs/formtab.php:107
754
+ #: admin/tabs/readingtab.php:169
755
+ msgid "Name"
756
+ msgstr "Navn"
757
+
758
+ #: admin/page-export.php:59 admin/page-import.php:398 admin/page-import.php:440
759
+ msgid "E-Mail address"
760
+ msgstr "E-postadresse"
761
+
762
+ #: admin/page-export.php:60 admin/page-import.php:399 admin/page-import.php:441
763
+ msgid "URL/Website"
764
+ msgstr "URL/hjemmeside"
765
+
766
+ #: admin/page-export.php:62 admin/page-import.php:400 admin/page-import.php:442
767
+ msgid "Date of the entry"
768
+ msgstr "Dato for oppføringen"
769
+
770
+ #: admin/page-export.php:63 admin/page-import.php:401 admin/page-import.php:443
771
+ msgid "IP address"
772
+ msgstr "IP-adresse"
773
+
774
+ #: admin/page-export.php:64
775
+ msgid "Host address"
776
+ msgstr "Vertsadresse"
777
+
778
+ #: admin/page-export.php:66 admin/page-import.php:404
779
+ msgid "\"is checked\" flag"
780
+ msgstr "\"er sjekket\" flagg"
781
+
782
+ #: admin/page-export.php:67 admin/page-import.php:403
783
+ msgid "\"is spam\" flag"
784
+ msgstr "\"er spam\" flagg"
785
+
786
+ #: admin/page-export.php:68
787
+ msgid "\"is trash\" flag"
788
+ msgstr "\"er søppel\" flagg"
789
+
790
+ #: admin/page-export.php:71
791
+ msgid "The exporter does not delete any data, so your data will still be here."
792
+ msgstr "Eksportøren sletter ikke data, slik at dataene vil fortsatt være her."
793
+
794
+ #: admin/page-export.php:76
795
+ msgid "Export all entries from this website."
796
+ msgstr "Eksport alle oppføringer fra dette nettstedet."
797
+
798
+ #: admin/page-export.php:80
799
+ msgid "Start export"
800
+ msgstr "Starte eksport"
801
+
802
+ #: admin/page-gwolle-gb.php:36
803
+ msgid "Overview"
804
+ msgstr "Oversikt"
805
+
806
+ #: admin/page-gwolle-gb.php:50
807
+ msgid "Entry total"
808
+ msgstr "Oppføringen Totalt"
809
+
810
+ #: admin/page-gwolle-gb.php:53
811
+ msgid "Entries total"
812
+ msgstr "Oppføringer totalt"
813
+
814
+ #: admin/page-gwolle-gb.php:69
815
+ msgid "Unlocked entry"
816
+ msgstr "Ulåst oppføring"
817
+
818
+ #: admin/page-gwolle-gb.php:71
819
+ msgid "Unlocked entries"
820
+ msgstr "Ulåst oppføringer"
821
+
822
+ #: admin/page-gwolle-gb.php:89
823
+ msgid "New entries"
824
+ msgstr "Nye oppføringer"
825
+
826
+ #: admin/page-gwolle-gb.php:105
827
+ msgid "Spam entry"
828
+ msgstr "Spam post"
829
+
830
+ #: admin/page-gwolle-gb.php:107
831
+ msgid "Spam entries"
832
+ msgstr "Spam oppføringer"
833
+
834
+ #: admin/page-gwolle-gb.php:123
835
+ msgid "Trashed entry"
836
+ msgstr "Kastet oppføring"
837
+
838
+ #: admin/page-gwolle-gb.php:125
839
+ msgid "Trashed entries"
840
+ msgstr "Kastet oppføringer"
841
+
842
+ #: admin/page-gwolle-gb.php:147
843
+ msgid "Write admin entry"
844
+ msgstr "Skrive admin oppføring"
845
+
846
+ #: admin/page-gwolle-gb.php:158 admin/tabs/emailtab.php:47
847
+ msgid ""
848
+ "Sorry, but the function <code>mail()</code> required to notify you by mail "
849
+ "is not enabled in your PHP configuration. You might want to install a "
850
+ "WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can "
851
+ "contact your hosting provider to change this."
852
+ msgstr ""
853
+ "Beklager, men funksjonen <code>mail()</code> pålagt å varsle deg ved e-post "
854
+ "ikke er aktivert i din PHP konfigurasjon. Kan du installere en WordPress "
855
+ "plugin som bruker SMTP i stedet for <code>mail()</code> . Eller du kan "
856
+ "kontakte din leverandør for å endre dette."
857
+
858
+ #: admin/page-gwolle-gb.php:184
859
+ msgid "Send me an e-mail when a new entry has been posted."
860
+ msgstr "Send meg en e-post når en ny oppføring har blitt postert."
861
+
862
+ #: admin/page-gwolle-gb.php:186
863
+ msgid "Save setting"
864
+ msgstr "Lagre innstilling"
865
+
866
+ #: admin/page-gwolle-gb.php:191
867
+ msgid "The following users have subscribed to this service:"
868
+ msgstr "Følgende brukere abonnerer på denne tjenesten:"
869
+
870
+ #: admin/page-gwolle-gb.php:203 functions/log.php:179
871
+ #: admin/tabs/emailtab.php:66 admin/tabs/emailtab.php:98
872
+ msgid "You"
873
+ msgstr "Du"
874
+
875
+ #: admin/page-gwolle-gb.php:212
876
+ msgid "No subscriber yet"
877
+ msgstr "Ingen abonnent ennå"
878
+
879
+ #: admin/page-gwolle-gb.php:222
880
+ msgid "This plugin is being maintained by Marcel Pol from"
881
+ msgstr ""
882
+
883
+ #: admin/page-gwolle-gb.php:226
884
+ msgid "Review this plugin."
885
+ msgstr "Gjennom denne plugin."
886
+
887
+ #: admin/page-gwolle-gb.php:227
888
+ msgid "If this plugin has any value to you, then please leave a review at"
889
+ msgstr ""
890
+
891
+ #: admin/page-gwolle-gb.php:228
892
+ msgid "The plugin page at wordpress.org."
893
+ msgstr ""
894
+
895
+ #: admin/page-gwolle-gb.php:229
896
+ msgid "the plugin page at wordpress.org"
897
+ msgstr ""
898
+
899
+ #: admin/page-gwolle-gb.php:232
900
+ msgid "Donate to the EFF."
901
+ msgstr "Donere til EFF"
902
+
903
+ #: admin/page-gwolle-gb.php:233
904
+ msgid ""
905
+ "The Electronic Frontier Foundation is one of the few organisations that "
906
+ "wants to keep the internet a free place."
907
+ msgstr ""
908
+ "Electronic Frontier Foundation er en av de få organisasjonene som ønsker å "
909
+ "holde Internett et sted."
910
+
911
+ #: admin/page-gwolle-gb.php:234
912
+ msgid "Please donate to the EFF."
913
+ msgstr "Donere til EFF"
914
+
915
+ #: admin/page-gwolle-gb.php:236 admin/page-gwolle-gb.php:238
916
+ msgid "Donate to the maintainer."
917
+ msgstr "Donere til utvikleren."
918
+
919
+ #: admin/page-gwolle-gb.php:237
920
+ msgid ""
921
+ "If you rather want to donate to the maintainer of the plugin, you can donate "
922
+ "through PayPal."
923
+ msgstr ""
924
+ "Hvis du heller vil donere til utvikleren av plugin, kan du donere via PayPal."
925
+
926
+ #: admin/page-gwolle-gb.php:238
927
+ msgid "Donate through"
928
+ msgstr "Donere via"
929
+
930
+ #: admin/page-gwolle-gb.php:238
931
+ msgid "PayPal"
932
+ msgstr ""
933
+
934
+ #: admin/page-gwolle-gb.php:239
935
+ msgid "to"
936
+ msgstr ""
937
+
938
+ #: admin/page-gwolle-gb.php:248
939
+ msgid "This is how you can get your guestbook displayed on your website:"
940
+ msgstr "Dette er hvordan du kan få gjesteboken vises på webområdet:"
941
+
942
+ #: admin/page-gwolle-gb.php:250
943
+ msgid "Create a new page."
944
+ msgstr "Opprette en ny side."
945
+
946
+ #: admin/page-gwolle-gb.php:251
947
+ msgid ""
948
+ "Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the "
949
+ "content."
950
+ msgstr ""
951
+ "Velg en tittel og angi \"[gwolle_gb]\" (uten anførselstegn) som innholdet."
952
+
953
+ #: admin/page-gwolle-gb.php:252
954
+ msgid ""
955
+ "It is probably a good idea to disable comments on that page; otherwise, your "
956
+ "visitors might get a little confused."
957
+ msgstr ""
958
+ "Det er nok lurt å deaktivere kommentarer på siden; ellers kan besøkende få "
959
+ "litt forvirret."
960
+
961
+ #: admin/page-gwolle-gb.php:259
962
+ msgid "These entries will be visible for your visitors:"
963
+ msgstr "Disse oppføringene vil være synlig for besøkende:"
964
+
965
+ #: admin/page-gwolle-gb.php:261
966
+ msgid "Marked as Checked."
967
+ msgstr "Merket som sjekket."
968
+
969
+ #: admin/page-gwolle-gb.php:262
970
+ msgid "Not marked as Spam."
971
+ msgstr "Ikke merket som Spam."
972
+
973
+ #: admin/page-gwolle-gb.php:263
974
+ msgid "Not marked as Trash."
975
+ msgstr "Ikke merket som søppel."
976
+
977
+ #: admin/page-gwolle-gb.php:267
978
+ msgid "The Main Menu counter counts the following entries:"
979
+ msgstr "Hovedmenyen telleren teller følgende oppføringer:"
980
+
981
+ #: admin/page-gwolle-gb.php:269
982
+ msgid "Marked as Unchecked (You might want to moderate them)."
983
+ msgstr "Merket som ikke avmerket (kan du moderere dem)."
984
+
985
+ #: admin/page-gwolle-gb.php:270
986
+ msgid "Not marked as Spam (You might want to check them)."
987
+ msgstr "Ikke merket som Spam (kan du sjekke dem)."
988
+
989
+ #: admin/page-gwolle-gb.php:271
990
+ msgid "Not marked as Trash (You decide what goes to the trash)."
991
+ msgstr "Ikke merket som Trash (du bestemmer hva som går til papirkurven)."
992
+
993
+ #: admin/page-gwolle-gb.php:350
994
+ msgid "Welcome to the Guestbook!"
995
+ msgstr "Velkommen til gjesteboken!"
996
+
997
+ #: admin/page-gwolle-gb.php:351
998
+ msgid "E-mail Notifications"
999
+ msgstr "Epost-varslinger"
1000
+
1001
+ #: admin/page-gwolle-gb.php:352
1002
+ msgid "Review and Donate"
1003
+ msgstr ""
1004
+
1005
+ #: admin/page-gwolle-gb.php:354 admin/page-gwolle-gb.php:355
1006
+ msgid "Help"
1007
+ msgstr "Hjelp"
1008
+
1009
+ #: admin/page-gwolle-gb.php:356
1010
+ #, fuzzy
1011
+ msgid "This plugin uses the following scripts and services:"
1012
+ msgstr "Dette programtillegget bruker følgende skript/programmer/bilder:"
1013
+
1014
+ #: admin/page-gwolle-gb.php:361 frontend/widget.php:13
1015
+ msgid "Gwolle Guestbook"
1016
+ msgstr "Gwolle gjestebok"
1017
+
1018
+ #: admin/page-import.php:89
1019
+ msgid ""
1020
+ "I'm sorry, but I wasn't able to import entries from DMSGuestbook "
1021
+ "successfully."
1022
+ msgstr ""
1023
+ "Jeg beklager, men jeg var ikke importere oppføringer fra DMSGuestbook "
1024
+ "vellykket."
1025
+
1026
+ #: admin/page-import.php:91
1027
+ msgid "1 entry imported successfully from DMSGuestbook."
1028
+ msgstr "1 oppføring importert fra DMSGuestbook."
1029
+
1030
+ #: admin/page-import.php:93
1031
+ #, php-format
1032
+ msgid "%d entries imported successfully from DMSGuestbook."
1033
+ msgstr "% d oppføringer importert fra DMSGuestbook."
1034
+
1035
+ #: admin/page-import.php:97
1036
+ msgid ""
1037
+ "<strong>Nothing to import.</strong> The guestbook you've chosen does not "
1038
+ "contain any entries."
1039
+ msgstr ""
1040
+ "<strong>Ingenting å importere.</strong> Den gjestebok du har valgt "
1041
+ "inneholder ingen oppføringer."
1042
+
1043
+ #: admin/page-import.php:101
1044
+ msgid "I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook."
1045
+ msgstr ""
1046
+ "Jeg beklager, men jeg var ikke kjøpedyktig finner tabellen MySQL "
1047
+ "DMSGuestbook."
1048
+
1049
+ #: admin/page-import.php:126 admin/page-import.php:174
1050
+ msgid ""
1051
+ "You haven't chosen how to import from WordPress comments. Please choose and "
1052
+ "try again."
1053
+ msgstr ""
1054
+ "Du har ikke valgt hvordan du importerer fra WordPress kommentarer. Velg og "
1055
+ "prøv på nytt."
1056
+
1057
+ #: admin/page-import.php:161
1058
+ msgid ""
1059
+ "I'm sorry, but I wasn't able to import comments from that page successfully."
1060
+ msgstr ""
1061
+ "Jeg beklager, men jeg var ikke importere kommentarer fra siden vellykket."
1062
+
1063
+ #: admin/page-import.php:163
1064
+ msgid "1 entry imported successfully from WordPress comments."
1065
+ msgstr "En entry importert fra WordPress kommentarer."
1066
+
1067
+ #: admin/page-import.php:165
1068
+ #, php-format
1069
+ msgid "%d entries imported successfully from WordPress comments."
1070
+ msgstr "% d oppføringer importert fra WordPress kommentarer."
1071
+
1072
+ #: admin/page-import.php:169
1073
+ msgid ""
1074
+ "<strong>Nothing to import.</strong> There seem to be no comments on this "
1075
+ "page, post or at all."
1076
+ msgstr ""
1077
+ "<strong>Ingenting å importere.</strong> Det synes å være noen kommentarer på "
1078
+ "denne siden, post eller i det hele tatt."
1079
+
1080
+ #: admin/page-import.php:188
1081
+ msgid "Your filesize is too large."
1082
+ msgstr "Din fil-størrelse er for stor."
1083
+
1084
+ #: admin/page-import.php:209
1085
+ msgid "Invalid file format."
1086
+ msgstr "Ugyldig format."
1087
+
1088
+ #: admin/page-import.php:263
1089
+ msgid ""
1090
+ "It seems your CSV file is from an export that is not compatible with this "
1091
+ "version of Gwolle-GB."
1092
+ msgstr ""
1093
+ "Det synes CSV-filen er fra en eksport er ikke kompatibel med denne versjonen "
1094
+ "av Gwolle GB."
1095
+
1096
+ #: admin/page-import.php:272 admin/page-import.php:309
1097
+ msgid "Your data seems to be corrupt. Import failed."
1098
+ msgstr "Data synes å være skadet. Importen mislyktes."
1099
+
1100
+ #: admin/page-import.php:318
1101
+ msgid "I'm sorry, but I wasn't able to import entries from the CSV file."
1102
+ msgstr "Jeg beklager, men jeg var ikke importere oppføringer fra CSV-filen."
1103
+
1104
+ #: admin/page-import.php:320
1105
+ msgid "1 entry imported successfully from the CSV file."
1106
+ msgstr "1 oppføring importert fra CSV-filen."
1107
+
1108
+ #: admin/page-import.php:322
1109
+ #, php-format
1110
+ msgid "%d entries imported successfully from the CSV file."
1111
+ msgstr "% d oppføringer importert fra CSV-filen."
1112
+
1113
+ #: admin/page-import.php:331
1114
+ msgid "Your upload triggered the following error:"
1115
+ msgstr "Opplastingen utløste følgende feilmelding:"
1116
+
1117
+ #: admin/page-import.php:344
1118
+ msgid "Import guestbook entries."
1119
+ msgstr "Importera gästboksinlägg från DMSGuestbook"
1120
+
1121
+ #: admin/page-import.php:363
1122
+ msgid "Import guestbook entries from DMSGuestbook"
1123
+ msgstr "Importere gjestebok oppføringer fra DMSGuestbook"
1124
+
1125
+ #: admin/page-import.php:392
1126
+ #, php-format
1127
+ msgid "%d entries were found and will be imported."
1128
+ msgstr "%d oppføringer ble funnet og blir importert."
1129
+
1130
+ #: admin/page-import.php:395 admin/page-import.php:436
1131
+ msgid "The importer will preserve the following data per entry:"
1132
+ msgstr "Importøren vil bevare følgende data per post:"
1133
+
1134
+ #: admin/page-import.php:406 admin/page-import.php:447
1135
+ msgid ""
1136
+ "However, data such as HTML formatting is not supported by Gwolle-GB and "
1137
+ "<strong>will not</strong> be imported."
1138
+ msgstr ""
1139
+ "Men bli dataene som HTML-formatering ikke støttes av Gwolle GB og "
1140
+ "<strong>vil ikke</strong> importert."
1141
+
1142
+ #: admin/page-import.php:408 admin/page-import.php:451
1143
+ msgid ""
1144
+ "The importer does not delete any data, so you can go back whenever you want."
1145
+ msgstr "Importøren sletter ikke data, så du kan gå tilbake når som helst."
1146
+
1147
+ #: admin/page-import.php:414
1148
+ msgid "Import all entries from DMSGuestbook."
1149
+ msgstr "Import alle postene fra DMSGuestbook."
1150
+
1151
+ #: admin/page-import.php:418 admin/page-import.php:543
1152
+ #: admin/page-import.php:562
1153
+ msgid "Start import"
1154
+ msgstr "Start Import"
1155
+
1156
+ #: admin/page-import.php:421
1157
+ msgid "DMSGuestbook was not found."
1158
+ msgstr "DMSGuestbook ble ikke funnet."
1159
+
1160
+ #: admin/page-import.php:430
1161
+ msgid "Import guestbook entries from WordPress comments"
1162
+ msgstr "Importere gjestebok oppføringer fra WordPress kommentarer"
1163
+
1164
+ #: admin/page-import.php:439
1165
+ msgid "User ID"
1166
+ msgstr "Bruker ID"
1167
+
1168
+ #: admin/page-import.php:445
1169
+ msgid "\"approved\" status"
1170
+ msgstr "\"godkjent\" status"
1171
+
1172
+ #: admin/page-import.php:449
1173
+ msgid "Spam comments will not be imported."
1174
+ msgstr "Spam kommentarer vil ikke bli importert."
1175
+
1176
+ #: admin/page-import.php:454
1177
+ msgid "Select a page to import the comments from:"
1178
+ msgstr "Velg en side å importere kommentarer fra:"
1179
+
1180
+ #: admin/page-import.php:456 admin/page-import.php:494
1181
+ msgid "Select"
1182
+ msgstr "Velg"
1183
+
1184
+ #: admin/page-import.php:480 admin/page-import.php:517
1185
+ msgid " Comments"
1186
+ msgstr "Merknad"
1187
+
1188
+ #: admin/page-import.php:482 admin/page-import.php:519
1189
+ msgid "1 Comment"
1190
+ msgstr "1 Kommentar"
1191
+
1192
+ #: admin/page-import.php:492
1193
+ msgid "Select a post to import the comments from:"
1194
+ msgstr "Velg et innlegg importere kommentarer fra:"
1195
+
1196
+ #: admin/page-import.php:536
1197
+ msgid "Select where to import the comments from:"
1198
+ msgstr "Velg hvor du vil importere kommentarer fra:"
1199
+
1200
+ #: admin/page-import.php:537
1201
+ msgid "Comments from selected page."
1202
+ msgstr "Kommentarer fra valgte siden."
1203
+
1204
+ #: admin/page-import.php:538
1205
+ msgid "Comments from selected post."
1206
+ msgstr "Kommentarer fra valgt innlegget."
1207
+
1208
+ #: admin/page-import.php:539
1209
+ msgid "All Comments"
1210
+ msgstr "Alle kommentarer"
1211
+
1212
+ #: admin/page-import.php:551
1213
+ msgid "Import guestbook entries from Gwolle-GB"
1214
+ msgstr "Importere gjestebok oppføringer fra Gwolle GB"
1215
+
1216
+ #: admin/page-import.php:557
1217
+ msgid "Select a CSV file with exported entries to import again:"
1218
+ msgstr "Velg en CSV-fil med eksporterte oppføringer å importere på nytt:"
1219
+
1220
+ #: admin/page-settings.php:329
1221
+ msgid "Form"
1222
+ msgstr "Skjema"
1223
+
1224
+ #: admin/page-settings.php:330
1225
+ msgid "Reading"
1226
+ msgstr "Fortsett å les"
1227
+
1228
+ #: admin/page-settings.php:331
1229
+ msgid "Admin"
1230
+ msgstr "Administrator"
1231
+
1232
+ #: admin/page-settings.php:332 frontend/write.php:283 frontend/write.php:378
1233
+ msgid "Anti-spam"
1234
+ msgstr "Anti spam"
1235
+
1236
+ #: admin/page-settings.php:333
1237
+ msgid "E-mail"
1238
+ msgstr "E-post"
1239
+
1240
+ #: admin/page-settings.php:334 admin/tabs/uninstalltab.php:45
1241
+ msgid "Uninstall"
1242
+ msgstr "Avinstaller"
1243
+
1244
+ #: admin/pagination.php:47
1245
+ msgid "Showing:"
1246
+ msgstr "Viser"
1247
+
1248
+ #: admin/pagination.php:48
1249
+ msgid "of"
1250
+ msgstr "av"
1251
+
1252
+ #: frontend/gwolle_gb-entry.php:79
1253
+ msgid "from"
1254
+ msgstr "fra"
1255
+
1256
+ #: frontend/gwolle_gb-entry.php:88
1257
+ msgid "wrote on"
1258
+ msgstr "skrev på"
1259
+
1260
+ #: frontend/gwolle_gb-entry.php:92
1261
+ msgid "on"
1262
+ msgstr "på"
1263
+
1264
+ #: frontend/gwolle_gb-entry.php:151
1265
+ msgid "Admin Reply:"
1266
+ msgstr ""
1267
+
1268
+ #: frontend/pagination.php:23
1269
+ msgid "Previous page"
1270
+ msgstr "Forrige side"
1271
+
1272
+ #: frontend/pagination.php:36 frontend/pagination.php:44
1273
+ #: frontend/pagination.php:50 frontend/pagination.php:65
1274
+ #: frontend/pagination.php:76
1275
+ msgid "Page"
1276
+ msgstr "Side:"
1277
+
1278
+ #: frontend/pagination.php:47 frontend/pagination.php:77
1279
+ msgid "Next page"
1280
+ msgstr "Neste side"
1281
+
1282
+ #: frontend/pagination.php:85
1283
+ #, fuzzy
1284
+ msgid "All entries"
1285
+ msgstr "Nye oppføringer"
1286
+
1287
+ #: frontend/posthandling.php:39
1288
+ msgid "Submitting a new guestbook entry is only allowed for logged-in users."
1289
+ msgstr "Sende en ny gjestebok oppføring tillates bare for påloggede brukere."
1290
+
1291
+ #: frontend/posthandling.php:195 frontend/posthandling.php:238
1292
+ msgid "There were errors submitting your guestbook entry."
1293
+ msgstr "Det oppstod feil innsending gjestebok."
1294
+
1295
+ #: frontend/posthandling.php:201
1296
+ msgid "Your name is not filled in, even though it is mandatory."
1297
+ msgstr "Ditt navn er ikke fylt inn, selv om det er obligatorisk."
1298
+
1299
+ #: frontend/posthandling.php:204
1300
+ msgid "Your origin is not filled in, even though it is mandatory."
1301
+ msgstr "Din opprinnelse er ikke fylt ut, selv om det er obligatorisk."
1302
+
1303
+ #: frontend/posthandling.php:207
1304
+ msgid ""
1305
+ "Your e-mail address is not filled in correctly, even though it is mandatory."
1306
+ msgstr "E-postadressen er ikke fylt ut riktig, selv om det er obligatorisk."
1307
+
1308
+ #: frontend/posthandling.php:210
1309
+ msgid "Your website is not filled in, even though it is mandatory."
1310
+ msgstr "Webområdet ikke er fylt ut, selv om det er obligatorisk."
1311
+
1312
+ #: frontend/posthandling.php:213
1313
+ msgid "There is no message, even though it is mandatory."
1314
+ msgstr "Det vises ingen melding, selv om det er obligatorisk."
1315
+
1316
+ #: frontend/posthandling.php:216
1317
+ msgid ""
1318
+ "The anti-spam question was not answered correctly, even though it is "
1319
+ "mandatory."
1320
+ msgstr ""
1321
+ "Anti-spam spørsmål ble ikke besvart riktig, selv om det er obligatorisk."
1322
+
1323
+ #: frontend/posthandling.php:219
1324
+ #, fuzzy
1325
+ msgid "The CAPTCHA was not filled in correctly, even though it is mandatory."
1326
+ msgstr "reCAPTCHA-koden var ikke skrevet inn korrekt"
1327
+
1328
+ #: frontend/posthandling.php:322
1329
+ msgid "Double post: An entry with the data you entered has already been saved."
1330
+ msgstr "Dobbel post: en oppføring med dataene du angav er allerede lagret."
1331
+
1332
+ #: frontend/posthandling.php:338
1333
+ msgid "Thank you for your entry."
1334
+ msgstr "Takk for bidraget ditt."
1335
+
1336
+ #: frontend/posthandling.php:340
1337
+ msgid "We will review it and unlock it in a short while."
1338
+ msgstr "Vi vil vurdere det og låse den i en kort stund."
1339
+
1340
+ #: frontend/read.php:87
1341
+ msgid "(no entries yet)"
1342
+ msgstr "(ingen oppføringer ennå)"
1343
+
1344
+ #: frontend/rss.php:81
1345
+ msgid "Guestbook Entry by"
1346
+ msgstr "Gjestebok innlegging"
1347
+
1348
+ #: frontend/widget.php:12
1349
+ msgid "Displays the recent guestbook entries."
1350
+ msgstr "Viser siste gjestebok oppføringer."
1351
+
1352
+ #: frontend/widget.php:29 frontend/widget.php:253
1353
+ msgid "Visit guestbook"
1354
+ msgstr "Besøk gjesteboken"
1355
+
1356
+ #: frontend/widget.php:197
1357
+ msgid "Click here to get to the guestbook."
1358
+ msgstr "Klikk her for å komme til gjesteboken."
1359
+
1360
+ #: frontend/widget.php:270
1361
+ msgid "Title:"
1362
+ msgstr "Tittel:"
1363
+
1364
+ #: frontend/widget.php:276
1365
+ msgid "Number of entries:"
1366
+ msgstr "Antall oppføringer:"
1367
+
1368
+ #: frontend/widget.php:292
1369
+ msgid "Best entries to show:"
1370
+ msgstr "Beste oppføringer å vise:"
1371
+
1372
+ #: frontend/widget.php:294
1373
+ msgid "List of entry_id's, comma-separated"
1374
+ msgstr "Liste over entry_id, komma"
1375
+
1376
+ #: frontend/widget.php:300
1377
+ msgid "Do not show admin entries."
1378
+ msgstr ""
1379
+
1380
+ #: frontend/widget.php:306
1381
+ msgid "Show name of author."
1382
+ msgstr "Visa namn författare."
1383
+
1384
+ #: frontend/widget.php:312
1385
+ msgid "Show date of entry."
1386
+ msgstr "Dato for innlegg."
1387
+
1388
+ #: frontend/widget.php:316
1389
+ msgid "Number of words for each entry:"
1390
+ msgstr "Antall ord for hver oppføring:"
1391
+
1392
+ #: frontend/widget.php:332
1393
+ msgid "Link text:"
1394
+ msgstr "Link tekst"
1395
+
1396
+ #: frontend/widget.php:338
1397
+ msgid "Select the page of the guestbook:"
1398
+ msgstr "Velg siden i gjesteboken:"
1399
+
1400
+ #: frontend/widget.php:340
1401
+ msgid "Select page"
1402
+ msgstr "Velg side"
1403
+
1404
+ #: frontend/write.php:95
1405
+ msgid "Write a new entry."
1406
+ msgstr "Nytt innlegg"
1407
+
1408
+ #: frontend/write.php:103
1409
+ msgid "Log in to post an entry"
1410
+ msgstr "Logg inn for å skrive et innlegg"
1411
+
1412
+ #: frontend/write.php:130 admin/tabs/formtab.php:58
1413
+ msgid "Write a new entry for the Guestbook"
1414
+ msgstr "Skrive en ny oppføring for gjesteboken"
1415
+
1416
+ #: frontend/write.php:187 frontend/write.php:194 admin/tabs/formtab.php:147
1417
+ msgid "Email"
1418
+ msgstr "E-post"
1419
+
1420
+ #: frontend/write.php:284
1421
+ msgid "Question:"
1422
+ msgstr "Spørsmål:"
1423
+
1424
+ #: frontend/write.php:290
1425
+ msgid "Answer"
1426
+ msgstr "Svar"
1427
+
1428
+ #: frontend/write.php:360
1429
+ msgid "Correct CAPTCHA value."
1430
+ msgstr ""
1431
+
1432
+ #: frontend/write.php:363
1433
+ msgid "Incorrect CAPTCHA value."
1434
+ msgstr ""
1435
+
1436
+ #: frontend/write.php:387 admin/tabs/antispamtab.php:101
1437
+ #: admin/tabs/formtab.php:237
1438
+ #, fuzzy
1439
+ msgid "CAPTCHA"
1440
+ msgstr "reCAPTCHA"
1441
+
1442
+ #: frontend/write.php:407
1443
+ msgid "Submit"
1444
+ msgstr "Send"
1445
+
1446
+ #: frontend/write.php:416 admin/tabs/formtab.php:74
1447
+ msgid ""
1448
+ "\n"
1449
+ "Fields marked with * are obligatory.\n"
1450
+ "Your E-mail address wil not be published.\n"
1451
+ "For security reasons we save the ip address %ip%.\n"
1452
+ "It might be that your entry will only be visible in the guestbook after we "
1453
+ "reviewed it.\n"
1454
+ "We reserve our right to edit, delete, or not publish entries.\n"
1455
+ msgstr ""
1456
+ "\n"
1457
+ "Fields merket med * er obligatoriske. \n"
1458
+ "Your e-postadresse vil ikke bli publisert. \n"
1459
+ "For sikkerhetsmessige grunner vi lagrer ip adressen %ip%.\n"
1460
+ "It kan være at oppføringen vil bare være synlige i gjesteboken når vi "
1461
+ "vurdert det. \n"
1462
+ "We reserve vår rett til å redigere, slette eller ikke publisere "
1463
+ "oppføringer. \n"
1464
+
1465
+ #: functions/log.php:97
1466
+ msgid "Entry has been locked."
1467
+ msgstr "Innlegget er låst."
1468
+
1469
+ #: functions/log.php:98
1470
+ msgid "Entry has been checked."
1471
+ msgstr "Oppføringen har blitt sjekket."
1472
+
1473
+ #: functions/log.php:99
1474
+ msgid "Entry marked as spam."
1475
+ msgstr ""
1476
+ "oppføringen merket som spam, og sendt til Akismet som spam (hvis Akismet er "
1477
+ "aktivert)."
1478
+
1479
+ #: functions/log.php:100
1480
+ msgid "Entry marked as not spam."
1481
+ msgstr ""
1482
+ "oppføringen merket som spam, og sendt til Akismet som spam (hvis Akismet er "
1483
+ "aktivert)."
1484
+
1485
+ #: functions/log.php:101
1486
+ msgid "Entry has been edited."
1487
+ msgstr "Oppføringen er redigert."
1488
+
1489
+ #: functions/log.php:102
1490
+ msgid "Imported from DMSGuestbook"
1491
+ msgstr "Importert fra DMSGuestbook"
1492
+
1493
+ #: functions/log.php:103
1494
+ msgid "Imported from WordPress comments"
1495
+ msgstr "Importert fra WordPress kommentarer"
1496
+
1497
+ #: functions/log.php:104
1498
+ msgid "Imported from Gwolle-GB"
1499
+ msgstr "Importert fra Gwolle-GB"
1500
+
1501
+ #: functions/log.php:105
1502
+ msgid "Exported to CSV file"
1503
+ msgstr "Eksporteres til CSV-fil"
1504
+
1505
+ #: functions/log.php:106
1506
+ msgid "Entry has been trashed."
1507
+ msgstr "Oppføringen har blitt kastet."
1508
+
1509
+ #: functions/log.php:107
1510
+ msgid "Entry has been untrashed."
1511
+ msgstr "Posten er untrashed."
1512
+
1513
+ #: functions/log.php:108
1514
+ #, fuzzy
1515
+ msgid "Admin reply has been added."
1516
+ msgstr "Oppføringen er redigert."
1517
+
1518
+ #: functions/log.php:109
1519
+ #, fuzzy
1520
+ msgid "Admin reply has been updated."
1521
+ msgstr "Oppføringen er redigert."
1522
+
1523
+ #: functions/log.php:110
1524
+ #, fuzzy
1525
+ msgid "Admin reply has been removed."
1526
+ msgstr "Innlegget er låst."
1527
+
1528
+ #: functions/mail.php:35 admin/tabs/emailtab.php:117
1529
+ msgid ""
1530
+ "\n"
1531
+ "Hello,\n"
1532
+ "\n"
1533
+ "There is a new guestbook entry at '%blog_name%'.\n"
1534
+ "You can check it at %entry_management_url%.\n"
1535
+ "\n"
1536
+ "Have a nice day.\n"
1537
+ "Your Gwolle-GB-Mailer\n"
1538
+ "\n"
1539
+ "\n"
1540
+ "Website address: %blog_url%\n"
1541
+ "User name: %user_name%\n"
1542
+ "User email: %user_email%\n"
1543
+ "Entry status: %status%\n"
1544
+ "Entry content:\n"
1545
+ "%entry_content%\n"
1546
+ msgstr ""
1547
+ "\n"
1548
+ "Hello,\n"
1549
+ "\n"
1550
+ "There er en ny gjestebok oppføring på ' %blog_name%'.\n"
1551
+ "You kan sjekke det på %entry_management_url%.\n"
1552
+ "\n"
1553
+ "Have en fin dag. \n"
1554
+ "Your Gwolle-GB-Mailer\n"
1555
+ "\n"
1556
+ "\n"
1557
+ "Website adresse: %blog_url%\n"
1558
+ "User navn: %user_name%\n"
1559
+ "User e-post: %user_email%\n"
1560
+ "Entry status: %status%\n"
1561
+ "Entry content:\n"
1562
+ "%entry_content%\n"
1563
+
1564
+ #: functions/mail.php:56 functions/mail.php:134
1565
+ msgid "New Guestbook Entry"
1566
+ msgstr "Ny gjestebok oppføring"
1567
+
1568
+ #: functions/mail.php:82
1569
+ #, fuzzy
1570
+ msgid "Unchecked"
1571
+ msgstr "Fjern"
1572
+
1573
+ #: functions/mail.php:115 admin/tabs/emailtab.php:177
1574
+ msgid ""
1575
+ "\n"
1576
+ "Hello,\n"
1577
+ "\n"
1578
+ "You have just posted a new guestbook entry at '%blog_name%'.\n"
1579
+ "\n"
1580
+ "Have a nice day.\n"
1581
+ "The editors at %blog_name%.\n"
1582
+ "\n"
1583
+ "\n"
1584
+ "Website address: %blog_url%\n"
1585
+ "User name: %user_name%\n"
1586
+ "User email: %user_email%\n"
1587
+ "Entry content:\n"
1588
+ "%entry_content%\n"
1589
+ msgstr ""
1590
+ "\n"
1591
+ "Hello,\n"
1592
+ "\n"
1593
+ "Du har nettopp lagt ut en ny gjestebok oppføring på ' %blog_name%'.\n"
1594
+ "\n"
1595
+ "Ha en fin dag. \n"
1596
+ "Redaktøren på %blog_name%.\n"
1597
+ "\n"
1598
+ "\n"
1599
+ "Website adresse: %blog_url%\n"
1600
+ "Brukernavn: %user_name%\n"
1601
+ "Bruker e-post: %user_email%\n"
1602
+ "Entry content:\n"
1603
+ "%entry_content%\n"
1604
+
1605
+ #: functions/mail.php:180 admin/tabs/emailtab.php:217
1606
+ #, fuzzy
1607
+ msgid ""
1608
+ "\n"
1609
+ "Hello,\n"
1610
+ "\n"
1611
+ "An admin has just added or changed a reply message to your guestbook entry "
1612
+ "at '%blog_name%'.\n"
1613
+ "\n"
1614
+ "Have a nice day.\n"
1615
+ "The editors at %blog_name%.\n"
1616
+ "\n"
1617
+ "\n"
1618
+ "Website address: %blog_url%\n"
1619
+ "Admin Reply:\n"
1620
+ "%admin_reply%\n"
1621
+ msgstr ""
1622
+ "\n"
1623
+ "Hello,\n"
1624
+ "\n"
1625
+ "Du har nettopp lagt ut en ny gjestebok oppføring på ' %blog_name%'.\n"
1626
+ "\n"
1627
+ "Ha en fin dag. \n"
1628
+ "Redaktøren på %blog_name%.\n"
1629
+ "\n"
1630
+ "\n"
1631
+ "Website adresse: %blog_url%\n"
1632
+ "Brukernavn: %user_name%\n"
1633
+ "Bruker e-post: %user_email%\n"
1634
+ "Entry content:\n"
1635
+ "%entry_content%\n"
1636
+
1637
+ #: functions/misc.php:66
1638
+ msgid "No content to display. This entry is empty."
1639
+ msgstr "Ingen innhold som skal vises. Denne oppføringen er tom."
1640
+
1641
+ #: functions/misc.php:101
1642
+ msgid "Visit the website of"
1643
+ msgstr ""
1644
+
1645
+ #: functions/misc.php:348
1646
+ msgid "Day"
1647
+ msgstr ""
1648
+
1649
+ #: functions/misc.php:351
1650
+ msgid "Month"
1651
+ msgstr ""
1652
+
1653
+ #: functions/misc.php:356
1654
+ #, php-format
1655
+ msgid "%1$s-%2$s"
1656
+ msgstr ""
1657
+
1658
+ #: functions/misc.php:361
1659
+ msgid "Year"
1660
+ msgstr ""
1661
+
1662
+ #: functions/misc.php:364
1663
+ msgid "Hour"
1664
+ msgstr ""
1665
+
1666
+ #: functions/misc.php:366
1667
+ msgid "Minute"
1668
+ msgstr ""
1669
+
1670
+ #: functions/misc.php:375
1671
+ #, fuzzy
1672
+ msgid "Save the date and time"
1673
+ msgstr "Dato og klokkeslett:"
1674
+
1675
+ #: functions/misc.php:376
1676
+ #, fuzzy
1677
+ msgid "Save Date"
1678
+ msgstr "Lagre"
1679
+
1680
+ #: functions/misc.php:378
1681
+ msgid "Cancel saving date and time"
1682
+ msgstr ""
1683
+
1684
+ #: functions/misc.php:379
1685
+ msgid "Cancel"
1686
+ msgstr ""
1687
+
1688
+ #: admin/tabs/admintab.php:26
1689
+ msgid "Entries per page in the admin"
1690
+ msgstr "Oppføringer per side i admin"
1691
+
1692
+ #: admin/tabs/admintab.php:41
1693
+ msgid "Number of entries shown in the admin."
1694
+ msgstr "Antall oppføringer som vises i admin."
1695
+
1696
+ #: admin/tabs/admintab.php:46
1697
+ msgid "Entry icons"
1698
+ msgstr "Oppføringen ikoner"
1699
+
1700
+ #: admin/tabs/admintab.php:52
1701
+ msgid "Show entry icons"
1702
+ msgstr "Vis oppføringen ikoner"
1703
+
1704
+ #: admin/tabs/admintab.php:54
1705
+ msgid ""
1706
+ "These icons are shown in every entry row of the admin list, so that you know "
1707
+ "its status (checked, spam and trash)."
1708
+ msgstr ""
1709
+ "Disse ikonene vises i hver oppføringsraden av admin listen, slik at du vet "
1710
+ "statusen (kontrollert, nettsøppel og Papirkurv)."
1711
+
1712
+ #: admin/tabs/admintab.php:61 admin/tabs/antispamtab.php:125
1713
+ #: admin/tabs/emailtab.php:252 admin/tabs/formtab.php:254
1714
+ #: admin/tabs/readingtab.php:246
1715
+ msgid "Save settings"
1716
+ msgstr "Lagre innstillinger"
1717
+
1718
+ #: admin/tabs/antispamtab.php:26
1719
+ msgid "Moderate Guestbook"
1720
+ msgstr "Redigere gjesteboken"
1721
+
1722
+ #: admin/tabs/antispamtab.php:34
1723
+ msgid "Moderate entries before publishing them."
1724
+ msgstr "Moderat oppføringer før du publiserer dem."
1725
+
1726
+ #: admin/tabs/antispamtab.php:38
1727
+ msgid ""
1728
+ "New entries have to be unlocked by a moderator before they are visible to "
1729
+ "the public."
1730
+ msgstr "Nye oppføringer må låses opp ved en moderator før de vises offentlig."
1731
+
1732
+ #: admin/tabs/antispamtab.php:40
1733
+ msgid ""
1734
+ "It is recommended that you turn this on, because you are responsible for the "
1735
+ "content on your website."
1736
+ msgstr ""
1737
+ "Det anbefales at du aktiverer dette, fordi du er ansvarlig for innholdet på "
1738
+ "webområdet."
1739
+
1740
+ #: admin/tabs/antispamtab.php:50
1741
+ msgid "Learn more about Akismet..."
1742
+ msgstr "Lær mer om Akismet..."
1743
+
1744
+ #: admin/tabs/antispamtab.php:50
1745
+ msgid "What's that?"
1746
+ msgstr "hva er det?"
1747
+
1748
+ #: admin/tabs/antispamtab.php:61
1749
+ msgid ""
1750
+ "Akismet helps you to fight spam. It's free and easy to install. Download and "
1751
+ "install it today to stop spam in your guestbook."
1752
+ msgstr ""
1753
+ "Akismet hjelper deg å bekjempe spam. Det er gratis og enkel å installere. "
1754
+ "Dataoverføre og installere det i dag for å stoppe spam i gjesteboken."
1755
+
1756
+ #: admin/tabs/antispamtab.php:64
1757
+ #, php-format
1758
+ msgid ""
1759
+ "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1760
+ "can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1761
+ msgstr ""
1762
+ "Beklager, ikke kunne finne din <strong>WordPress API-nøkkel</strong>. Du kan "
1763
+ "angi den på <a href=\"%s\">Akismet konfigurasjonsside</a>."
1764
+
1765
+ #: admin/tabs/antispamtab.php:73
1766
+ msgid "Use Akismet"
1767
+ msgstr "Bruk Akismet"
1768
+
1769
+ #: admin/tabs/antispamtab.php:75
1770
+ msgid ""
1771
+ "The WordPress API key has been found, so you can start using Akismet right "
1772
+ "now."
1773
+ msgstr "WordPress API-nøkkel er funnet, så kan du bruke Akismet akkurat nå."
1774
+
1775
+ #: admin/tabs/antispamtab.php:86
1776
+ msgid "Custom Anti-Spam Security Question"
1777
+ msgstr "Egendefinerte anti-spam sikkerhetsspørsmål"
1778
+
1779
+ #: admin/tabs/antispamtab.php:89
1780
+ msgid "12 + six ="
1781
+ msgstr "12 + seks ="
1782
+
1783
+ #: admin/tabs/antispamtab.php:90
1784
+ msgid "Custom security question to battle spam."
1785
+ msgstr "Egendefinerte sikkerhetsspørsmålet kampen spam."
1786
+
1787
+ #: admin/tabs/antispamtab.php:92
1788
+ msgid "18"
1789
+ msgstr "18"
1790
+
1791
+ #: admin/tabs/antispamtab.php:93
1792
+ msgid "The answer to your security question."
1793
+ msgstr "Svaret på sikkerhetsspørsmålet."
1794
+
1795
+ #: admin/tabs/antispamtab.php:95
1796
+ msgid ""
1797
+ "You can ask your visitors to answer a custom security question, so only real "
1798
+ "people can post an entry."
1799
+ msgstr ""
1800
+ "Du kan be de besøkende om å svare et egendefinert sikkerhetsspørsmål, så "
1801
+ "bare virkelig folk kan legge inn en oppføring."
1802
+
1803
+ #: admin/tabs/antispamtab.php:105
1804
+ #, fuzzy
1805
+ msgid ""
1806
+ "A CAPTCHA is a way to have visitors fill in a field with a few letters or "
1807
+ "numbers. It is a way to make sure that you have a human visitor and not a "
1808
+ "spambot. Not every visitor will appreciate it though, some will consider it "
1809
+ "unfriendly."
1810
+ msgstr ""
1811
+ "reCAPTCHA er en måte å ha besøkende fyller ut et felt med et par bokstaver "
1812
+ "eller tall. Det er en måte å kontrollere at du har menneske og ikke en "
1813
+ "spambot. Ikke alle besøkende vil verdsette den skjønt, noen vil vurdere det "
1814
+ "uvennlig."
1815
+
1816
+ #: admin/tabs/antispamtab.php:107
1817
+ msgid "For the CAPTCHA you need the plugin"
1818
+ msgstr ""
1819
+
1820
+ #: admin/tabs/antispamtab.php:108
1821
+ msgid "Really Simple CAPTCHA plugin at wordpress.org"
1822
+ msgstr ""
1823
+
1824
+ #: admin/tabs/antispamtab.php:108
1825
+ msgid "Really Simple CAPTCHA"
1826
+ msgstr ""
1827
+
1828
+ #: admin/tabs/antispamtab.php:109
1829
+ msgid "installed and activated"
1830
+ msgstr ""
1831
+
1832
+ #: admin/tabs/antispamtab.php:113
1833
+ msgid ""
1834
+ "This plugin is installed and activated, so the CAPTCHA is ready to be used."
1835
+ msgstr ""
1836
+
1837
+ #: admin/tabs/antispamtab.php:116
1838
+ msgid ""
1839
+ "If you use any caching plugin together with this CAPTCHA, page caching will "
1840
+ "be disabled for the page that the CAPTCHA is shown on. This is to prevent "
1841
+ "errors and to have a fresh CAPCHA image each time."
1842
+ msgstr ""
1843
+
1844
+ #: admin/tabs/emailtab.php:26
1845
+ msgid "Admin mail from address"
1846
+ msgstr "Admin e-post fra adressen"
1847
+
1848
+ #: admin/tabs/emailtab.php:32
1849
+ msgid ""
1850
+ "You can set the email address that is used for the From header of the mail "
1851
+ "that a notification subscriber gets on new entries."
1852
+ msgstr ""
1853
+ "Du kan angi e-postadressen som brukes for fra hodet til posten som en "
1854
+ "varslingsabonnenten får på nye oppføringer."
1855
+
1856
+ #: admin/tabs/emailtab.php:34
1857
+ msgid "By default the main admin address is used from General >> Settings."
1858
+ msgstr ""
1859
+ "Som standard hoved admin adressen brukes fra General &gt;&gt; innstillinger."
1860
+
1861
+ #: admin/tabs/emailtab.php:41
1862
+ msgid "Unsubscribe moderators"
1863
+ msgstr "Unsubscribe moderatorer"
1864
+
1865
+ #: admin/tabs/emailtab.php:51
1866
+ msgid "Unsubscribe User"
1867
+ msgstr "Melde bruker"
1868
+
1869
+ #: admin/tabs/emailtab.php:73
1870
+ msgid "These users have subscribed to the notification emails."
1871
+ msgstr "Disse brukerne har abonnert på varslingsmeldinger."
1872
+
1873
+ #: admin/tabs/emailtab.php:74
1874
+ msgid ""
1875
+ "Select a user if you want that user to unsubscribe from the notification "
1876
+ "emails."
1877
+ msgstr "Välj en användare som du vill anmäla till e-postmeddelanden."
1878
+
1879
+ #: admin/tabs/emailtab.php:79
1880
+ msgid "Subscribe moderators"
1881
+ msgstr "Abonner moderatorer"
1882
+
1883
+ #: admin/tabs/emailtab.php:82
1884
+ msgid "Subscribe User"
1885
+ msgstr "Abonner som bruker"
1886
+
1887
+ #: admin/tabs/emailtab.php:104
1888
+ msgid "You can subscribe a moderator to the notification emails."
1889
+ msgstr "Du kan abonnere en moderator på varsling e-poster."
1890
+
1891
+ #: admin/tabs/emailtab.php:105
1892
+ msgid "Select a user that you want subscribed to the notification emails."
1893
+ msgstr "Velg en bruker som du abonnerer på varslingsmeldinger."
1894
+
1895
+ #: admin/tabs/emailtab.php:106
1896
+ msgid ""
1897
+ "You will only see users with the roles of Administrator, Editor and Author, "
1898
+ "who have the capability 'moderate_comments' ."
1899
+ msgstr ""
1900
+ "Du vil bare se brukere med roller av systemansvarlig, redaktør og forfatter, "
1901
+ "som har evnen 'moderate_comments'."
1902
+
1903
+ #: admin/tabs/emailtab.php:112
1904
+ msgid "Admin mail content"
1905
+ msgstr "Admin-innhold"
1906
+
1907
+ #: admin/tabs/emailtab.php:139
1908
+ msgid ""
1909
+ "You can set the content of the mail that a notification subscriber gets on "
1910
+ "new entries. The following tags are supported:"
1911
+ msgstr ""
1912
+ "Du kan angi innholdet i e-post som en varslingsabonnenten får på nye "
1913
+ "oppføringer. Følgende koder støttes:"
1914
+
1915
+ #: admin/tabs/emailtab.php:154
1916
+ msgid "Mail Author"
1917
+ msgstr "Mail forfatter"
1918
+
1919
+ #: admin/tabs/emailtab.php:162
1920
+ msgid "Mail the author with a confirmation email."
1921
+ msgstr "Post forfatteren med en e-postbekreftelse."
1922
+
1923
+ #: admin/tabs/emailtab.php:166
1924
+ msgid ""
1925
+ "The author of the guestbook entry will receive an email after posting. It "
1926
+ "will have a copy of the entry."
1927
+ msgstr ""
1928
+ "Forfatteren av hilsenen vil motta en email etter bokføring. Det vil ha en "
1929
+ "kopi av posten."
1930
+
1931
+ #: admin/tabs/emailtab.php:172
1932
+ msgid "Author mail content"
1933
+ msgstr "Forfatter-innhold"
1934
+
1935
+ #: admin/tabs/emailtab.php:197
1936
+ msgid ""
1937
+ "You can set the content of the mail that the author of the entry will "
1938
+ "receive. The following tags are supported:"
1939
+ msgstr ""
1940
+ "Du kan angi innholdet i posten som forfatteren av posten vil motta. Følgende "
1941
+ "koder støttes:"
1942
+
1943
+ #: admin/tabs/emailtab.php:212
1944
+ #, fuzzy
1945
+ msgid "Admin Reply mail content"
1946
+ msgstr "Admin-innhold"
1947
+
1948
+ #: admin/tabs/emailtab.php:235
1949
+ #, fuzzy
1950
+ msgid ""
1951
+ "You can set the content of the mail that the author of the entry will "
1952
+ "receive when an Admin Reply is added. The following tags are supported:"
1953
+ msgstr ""
1954
+ "Du kan angi innholdet i posten som forfatteren av posten vil motta. Følgende "
1955
+ "koder støttes:"
1956
+
1957
+ #: admin/tabs/formtab.php:26
1958
+ msgid "Require Login"
1959
+ msgstr "Kreve pålogging"
1960
+
1961
+ #: admin/tabs/formtab.php:33
1962
+ msgid "Require user to be logged in."
1963
+ msgstr "Forlange bruker å være innlogget."
1964
+
1965
+ #: admin/tabs/formtab.php:35
1966
+ msgid "Only allow logged-in users to add a guestbook entry."
1967
+ msgstr "Tillat bare påloggede brukere kan legge til en gjestebok oppføring."
1968
+
1969
+ #: admin/tabs/formtab.php:40
1970
+ msgid "Labels float"
1971
+ msgstr "Etiketter flyter"
1972
+
1973
+ #: admin/tabs/formtab.php:47
1974
+ msgid "Labels in the form float to the left."
1975
+ msgstr "Etiketter i skjemaet float til venstre."
1976
+
1977
+ #: admin/tabs/formtab.php:49
1978
+ msgid ""
1979
+ "Labels in the form float to the left. Otherwise the labels will be above the "
1980
+ "input-fields."
1981
+ msgstr ""
1982
+ "Etiketter i skjemaet float til venstre. Ellers blir etikettene over inndata-"
1983
+ "feltene."
1984
+
1985
+ #: admin/tabs/formtab.php:54
1986
+ msgid "Header Text"
1987
+ msgstr "Topptekst"
1988
+
1989
+ #: admin/tabs/formtab.php:63
1990
+ msgid "You can set the header that is shown on top of the form."
1991
+ msgstr "Du kan angi overskriften som vises på skjemaet."
1992
+
1993
+ #: admin/tabs/formtab.php:69
1994
+ msgid "Notice Text"
1995
+ msgstr "Merke tekst"
1996
+
1997
+ #: admin/tabs/formtab.php:86
1998
+ msgid "You can set the content of the notice that gets shown below the form."
1999
+ msgstr "Du kan angi innholdet i varselet som blir vist under skjemaet."
2000
+
2001
+ #: admin/tabs/formtab.php:88
2002
+ msgid "You can use the tag %ip% to show the ip address."
2003
+ msgstr "Du kan bruke koden %-ip til å vise ip-adressen."
2004
+
2005
+ #: admin/tabs/formtab.php:90
2006
+ msgid ""
2007
+ "If you use a Multi-Lingual plugin, keep the 2 fields for header and notice "
2008
+ "empty when saving. That way the default text will be shown from a translated "
2009
+ "PO file."
2010
+ msgstr ""
2011
+
2012
+ #: admin/tabs/formtab.php:103
2013
+ msgid "Configure the form that is shown to visitors."
2014
+ msgstr "Konfigurer skjemaet som vises for besøkende."
2015
+
2016
+ #: admin/tabs/formtab.php:114 admin/tabs/formtab.php:134
2017
+ #: admin/tabs/formtab.php:154 admin/tabs/formtab.php:174
2018
+ #: admin/tabs/formtab.php:194 admin/tabs/formtab.php:214
2019
+ #: admin/tabs/formtab.php:229 admin/tabs/formtab.php:244
2020
+ #: admin/tabs/readingtab.php:164 admin/tabs/readingtab.php:176
2021
+ #: admin/tabs/readingtab.php:188 admin/tabs/readingtab.php:200
2022
+ #: admin/tabs/readingtab.php:213 admin/tabs/readingtab.php:226
2023
+ #: admin/tabs/readingtab.php:238
2024
+ msgid "Enabled"
2025
+ msgstr "Aktivert"
2026
+
2027
+ #: admin/tabs/formtab.php:122 admin/tabs/formtab.php:142
2028
+ #: admin/tabs/formtab.php:162 admin/tabs/formtab.php:182
2029
+ #: admin/tabs/formtab.php:202
2030
+ msgid "Mandatory"
2031
+ msgstr "Obligatorisk"
2032
+
2033
+ #: admin/tabs/formtab.php:207
2034
+ msgid "BBcode and Emoji"
2035
+ msgstr "BBcode og Emoji"
2036
+
2037
+ #: admin/tabs/formtab.php:217
2038
+ msgid "Will only be shown if the Message is enabled."
2039
+ msgstr "Bare vises hvis meldingen er aktivert."
2040
+
2041
+ #: admin/tabs/formtab.php:222
2042
+ msgid "Custom Anti-spam"
2043
+ msgstr "Anpassad anti-spam säkerhetsfråga"
2044
+
2045
+ #: admin/tabs/formtab.php:232 admin/tabs/formtab.php:247
2046
+ msgid "When enabled it is mandatory."
2047
+ msgstr "Når aktivert det er obligatorisk."
2048
+
2049
+ #: admin/tabs/readingtab.php:26
2050
+ msgid "Entries per page on the frontend"
2051
+ msgstr "Oppføringer per side på frontend"
2052
+
2053
+ #: admin/tabs/readingtab.php:41
2054
+ msgid "Number of entries shown on the frontend."
2055
+ msgstr "Antall oppføringer som vises på frontend."
2056
+
2057
+ #: admin/tabs/readingtab.php:46
2058
+ msgid "Length of the entry content"
2059
+ msgstr "Lengden på oppføringen innholdet"
2060
+
2061
+ #: admin/tabs/readingtab.php:56
2062
+ msgid "Unlimited Words"
2063
+ msgstr "Ubegrenset ord"
2064
+
2065
+ #: admin/tabs/readingtab.php:63
2066
+ msgid "Words"
2067
+ msgstr "Ord"
2068
+
2069
+ #: admin/tabs/readingtab.php:69
2070
+ msgid "Maximum length of the entry content in words."
2071
+ msgstr "Maksimumslengden på oppføring innholdet i ord."
2072
+
2073
+ #: admin/tabs/readingtab.php:70
2074
+ msgid "Please be aware that this will strip linebreaks as well."
2075
+ msgstr "Vær oppmerksom på at dette vil fjerne kun linjeskift også."
2076
+
2077
+ #: admin/tabs/readingtab.php:76
2078
+ msgid "Line breaks"
2079
+ msgstr "Linjeskift"
2080
+
2081
+ #: admin/tabs/readingtab.php:83
2082
+ msgid "Show line breaks."
2083
+ msgstr "Vis linjeskift."
2084
+
2085
+ #: admin/tabs/readingtab.php:86
2086
+ msgid ""
2087
+ "Show line breaks as the entry authors entered them. (May result in very long "
2088
+ "entries. Is turned off by default.)"
2089
+ msgstr ""
2090
+ "Vis linjeskift som oppføringen forfatterne inn dem. (Kan resultere i veldig "
2091
+ "lang oppføringer. Er deaktivert som standard.)"
2092
+
2093
+ #: admin/tabs/readingtab.php:87
2094
+ msgid ""
2095
+ "This can only be enabled if the Excerpt Length above is set to Unlimited "
2096
+ "Words."
2097
+ msgstr ""
2098
+
2099
+ #: admin/tabs/readingtab.php:93
2100
+ msgid "Smileys"
2101
+ msgstr "Smileys"
2102
+
2103
+ #: admin/tabs/readingtab.php:100
2104
+ msgid "Display smileys as images."
2105
+ msgstr "Vis smilefjes som bilder."
2106
+
2107
+ #: admin/tabs/readingtab.php:102
2108
+ #, php-format
2109
+ msgid ""
2110
+ "Replaces smileys in entries like :) with their image %s. Uses the WP smiley "
2111
+ "replacer, so check on that one if you'd like to add new/more smileys."
2112
+ msgstr ""
2113
+ "Erstatter smileys i oppføringer som :) med deres bilde % s. bruker WP smiley "
2114
+ "replacer, så sjekk på den hvis du ønsker å legge til nye/mer smilefjes."
2115
+
2116
+ #: admin/tabs/readingtab.php:107
2117
+ msgid "Links"
2118
+ msgstr "Lenker"
2119
+
2120
+ #: admin/tabs/readingtab.php:114
2121
+ msgid "Link authors' name to their website."
2122
+ msgstr "Koble forfatternes navn til deres hjemmeside."
2123
+
2124
+ #: admin/tabs/readingtab.php:116
2125
+ msgid ""
2126
+ "The author of an entry can set his/her website. If this setting is checked, "
2127
+ "his/her name will be a link to that website."
2128
+ msgstr ""
2129
+ "Forfatteren av en oppføring kan sette sin nettstad. Hvis denne innstillingen "
2130
+ "er merket, vil sin navnet være en link til dette nettstedet."
2131
+
2132
+ #: admin/tabs/readingtab.php:121
2133
+ msgid "Admin Entry Styling"
2134
+ msgstr "Admin Entry Styling"
2135
+
2136
+ #: admin/tabs/readingtab.php:128
2137
+ msgid "Admin entries get a special CSS styling."
2138
+ msgstr "Admin oppføringer får en spesiell CSS styling."
2139
+
2140
+ #: admin/tabs/readingtab.php:130
2141
+ msgid ""
2142
+ "Admin entries get a special CSS styling. It will get a lightgrey background."
2143
+ msgstr ""
2144
+ "Admin oppføringer får en spesiell CSS styling. Det vil få lightgrey bakgrunn."
2145
+
2146
+ #: admin/tabs/readingtab.php:135
2147
+ msgid "Pagination"
2148
+ msgstr ""
2149
+
2150
+ #: admin/tabs/readingtab.php:142
2151
+ msgid "Show a link to paginate All entries."
2152
+ msgstr ""
2153
+
2154
+ #: admin/tabs/readingtab.php:144
2155
+ msgid ""
2156
+ "Clicking this link will list all the published entries in the guestbook."
2157
+ msgstr ""
2158
+
2159
+ #: admin/tabs/readingtab.php:152
2160
+ msgid "Configure the parts of the entries that are shown to visitors."
2161
+ msgstr "Konfigurere deler av postene som vises for besøkende."
2162
+
2163
+ #: admin/tabs/readingtab.php:157
2164
+ msgid "Avatar"
2165
+ msgstr "Profilbilde"
2166
+
2167
+ #: admin/tabs/readingtab.php:193
2168
+ msgid "Date and Time"
2169
+ msgstr "Dato og klokkeslett:"
2170
+
2171
+ #: admin/tabs/readingtab.php:201
2172
+ msgid "Setting this will show the date and the time of the entry."
2173
+ msgstr "Sette dette viser datoen og tidspunktet for oppføringen."
2174
+
2175
+ #: admin/tabs/readingtab.php:214
2176
+ msgid ""
2177
+ "Setting this will show the date of the entry. If Date and Time above are "
2178
+ "enabled, that setting has preference."
2179
+ msgstr ""
2180
+ "Sette dette, vises datoen for posten. Hvis datoen og klokkeslettet ovenfor "
2181
+ "er aktivert, har denne innstillingen preferanse."
2182
+
2183
+ #: admin/tabs/readingtab.php:219
2184
+ msgid "Content"
2185
+ msgstr "Innhold"
2186
+
2187
+ #: admin/tabs/readingtab.php:231
2188
+ msgid "Edit link"
2189
+ msgstr "Rediger kobling"
2190
+
2191
+ #: admin/tabs/readingtab.php:239
2192
+ msgid ""
2193
+ "A link to the editor will be added to the content. Only visible for "
2194
+ "moderators."
2195
+ msgstr ""
2196
+ "En kobling til redaktøren legges til innholdet. Bare synlig moderatorer."
2197
+
2198
+ #: admin/tabs/uninstalltab.php:34
2199
+ msgid "The entries and settings have been removed."
2200
+ msgstr "Oppføringer og innstillinger er fjernet."
2201
+
2202
+ #: admin/tabs/uninstalltab.php:35
2203
+ msgid "The plugin is deactivated."
2204
+ msgstr "Plugin er deaktivert."
2205
+
2206
+ #: admin/tabs/uninstalltab.php:36
2207
+ msgid "You can now go to your"
2208
+ msgstr "Du kan nå gå til din"
2209
+
2210
+ #: admin/tabs/uninstalltab.php:36
2211
+ msgid "dashboard."
2212
+ msgstr "Kontrollpanel"
2213
+
2214
+ #: admin/tabs/uninstalltab.php:47
2215
+ msgid ""
2216
+ "Uninstalling means that all database entries are removed (settings and "
2217
+ "entries)."
2218
+ msgstr ""
2219
+ "Avinstallere betyr at alle databaseoppføringene er fjernet (innstillinger og "
2220
+ "oppføringer)."
2221
+
2222
+ #: admin/tabs/uninstalltab.php:49
2223
+ msgid "This can <strong>not</strong> be undone."
2224
+ msgstr "Dette kan <strong>ikke</strong> angres."
2225
+
2226
+ #: admin/tabs/uninstalltab.php:55
2227
+ msgid "Confirm"
2228
+ msgstr "Bekreft"
2229
+
2230
+ #: admin/tabs/uninstalltab.php:58
2231
+ msgid "Yes, I'm absolutely sure of this. Proceed!"
2232
+ msgstr "Ja, jeg er helt sikker på dette. Fortsett!"
2233
+
2234
+ #: admin/tabs/uninstalltab.php:65
2235
+ msgid "Uninstall &raquo;"
2236
+ msgstr "Avinstallere»"
2237
+
2238
+ #~ msgid "You haven't chosen a guestbook. Please select one and try again."
2239
+ #~ msgstr "Du har ikke valgt en gjestebok. Vennligst velg ett og prøv på nytt."
2240
+
2241
+ #~ msgid "Learn more about reCAPTCHA..."
2242
+ #~ msgstr "Lær mer om reCAPTCHA..."
2243
+
2244
+ #~ msgid "<strong>Site (Public)</strong> key of your reCAPTCHA account"
2245
+ #~ msgstr "<strong>(Offentlig)</strong> nøkkelen av kontoen reCAPTCHA"
2246
+
2247
+ #~ msgid "<strong>Secret</strong> key of your reCAPTCHA account"
2248
+ #~ msgstr "<strong>Hemmelig</strong> nøkkel av kontoen reCAPTCHA"
2249
+
2250
+ #~ msgid "The keys can be found at your"
2251
+ #~ msgstr "Tastene kan finnes på din"
2252
+
2253
+ #~ msgid "Go to my reCAPTCHA sites..."
2254
+ #~ msgstr "Gå til mine reCAPTCHA nettsteder..."
2255
+
2256
+ #~ msgid "reCAPTCHA sites overview"
2257
+ #~ msgstr "reCAPTCHA nettsteder?"
2258
+
2259
+ #~ msgid ""
2260
+ #~ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library "
2261
+ #~ "in your theme or another plugin. The reCAPTCHA library in Gwolle-GB will "
2262
+ #~ "not be loaded, and the found one will be used instead. This might give "
2263
+ #~ "unexpected results."
2264
+ #~ msgstr ""
2265
+ #~ "<strong>Advarsel:</strong> Tydeligvis bruker du allerede et reCAPTCHA "
2266
+ #~ "bibliotek i ditt tema eller en annen plugin. ReCAPTCHA biblioteket i "
2267
+ #~ "Gwolle GB vil ikke bli lastet inn, og de fant en brukes i stedet. Dette "
2268
+ #~ "kan gi uventede resultater."
2269
+
2270
+ #~ msgid ""
2271
+ #~ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library "
2272
+ #~ "in your theme or another plugin. However, this is an old and incompatible "
2273
+ #~ "version, so reCAPTCHA will not be used for Gwolle-GB."
2274
+ #~ msgstr ""
2275
+ #~ "<strong>Advarsel:</strong> Tydeligvis bruker du allerede et reCAPTCHA "
2276
+ #~ "bibliotek i ditt tema eller en annen plugin. Men er dette en gammel og "
2277
+ #~ "inkompatibel versjon, så reCAPTCHA ikke brukes for Gwolle-GB."
2278
+
2279
+ #~ msgid "Also delete the reCAPTCHA keys"
2280
+ #~ msgstr "Også slette tastene reCAPTCHA"
2281
+
2282
+ #~ msgid "Donate"
2283
+ #~ msgstr "Donera"
lang/gwolle-gb-pt_BR.mo ADDED
Binary file
lang/gwolle-gb-pt_BR.po ADDED
@@ -0,0 +1,2431 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Gwolle Guestbook v1.1.7\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2015-06-13 14:55+0200\n"
6
+ "PO-Revision-Date: 2015-06-13 15:00+0100\n"
7
+ "Last-Translator: Marcel Pol <marcel@timelord.nl>\n"
8
+ "Language-Team: Alexandre Rocha <alexandretchrj@gmail.com>\n"
9
+ "Language: pt_BR\n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
14
+ "X-Generator: Poedit 1.7.7\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
17
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
18
+ "X-Poedit-Basepath: ../\n"
19
+ "X-Textdomain-Support: yes\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+
22
+ # @ GWGB
23
+ #: actions.php:35 actions.php:36 frontend/widget.php:22
24
+ #: frontend/widget.php:188
25
+ msgid "Guestbook"
26
+ msgstr "Gwolle-GB - Livro de Visitas"
27
+
28
+ # @ GWGB
29
+ #: actions.php:46 actions.php:47 admin/tabs/admintab.php:36
30
+ #: admin/tabs/readingtab.php:36
31
+ msgid "Entries"
32
+ msgstr "Mensagens"
33
+
34
+ # @ GWGB
35
+ #. /editor.php
36
+ #: actions.php:54
37
+ msgid "Entry editor"
38
+ msgstr "Editor de Mensagem"
39
+
40
+ # @ GWGB
41
+ #: actions.php:54 admin/page-gwolle-gb.php:85
42
+ msgid "New entry"
43
+ msgstr "Nova mensagem"
44
+
45
+ # @ GWGB
46
+ #. /settings.php
47
+ #: actions.php:57 actions.php:80 admin/page-settings.php:314
48
+ msgid "Settings"
49
+ msgstr "Configurações"
50
+
51
+ # @ GWGB
52
+ #. /import.php
53
+ #: actions.php:60
54
+ msgid "Import"
55
+ msgstr "Importar"
56
+
57
+ # @ GWGB
58
+ #. /export.php
59
+ #: actions.php:63
60
+ msgid "Export"
61
+ msgstr "Exportar"
62
+
63
+ # @ GWGB
64
+ #: actions.php:190 actions.php:194 frontend/rss.php:70 frontend/rss.php:73
65
+ #, fuzzy
66
+ msgid "Guestbook Feed"
67
+ msgstr "Gwolle-GB - Livro de Visitas"
68
+
69
+ # @ GWGB
70
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:696
71
+ #: frontend/read.php:236
72
+ msgid "Edit entry"
73
+ msgstr "Editar Mensagem"
74
+
75
+ # @ GWGB
76
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:696
77
+ #: frontend/read.php:236
78
+ msgid "Edit"
79
+ msgstr "Editar"
80
+
81
+ # @ GWGB
82
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:425
83
+ #: admin/page-entries.php:699
84
+ msgid "Check entry"
85
+ msgstr "Checar mensagem"
86
+
87
+ # @ GWGB
88
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:425
89
+ #: admin/page-entries.php:699
90
+ msgid "Check"
91
+ msgstr "Aprovar"
92
+
93
+ # @ GWGB
94
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:428
95
+ #: admin/page-entries.php:702
96
+ msgid "Uncheck entry"
97
+ msgstr "Desaprovar mensagem"
98
+
99
+ # @ GWGB
100
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:428
101
+ #: admin/page-entries.php:702
102
+ msgid "Uncheck"
103
+ msgstr "Desaprovar"
104
+
105
+ # @ GWGB
106
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:431
107
+ #: admin/page-entries.php:705
108
+ msgid "Mark entry as spam."
109
+ msgstr "Marcar mensagem como spam"
110
+
111
+ # @ GWGB
112
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:374
113
+ #: admin/page-editor.php:431 admin/page-entries.php:437
114
+ #: admin/page-entries.php:705
115
+ msgid "Spam"
116
+ msgstr "Spam"
117
+
118
+ # @ GWGB
119
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:434
120
+ #: admin/page-entries.php:708
121
+ msgid "Mark entry as not-spam."
122
+ msgstr "Marcar mensagem como não sendo spam"
123
+
124
+ # @ GWGB
125
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:434
126
+ #: admin/page-entries.php:708
127
+ msgid "Not spam"
128
+ msgstr "Não é spam"
129
+
130
+ # @ GWGB
131
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:437
132
+ #: admin/page-entries.php:711
133
+ msgid "Move entry to trash."
134
+ msgstr "Mover mensagem para lixeira"
135
+
136
+ # @ GWGB
137
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:384
138
+ #: admin/page-editor.php:437 admin/page-entries.php:441
139
+ #: admin/page-entries.php:711
140
+ msgid "Trash"
141
+ msgstr "Lixo"
142
+
143
+ # @ GWGB
144
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:440
145
+ #: admin/page-entries.php:714
146
+ msgid "Recover entry from trash."
147
+ msgstr "Recuperar mensagem da lixeira"
148
+
149
+ # @ GWGB
150
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:440
151
+ #: admin/page-entries.php:714
152
+ msgid "Untrash"
153
+ msgstr "Remover da lixeira"
154
+
155
+ # @ GWGB
156
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:443
157
+ #: admin/page-entries.php:717
158
+ msgid "Please wait..."
159
+ msgstr "Por favor aguarde..."
160
+
161
+ # @ GWGB
162
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:443
163
+ #: admin/page-entries.php:717
164
+ msgid "Wait..."
165
+ msgstr "Aguarde..."
166
+
167
+ # @ GWGB
168
+ #: admin/dashboard-widget.php:155
169
+ msgid "Refresh"
170
+ msgstr "Atualizar"
171
+
172
+ # @ GWGB
173
+ #: admin/dashboard-widget.php:156
174
+ msgid "View all"
175
+ msgstr "Ver tudo"
176
+
177
+ # @ GWGB
178
+ #: admin/dashboard-widget.php:157
179
+ msgid "View new"
180
+ msgstr "Ver novo"
181
+
182
+ # @ GWGB
183
+ #: admin/dashboard-widget.php:160
184
+ msgid "No new and unchecked guestbook entries."
185
+ msgstr "Não há mensagens novas ou desmarcadas."
186
+
187
+ # @ GWGB
188
+ #: admin/dashboard-widget.php:172
189
+ msgid "Guestbook (new entries)"
190
+ msgstr "Livro de Visitas (novas mensagens)"
191
+
192
+ # @ GWGB
193
+ #: admin/installSplash.php:14
194
+ msgid "Installation"
195
+ msgstr "Instalação"
196
+
197
+ # @ GWGB
198
+ #: admin/installSplash.php:20
199
+ msgid ""
200
+ "Welcome!<br>It seems that either you're using this plugin for the first time "
201
+ "or you've deleted all settings.<br>However, to use this plugin we have to "
202
+ "setup the database tables. Good for you, we've made this as easy as possible."
203
+ "<br>All you've got to do is click on that button below, and that's it."
204
+ msgstr ""
205
+ "Bem-vindo!<br>Aparentemente ou você está usando esse plugin pela primeira "
206
+ "vez ou você deletou todas as configurações.<br> Entretanto, para usar esse "
207
+ "plugin nós temos que configurar as tabelas da base de dados. O bom para você "
208
+ "é que nós fizemos isso da maneira mais fácil possível. <br> Tudo que você "
209
+ "tem que fazer é clicar no botão abaixo e só isso."
210
+
211
+ # @ GWGB
212
+ #: admin/installSplash.php:26
213
+ msgid "Sure, let's do this!"
214
+ msgstr "Claro, vamos fazer isso!"
215
+
216
+ # @ GWGB
217
+ #: admin/installSplash.php:33
218
+ #, php-format
219
+ msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
220
+ msgstr ""
221
+ "Muito bom, terminamos. <a href=\"%s\">Clique aqui para continuar...</a>"
222
+
223
+ # @ GWGB
224
+ #: admin/installSplash.php:35
225
+ #, php-format
226
+ msgid ""
227
+ "It looks like there has been an error. <a href=\"%s\">Click here to "
228
+ "continue...</a>"
229
+ msgstr ""
230
+ "Parece que ocorreu um erro. <a href=\"%s\">Clique aqui para continuar...</a>"
231
+
232
+ # @ GWGB
233
+ #: admin/page-editor.php:15 admin/page-entries.php:16 admin/page-export.php:17
234
+ #: admin/page-gwolle-gb.php:278 admin/page-import.php:26
235
+ #: admin/page-settings.php:15 admin/tabs/admintab.php:15
236
+ #: admin/tabs/antispamtab.php:15 admin/tabs/emailtab.php:15
237
+ #: admin/tabs/formtab.php:15 admin/tabs/readingtab.php:15
238
+ #: admin/tabs/uninstalltab.php:18
239
+ msgid "Cheatin&#8217; uh?"
240
+ msgstr "Trapaceando uh?"
241
+
242
+ # @ GWGB
243
+ #: admin/page-editor.php:32
244
+ msgid "Edit guestbook entry"
245
+ msgstr "Editar Mensagem"
246
+
247
+ # @ GWGB
248
+ #: admin/page-editor.php:45
249
+ msgid "Entry could not be found."
250
+ msgstr "Mensagem não encontrada."
251
+
252
+ # @ GWGB
253
+ #: admin/page-editor.php:47
254
+ msgid "Guestbook entry (error)"
255
+ msgstr "Mensagem (erro)"
256
+
257
+ # @ GWGB
258
+ #: admin/page-editor.php:50
259
+ msgid "New guestbook entry"
260
+ msgstr "Nova mensagem"
261
+
262
+ # @ GWGB
263
+ #: admin/page-editor.php:60
264
+ msgid "Something strange happened."
265
+ msgstr "Algo estranho aconteceu."
266
+
267
+ # @ GWGB
268
+ #: admin/page-editor.php:88
269
+ msgid "Submitted as Spam to the Akismet service."
270
+ msgstr "Enviada como Spam para o serviço Akismet."
271
+
272
+ # @ GWGB
273
+ #: admin/page-editor.php:97
274
+ msgid "Submitted as Ham to the Akismet service."
275
+ msgstr "Enviada como Ham para o serviço Akismet."
276
+
277
+ # @ GWGB
278
+ #: admin/page-editor.php:148 admin/page-gwolle-gb.php:355
279
+ #: admin/page-settings.php:320
280
+ msgid "Changes saved."
281
+ msgstr "Mudanças salvas."
282
+
283
+ # @ GWGB
284
+ #: admin/page-editor.php:150 admin/page-editor.php:245
285
+ msgid "Error happened during saving."
286
+ msgstr "Um erro ocorreu ao salvar."
287
+
288
+ # @ GWGB
289
+ #: admin/page-editor.php:154
290
+ msgid "Entry was not changed."
291
+ msgstr "A mensagem não foi alterada."
292
+
293
+ # @ GWGB
294
+ #: admin/page-editor.php:165
295
+ msgid "Entry removed."
296
+ msgstr "Mensagem removida."
297
+
298
+ # @ GWGB
299
+ #: admin/page-editor.php:210
300
+ msgid "Entry has no content, even though that is mandatory."
301
+ msgstr "Mensagem não possui conteúdo, mesmo como obrigatória."
302
+
303
+ # @ GWGB
304
+ #: admin/page-editor.php:243
305
+ msgid "Entry saved."
306
+ msgstr "Mensagem salva."
307
+
308
+ # @ GWGB
309
+ #: admin/page-editor.php:249
310
+ msgid "Entry was not saved."
311
+ msgstr "Mensagem não foi salva."
312
+
313
+ # @ GWGB
314
+ #: admin/page-editor.php:322 admin/page-editor.php:415
315
+ #: admin/page-editor.php:459 admin/page-editor.php:514
316
+ #: admin/page-editor.php:549 admin/page-editor.php:566
317
+ #: admin/page-editor.php:574 admin/page-export.php:40
318
+ #: admin/page-import.php:338 admin/page-import.php:405
319
+ #: admin/page-import.php:526
320
+ msgid "Click to open or close"
321
+ msgstr "Clique para abrir ou fechar."
322
+
323
+ # @ GWGB
324
+ #: admin/page-editor.php:322
325
+ msgid "Options"
326
+ msgstr "Opções"
327
+
328
+ # @ GWGB
329
+ #: admin/page-editor.php:343
330
+ msgid "This entry is not yet visible."
331
+ msgstr "Essa mensagem não está visível ainda."
332
+
333
+ # @ GWGB
334
+ #: admin/page-editor.php:347 admin/page-editor.php:352
335
+ msgid "This entry is Visible."
336
+ msgstr "Essa mensagem está visível."
337
+
338
+ # @ GWGB
339
+ #: admin/page-editor.php:348 admin/page-editor.php:353
340
+ msgid "This entry is Not Visible."
341
+ msgstr "Essa mensagem não está visível."
342
+
343
+ # @ GWGB
344
+ #: admin/page-editor.php:364
345
+ msgid "Checked"
346
+ msgstr "Marcado"
347
+
348
+ # @ GWGB
349
+ #: admin/page-editor.php:392
350
+ msgid "Remove this entry Permanently."
351
+ msgstr "Remover mensagem permanentemente."
352
+
353
+ # @ GWGB
354
+ #: admin/page-editor.php:403
355
+ msgid "Save"
356
+ msgstr "Salvar"
357
+
358
+ # @ GWGB
359
+ #: admin/page-editor.php:415
360
+ msgid "Actions"
361
+ msgstr "Ações"
362
+
363
+ # @ GWGB
364
+ #: admin/page-editor.php:459
365
+ msgid "Details"
366
+ msgstr "Detalhes"
367
+
368
+ # @ GWGB
369
+ #: admin/page-editor.php:463 admin/page-entries.php:567
370
+ #: admin/page-entries.php:583
371
+ msgid "Author"
372
+ msgstr "Autor"
373
+
374
+ # @ GWGB
375
+ #: admin/page-editor.php:467 admin/page-editor.php:475
376
+ #: admin/page-editor.php:496 admin/page-editor.php:504
377
+ #: functions/function.log.php:164
378
+ msgid "Unknown"
379
+ msgstr "Desconhecido"
380
+
381
+ # @ GWGB
382
+ #: admin/page-editor.php:471
383
+ msgid "E-Mail"
384
+ msgstr "E-mail"
385
+
386
+ # @ GWGB
387
+ #: admin/page-editor.php:480 admin/page-editor.php:524
388
+ msgid "Written"
389
+ msgstr "Escrito"
390
+
391
+ # @ GWGB
392
+ #: admin/page-editor.php:485
393
+ msgid "Not yet"
394
+ msgstr "Ainda não"
395
+
396
+ # @ GWGB
397
+ #: admin/page-editor.php:489
398
+ msgid "Author's IP-address"
399
+ msgstr "Endereço de IP do autor"
400
+
401
+ # @ GWGB
402
+ #: admin/page-editor.php:492
403
+ msgid "Whois search for this IP"
404
+ msgstr "Pesquisar quem é esse IP"
405
+
406
+ # @ GWGB
407
+ #: admin/page-editor.php:500
408
+ msgid "Host"
409
+ msgstr "Servidor"
410
+
411
+ # @ GWGB
412
+ #: admin/page-editor.php:514
413
+ msgid "Entry log"
414
+ msgstr "Registro de mensagem"
415
+
416
+ # @ GWGB
417
+ #: admin/page-editor.php:533
418
+ msgid "No log yet."
419
+ msgstr "Sem registro ainda."
420
+
421
+ # @ GWGB
422
+ #: admin/page-editor.php:549 frontend/write.php:215
423
+ msgid "Guestbook entry"
424
+ msgstr "Mensagem"
425
+
426
+ # @ GWGB
427
+ #: admin/page-editor.php:554
428
+ #, php-format
429
+ msgid ""
430
+ "Line breaks will not be visible to the visitors due to your <a href=\"%s"
431
+ "\">settings</a>."
432
+ msgstr ""
433
+ "Quebras de linha não serão visíveis aos visitantes devido as suas <a href="
434
+ "\"%s\">configurações</a>."
435
+
436
+ # @ GWGB
437
+ #: admin/page-editor.php:566 frontend/write.php:196 frontend/write.php:203
438
+ #: admin/tabs/formtab.php:165
439
+ msgid "Website"
440
+ msgstr "Site"
441
+
442
+ # @ GWGB
443
+ #: admin/page-editor.php:569
444
+ msgid "Example: <code>http://www.example.com/</code>"
445
+ msgstr "Exemplo: <code>http://www.exemplo.com.br/</code>"
446
+
447
+ # @ GWGB
448
+ #: admin/page-editor.php:574 admin/page-export.php:61
449
+ msgid "Origin"
450
+ msgstr "Origem"
451
+
452
+ # @ GWGB
453
+ #: admin/page-entries.php:209
454
+ msgid "entry checked."
455
+ msgstr "Mensagem verificada."
456
+
457
+ # @ GWGB
458
+ #: admin/page-entries.php:211
459
+ msgid "entries checked."
460
+ msgstr "Mensagens verificadas."
461
+
462
+ # @ GWGB
463
+ #: admin/page-entries.php:213
464
+ msgid "No entries checked."
465
+ msgstr "Nenhuma mensagem verificada."
466
+
467
+ # @ GWGB
468
+ #: admin/page-entries.php:217
469
+ msgid "entry unchecked."
470
+ msgstr "Mensagem não verificada."
471
+
472
+ # @ GWGB
473
+ #: admin/page-entries.php:219
474
+ msgid "entries unchecked."
475
+ msgstr "Mensagens não verificadas."
476
+
477
+ # @ GWGB
478
+ #: admin/page-entries.php:221
479
+ msgid "No entries unchecked."
480
+ msgstr "Não há mensagens verificadas."
481
+
482
+ # @ GWGB
483
+ #: admin/page-entries.php:225
484
+ msgid ""
485
+ "entry marked as spam and submitted to Akismet as spam (if Akismet was "
486
+ "enabled)."
487
+ msgstr ""
488
+ "mensagem marcada como spam e enviada para o Akismet como spam (se o Akismet "
489
+ "estiver habilitado)."
490
+
491
+ # @ GWGB
492
+ #: admin/page-entries.php:227
493
+ msgid ""
494
+ "entries marked as spam and submitted to Akismet as spam (if Akismet was "
495
+ "enabled)."
496
+ msgstr ""
497
+ "mensagens marcadas como spam e enviadas para Akismet como spam (se Akismet "
498
+ "estiver habilitado)."
499
+
500
+ # @ GWGB
501
+ #: admin/page-entries.php:229
502
+ msgid "No entries marked as spam."
503
+ msgstr "Não há mensagens marcadas como spam."
504
+
505
+ # @ GWGB
506
+ #: admin/page-entries.php:233
507
+ msgid ""
508
+ "entry marked as not spam and submitted to Akismet as ham (if Akismet was "
509
+ "enabled)."
510
+ msgstr ""
511
+ "mensagem marcada como não sendo spam e enviada para Akismet como morto (if "
512
+ "Akismet estiver habilitado)."
513
+
514
+ # @ GWGB
515
+ #: admin/page-entries.php:235
516
+ msgid ""
517
+ "entries marked as not spam and submitted to Akismet as ham (if Akismet was "
518
+ "enabled)."
519
+ msgstr ""
520
+ "mensagens marcadas como não sendo spam e enviadas para Akismet como morto "
521
+ "(if Akismet estiver habilitado)."
522
+
523
+ # @ GWGB
524
+ #: admin/page-entries.php:237
525
+ msgid "No entries marked as not spam."
526
+ msgstr "Não há mensagens marcadas como spam."
527
+
528
+ # @ GWGB
529
+ #: admin/page-entries.php:241
530
+ msgid "entry considered spam and marked as such."
531
+ msgstr "mensagem considerada spam e marcada como spam."
532
+
533
+ # @ GWGB
534
+ #: admin/page-entries.php:243
535
+ msgid "entries considered spam and marked as such."
536
+ msgstr "mensagens consideradas spam e marcadas como spam."
537
+
538
+ # @ GWGB
539
+ #: admin/page-entries.php:246
540
+ msgid "entry not considered spam and marked as such."
541
+ msgstr "mensagem não foi considerada spam e foi marcada como não spam."
542
+
543
+ # @ GWGB
544
+ #: admin/page-entries.php:248
545
+ msgid "entries not considered spam and marked as such."
546
+ msgstr "mensagens não foram consideradas spam e marcadas como não spam."
547
+
548
+ # @ GWGB
549
+ #: admin/page-entries.php:251
550
+ msgid "entry already considered spam and not changed."
551
+ msgstr "mensagem já foi considerada como spam e não mudou."
552
+
553
+ # @ GWGB
554
+ #: admin/page-entries.php:253
555
+ msgid "entries already considered spam and not changed."
556
+ msgstr "mensagens já foram consideradas como spam e não mudara,."
557
+
558
+ # @ GWGB
559
+ #: admin/page-entries.php:256
560
+ msgid "entry already considered not spam and not changed."
561
+ msgstr "mensagem já foi considerada com não sendo spam e não mudou."
562
+
563
+ # @ GWGB
564
+ #: admin/page-entries.php:258
565
+ msgid "entries already considered not spam and not changed."
566
+ msgstr "mensagens já foi consideradas com não sendo spam e não mudaram."
567
+
568
+ # @ GWGB
569
+ #: admin/page-entries.php:262
570
+ msgid "entry moved to trash."
571
+ msgstr "mensagem movida para lixeira."
572
+
573
+ # @ GWGB
574
+ #: admin/page-entries.php:264
575
+ msgid "entries moved to trash."
576
+ msgstr "mensagens movidas para lixeira."
577
+
578
+ # @ GWGB
579
+ #: admin/page-entries.php:266
580
+ msgid "No entries moved to trash."
581
+ msgstr "Sem mensagens movidas para a lixeira."
582
+
583
+ # @ GWGB
584
+ #: admin/page-entries.php:270
585
+ msgid "entry recovered from trash."
586
+ msgstr "mensagem recuperada da lixeira."
587
+
588
+ # @ GWGB
589
+ #: admin/page-entries.php:272
590
+ msgid "entries recovered from trash."
591
+ msgstr "mensagens recuperadas da lixeira."
592
+
593
+ # @ GWGB
594
+ #: admin/page-entries.php:274
595
+ msgid "No entries recovered from trash."
596
+ msgstr "Não há mensagens recuperadas da lixeira."
597
+
598
+ # @ GWGB
599
+ #: admin/page-entries.php:278 admin/page-entries.php:293
600
+ msgid "entry removed permanently."
601
+ msgstr "mensagem removida permanentemente."
602
+
603
+ # @ GWGB
604
+ #: admin/page-entries.php:280 admin/page-entries.php:295
605
+ msgid "entries removed permanently."
606
+ msgstr "mensagens removidas permanentemente."
607
+
608
+ # @ GWGB
609
+ #: admin/page-entries.php:282 admin/page-entries.php:297
610
+ msgid "No entries permanently removed."
611
+ msgstr "Não há mensagens permanentemente removidas."
612
+
613
+ # @ GWGB
614
+ #: admin/page-entries.php:329
615
+ msgid "Please activate Akismet if you want to battle spam."
616
+ msgstr "Por favor ative o Akismet se você quiser combater o spam."
617
+
618
+ # @ GWGB
619
+ #: admin/page-entries.php:402
620
+ msgid "Guestbook entries"
621
+ msgstr "Entradas do livro de visitas"
622
+
623
+ # @ GWGB
624
+ #: admin/page-entries.php:424
625
+ msgid "All"
626
+ msgstr "Tudo"
627
+
628
+ # @ GWGB
629
+ #: admin/page-entries.php:429
630
+ msgid "Unlocked"
631
+ msgstr "Aprovado"
632
+
633
+ # @ GWGB
634
+ #: admin/page-entries.php:433
635
+ msgid "New"
636
+ msgstr "Novo"
637
+
638
+ # @ GWGB
639
+ #: admin/page-entries.php:448
640
+ msgid "Mass edit actions"
641
+ msgstr "Edição em massa"
642
+
643
+ # @ GWGB
644
+ #: admin/page-entries.php:451
645
+ msgid "Recover from trash"
646
+ msgstr "Recuperar da lixeira"
647
+
648
+ # @ GWGB
649
+ #: admin/page-entries.php:452 admin/page-entries.php:469
650
+ msgid "Remove permanently"
651
+ msgstr "Remover permanentemente "
652
+
653
+ # @ GWGB
654
+ #: admin/page-entries.php:455
655
+ msgid "Mark as checked"
656
+ msgstr "Marcar como verificado"
657
+
658
+ # @ GWGB
659
+ #: admin/page-entries.php:458
660
+ msgid "Mark as not checked"
661
+ msgstr "Marcar como não verificado"
662
+
663
+ # @ GWGB
664
+ #: admin/page-entries.php:461
665
+ msgid "Mark as spam"
666
+ msgstr "Marcar como spam"
667
+
668
+ # @ GWGB
669
+ #: admin/page-entries.php:463
670
+ msgid "Mark as not spam"
671
+ msgstr "Marcar como não spam"
672
+
673
+ # @ GWGB
674
+ #: admin/page-entries.php:465
675
+ msgid "Check with Akismet"
676
+ msgstr "Verificar com Akismet"
677
+
678
+ # @ GWGB
679
+ #: admin/page-entries.php:467
680
+ msgid "Move to trash"
681
+ msgstr "Mover para lixeira"
682
+
683
+ # @ GWGB
684
+ #: admin/page-entries.php:474
685
+ msgid "Apply"
686
+ msgstr "Aplicar"
687
+
688
+ #: admin/page-entries.php:477 admin/page-entries.php:735
689
+ msgid "Empty Spam"
690
+ msgstr "Esvaziar Spam"
691
+
692
+ # @ GWGB
693
+ #: admin/page-entries.php:479 admin/page-entries.php:737
694
+ msgid "Empty Trash"
695
+ msgstr "Esvaziar Lixeira"
696
+
697
+ # @ GWGB
698
+ #: admin/page-entries.php:492
699
+ msgid "Showing:"
700
+ msgstr "Exibindo:"
701
+
702
+ # @ GWGB
703
+ #: admin/page-entries.php:493
704
+ msgid "of"
705
+ msgstr "de"
706
+
707
+ # @ GWGB
708
+ #: admin/page-entries.php:560 admin/page-entries.php:576
709
+ msgid "ID"
710
+ msgstr "ID"
711
+
712
+ # @ GWGB
713
+ #: admin/page-entries.php:566 admin/page-entries.php:582
714
+ #: admin/tabs/readingtab.php:189
715
+ msgid "Date"
716
+ msgstr "Data"
717
+
718
+ # @ GWGB
719
+ #: admin/page-entries.php:568 admin/page-entries.php:584
720
+ msgid "Entry (excerpt)"
721
+ msgstr "Entrada (excerpt)"
722
+
723
+ # @ GWGB
724
+ #: admin/page-entries.php:569 admin/page-entries.php:585
725
+ msgid "Action"
726
+ msgstr "Ação"
727
+
728
+ # @ GWGB
729
+ #: admin/page-entries.php:598
730
+ msgid "No entries found."
731
+ msgstr "Entradas não encontradas."
732
+
733
+ # @ GWGB
734
+ #: admin/page-export.php:27
735
+ msgid "Export guestbook entries."
736
+ msgstr "Exportar entradas do livro de visitas."
737
+
738
+ # @ GWGB
739
+ #: admin/page-export.php:40
740
+ msgid "Export guestbook entries from Gwolle-GB"
741
+ msgstr "Exportar entradas do livro de visitas de Gwolle-GB."
742
+
743
+ # @ GWGB
744
+ #: admin/page-export.php:47
745
+ msgid "No entries were found."
746
+ msgstr "Entradas não encontradas."
747
+
748
+ # @ GWGB
749
+ #: admin/page-export.php:52
750
+ #, php-format
751
+ msgid "%d entries were found and will be exported."
752
+ msgstr "%d entradas foram encontradas e serão exportadas."
753
+
754
+ # @ GWGB
755
+ #: admin/page-export.php:55
756
+ msgid "The exporter will preserve the following data per entry:"
757
+ msgstr ""
758
+ "As seguintes informações das entradas serão preservadas ao serem exportadas:"
759
+
760
+ # @ GWGB
761
+ #: admin/page-export.php:58 admin/page-import.php:372
762
+ #: admin/page-import.php:413 frontend/write.php:139 frontend/write.php:146
763
+ #: admin/tabs/formtab.php:105 admin/tabs/readingtab.php:152
764
+ msgid "Name"
765
+ msgstr "Nome"
766
+
767
+ # @ GWGB
768
+ #: admin/page-export.php:59 admin/page-import.php:373
769
+ #: admin/page-import.php:415
770
+ msgid "E-Mail address"
771
+ msgstr "Endereço de e-mail"
772
+
773
+ # @ GWGB
774
+ #: admin/page-export.php:60 admin/page-import.php:374
775
+ #: admin/page-import.php:416
776
+ msgid "URL/Website"
777
+ msgstr "URL/Site"
778
+
779
+ # @ GWGB
780
+ #: admin/page-export.php:62 admin/page-import.php:375
781
+ #: admin/page-import.php:417
782
+ msgid "Date of the entry"
783
+ msgstr "Data da entrada"
784
+
785
+ # @ GWGB
786
+ #: admin/page-export.php:63 admin/page-import.php:376
787
+ #: admin/page-import.php:418
788
+ msgid "IP address"
789
+ msgstr "Endereço de IP"
790
+
791
+ # @ GWGB
792
+ #: admin/page-export.php:64
793
+ msgid "Host address"
794
+ msgstr "Endereço do servidor"
795
+
796
+ # @ GWGB
797
+ #: admin/page-export.php:65 admin/page-import.php:377
798
+ #: admin/page-import.php:419 admin/tabs/formtab.php:185
799
+ #: admin/tabs/uninstalltab.php:31
800
+ msgid "Message"
801
+ msgstr "Mensagem"
802
+
803
+ # @ GWGB
804
+ #: admin/page-export.php:66 admin/page-import.php:379
805
+ msgid "\"is checked\" flag"
806
+ msgstr "Marcação \"foi verificado\""
807
+
808
+ # @ GWGB
809
+ #: admin/page-export.php:67 admin/page-import.php:378
810
+ msgid "\"is spam\" flag"
811
+ msgstr "Marcação \"é spam\""
812
+
813
+ # @ GWGB
814
+ #: admin/page-export.php:68
815
+ msgid "\"is trash\" flag"
816
+ msgstr "Marcação \"é lixo\""
817
+
818
+ # @ GWGB
819
+ #: admin/page-export.php:70
820
+ msgid "The exporter does not delete any data, so your data will still be here."
821
+ msgstr ""
822
+ "Ao exportar os dados não são deletados, assim seus dados continuarão aqui."
823
+
824
+ # @ GWGB
825
+ #: admin/page-export.php:75
826
+ msgid "Export all entries from this website."
827
+ msgstr "Exportar todos os dados desse site."
828
+
829
+ # @ GWGB
830
+ #: admin/page-export.php:79
831
+ msgid "Start export"
832
+ msgstr "Iniciar exportação"
833
+
834
+ # @ GWGB
835
+ #: admin/page-gwolle-gb.php:34
836
+ msgid "Overview"
837
+ msgstr "Visão geral"
838
+
839
+ # @ GWGB
840
+ #: admin/page-gwolle-gb.php:48
841
+ msgid "Entry total"
842
+ msgstr "Mensagem Total"
843
+
844
+ # @ GWGB
845
+ #: admin/page-gwolle-gb.php:51
846
+ msgid "Entries total"
847
+ msgstr "Total de mensagens"
848
+
849
+ # @ GWGB
850
+ #: admin/page-gwolle-gb.php:67
851
+ msgid "Unlocked entry"
852
+ msgstr "Desbloquear mensagem"
853
+
854
+ # @ GWGB
855
+ #: admin/page-gwolle-gb.php:69
856
+ msgid "Unlocked entries"
857
+ msgstr "Desbloquear mensagens"
858
+
859
+ # @ GWGB
860
+ #: admin/page-gwolle-gb.php:87
861
+ msgid "New entries"
862
+ msgstr "Novas mensagens"
863
+
864
+ # @ GWGB
865
+ #: admin/page-gwolle-gb.php:103
866
+ msgid "Spam entry"
867
+ msgstr "Mensagem no SPAM"
868
+
869
+ # @ GWGB
870
+ #: admin/page-gwolle-gb.php:105
871
+ msgid "Spam entries"
872
+ msgstr "Mensagens no SPAM"
873
+
874
+ # @ GWGB
875
+ #: admin/page-gwolle-gb.php:121
876
+ msgid "Trashed entry"
877
+ msgstr "Mensagem no Lixo"
878
+
879
+ # @ GWGB
880
+ #: admin/page-gwolle-gb.php:123
881
+ msgid "Trashed entries"
882
+ msgstr "Mensagens no Lixo"
883
+
884
+ # @ GWGB
885
+ #: admin/page-gwolle-gb.php:136
886
+ msgid "Write admin entry"
887
+ msgstr "Escrever mensagem do administrador"
888
+
889
+ # @ GWGB
890
+ #: admin/page-gwolle-gb.php:147 admin/tabs/emailtab.php:47
891
+ msgid ""
892
+ "Sorry, but the function <code>mail()</code> required to notify you by mail "
893
+ "is not enabled in your PHP configuration. You might want to install a "
894
+ "WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can "
895
+ "contact your hosting provider to change this."
896
+ msgstr ""
897
+ "Desculpe mas a função <code>mail()</code> requisitada de notificar a você "
898
+ "por e-mail não está habilitada na sua configuração PHP. Você talvez queira "
899
+ "instalar um plugin do Wordpress que use SMTP em vez de <code>mail()</code>. "
900
+ "Ou você pode contatar seu provedor de hospedagem para mudar isso."
901
+
902
+ # @ GWGB
903
+ #: admin/page-gwolle-gb.php:173
904
+ msgid "Send me an e-mail when a new entry has been posted."
905
+ msgstr "Me enviar um e-mail quando uma nova mensagem for postada."
906
+
907
+ # @ GWGB
908
+ #: admin/page-gwolle-gb.php:175
909
+ msgid "Save setting"
910
+ msgstr "Salvar configurações"
911
+
912
+ # @ GWGB
913
+ #: admin/page-gwolle-gb.php:180
914
+ msgid "The following users have subscribed to this service:"
915
+ msgstr "Os seguintes usuários se inscreveram nesse serviço:"
916
+
917
+ # @ GWGB
918
+ #: admin/page-gwolle-gb.php:192 functions/function.log.php:173
919
+ #: admin/tabs/emailtab.php:66 admin/tabs/emailtab.php:119
920
+ msgid "You"
921
+ msgstr "Você"
922
+
923
+ # @ GWGB
924
+ #: admin/page-gwolle-gb.php:201
925
+ msgid "No subscriber yet"
926
+ msgstr "Nenhum inscrito até o momento"
927
+
928
+ # @ GWGB
929
+ #: admin/page-gwolle-gb.php:221
930
+ msgid "This is how you can get your guestbook displayed on your website:"
931
+ msgstr "É assim que você pode ter o livro de visitas visível no seu site:"
932
+
933
+ # @ GWGB
934
+ #: admin/page-gwolle-gb.php:223
935
+ msgid "Create a new page."
936
+ msgstr "Criar uma nova página."
937
+
938
+ # @ GWGB
939
+ #: admin/page-gwolle-gb.php:224
940
+ msgid ""
941
+ "Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the "
942
+ "content."
943
+ msgstr ""
944
+ "Escolher um título e definir &quot;[gwolle_gb]&quot; (sem as aspas) como "
945
+ "conteúdo."
946
+
947
+ # @ GWGB
948
+ #: admin/page-gwolle-gb.php:225
949
+ msgid ""
950
+ "It is probably a good idea to disable comments on that page; otherwise, your "
951
+ "visitors might get a little confused."
952
+ msgstr ""
953
+ "É provavelmente uma boa ideia desabilitar comentários nessa página, senão os "
954
+ "visitantes poderão ficar um pouco confusos."
955
+
956
+ # @ GWGB
957
+ #: admin/page-gwolle-gb.php:232
958
+ msgid "These entries will be visible for your visitors:"
959
+ msgstr "Essas mensagens estranho visiveís para seus visitantes:"
960
+
961
+ # @ GWGB
962
+ #: admin/page-gwolle-gb.php:234
963
+ msgid "Marked as Checked."
964
+ msgstr "Marcado como Aprovado."
965
+
966
+ # @ GWGB
967
+ #: admin/page-gwolle-gb.php:235
968
+ msgid "Not marked as Spam."
969
+ msgstr "Não marcado como Spam."
970
+
971
+ # @ GWGB
972
+ #: admin/page-gwolle-gb.php:236
973
+ msgid "Not marked as Trash."
974
+ msgstr "Não marcado como Lixo."
975
+
976
+ # @ GWGB
977
+ #: admin/page-gwolle-gb.php:240
978
+ msgid "The Main Menu counter counts the following entries:"
979
+ msgstr "O contador do menu principal conta as seguintes mensagens:"
980
+
981
+ # @ GWGB
982
+ #: admin/page-gwolle-gb.php:242
983
+ msgid "Marked as Unchecked (You might want to moderate them)."
984
+ msgstr "Marcar como Desmarcado (você pode querer moderar)."
985
+
986
+ # @ GWGB
987
+ #: admin/page-gwolle-gb.php:243
988
+ msgid "Not marked as Spam (You might want to check them)."
989
+ msgstr "Não marcado como Spam (você talvez queria assinalar ele(s))."
990
+
991
+ # @ GWGB
992
+ #: admin/page-gwolle-gb.php:244
993
+ msgid "Not marked as Trash (You decide what goes to the trash)."
994
+ msgstr "Não marcado como Lixo (você decide o que vai para a lixeira)."
995
+
996
+ #: admin/page-gwolle-gb.php:251
997
+ msgid "This plugin is being maintained by Marcel Pol from"
998
+ msgstr ""
999
+
1000
+ #: admin/page-gwolle-gb.php:255
1001
+ #, fuzzy
1002
+ msgid "Review this plugin."
1003
+ msgstr "O plugin está desativado."
1004
+
1005
+ #: admin/page-gwolle-gb.php:256
1006
+ msgid "If this plugin has any value to you, then please leave a review at"
1007
+ msgstr ""
1008
+
1009
+ #: admin/page-gwolle-gb.php:257
1010
+ msgid "The plugin page at wordpress.org."
1011
+ msgstr ""
1012
+
1013
+ #: admin/page-gwolle-gb.php:258
1014
+ msgid "the plugin page at wordpress.org"
1015
+ msgstr ""
1016
+
1017
+ # @ GWGB
1018
+ #: admin/page-gwolle-gb.php:261
1019
+ msgid "Donate to the EFF."
1020
+ msgstr "Doar para EFF."
1021
+
1022
+ # @ GWGB
1023
+ #: admin/page-gwolle-gb.php:262
1024
+ msgid ""
1025
+ "The Electronic Frontier Foundation is one of the few organisations that "
1026
+ "wants to keep the internet a free place."
1027
+ msgstr ""
1028
+ "A \"Electronic Frontier Foundation\" é uma das poucas organizações que "
1029
+ "querem manter a internet um ambiente livre."
1030
+
1031
+ # @ GWGB
1032
+ #: admin/page-gwolle-gb.php:263
1033
+ msgid "Please donate to the EFF."
1034
+ msgstr "Por favor doe para o EFF."
1035
+
1036
+ # @ GWGB
1037
+ #: admin/page-gwolle-gb.php:265 admin/page-gwolle-gb.php:267
1038
+ msgid "Donate to the maintainer."
1039
+ msgstr "Doe para o mantenedor."
1040
+
1041
+ # @ GWGB
1042
+ #: admin/page-gwolle-gb.php:266
1043
+ msgid ""
1044
+ "If you rather want to donate to the maintainer of the plugin, you can donate "
1045
+ "through PayPal."
1046
+ msgstr ""
1047
+ "Se você preferir doar para o mantenedor do plugin, você pode doar através do "
1048
+ "PayPal."
1049
+
1050
+ # @ GWGB
1051
+ #: admin/page-gwolle-gb.php:267
1052
+ #, fuzzy
1053
+ msgid "Donate through"
1054
+ msgstr "Doe através do PayPal por"
1055
+
1056
+ #: admin/page-gwolle-gb.php:267
1057
+ msgid "PayPal"
1058
+ msgstr ""
1059
+
1060
+ #: admin/page-gwolle-gb.php:268
1061
+ msgid "to"
1062
+ msgstr ""
1063
+
1064
+ # @ GWGB
1065
+ #: admin/page-gwolle-gb.php:338
1066
+ msgid "Welcome to the Guestbook!"
1067
+ msgstr "Bem-vindo ao Livro de Visitas!"
1068
+
1069
+ # @ GWGB
1070
+ #: admin/page-gwolle-gb.php:339
1071
+ msgid "E-mail Notifications"
1072
+ msgstr "Notificações por e-mail"
1073
+
1074
+ #: admin/page-gwolle-gb.php:340
1075
+ msgid "Review and Donate"
1076
+ msgstr ""
1077
+
1078
+ # @ GWGB
1079
+ #: admin/page-gwolle-gb.php:342 admin/page-gwolle-gb.php:343
1080
+ msgid "Help"
1081
+ msgstr "Ajuda"
1082
+
1083
+ # @ GWGB
1084
+ #: admin/page-gwolle-gb.php:344
1085
+ msgid "This plugin uses the following scripts/programs/images:"
1086
+ msgstr "Este plugin usa os seguintes scripts/programas/imagens:"
1087
+
1088
+ # @ GWGB
1089
+ #: admin/page-gwolle-gb.php:349
1090
+ msgid "Gwolle Guestbook"
1091
+ msgstr "Livro de Visita Gwolle"
1092
+
1093
+ # @ GWGB
1094
+ #: admin/page-import.php:90
1095
+ msgid ""
1096
+ "I'm sorry, but I wasn't able to import entries from DMSGuestbook "
1097
+ "successfully."
1098
+ msgstr ""
1099
+ "Desculpe, não foi possível importar as mensagens de DMSGuestook com sucesso."
1100
+
1101
+ # @ GWGB
1102
+ #: admin/page-import.php:92
1103
+ msgid "1 entry imported successfully from DMSGuestbook."
1104
+ msgstr "1 mensagem importada com sucesso de DMSGuestbook."
1105
+
1106
+ # @ GWGB
1107
+ #: admin/page-import.php:94
1108
+ #, php-format
1109
+ msgid "%d entries imported successfully from DMSGuestbook."
1110
+ msgstr "%d mensagens importadas com sucesso de DMSGuestbook."
1111
+
1112
+ # @ GWGB
1113
+ #: admin/page-import.php:98
1114
+ msgid ""
1115
+ "<strong>Nothing to import.</strong> The guestbook you've chosen does not "
1116
+ "contain any entries."
1117
+ msgstr ""
1118
+ "<strong>Nada para importar.</strong> O livro de visitas que você escolheu "
1119
+ "não possui mensagens."
1120
+
1121
+ # @ GWGB
1122
+ #: admin/page-import.php:103
1123
+ msgid "I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook."
1124
+ msgstr "Desculpe, não foi possível encontrar a tabela MySQL de DMSGuestbook."
1125
+
1126
+ # @ GWGB
1127
+ #: admin/page-import.php:108
1128
+ msgid "You haven't chosen a guestbook. Please select one and try again."
1129
+ msgstr ""
1130
+ "Vocês não escolheu um livro de visitas. Por favor selecione um e tente "
1131
+ "novamente."
1132
+
1133
+ # @ GWGB
1134
+ #: admin/page-import.php:133 admin/page-import.php:181
1135
+ msgid ""
1136
+ "You haven't chosen how to import from WordPress comments. Please choose and "
1137
+ "try again."
1138
+ msgstr ""
1139
+ "Você não escolheu como importar dos comentários do Wordpress. Por favor "
1140
+ "selecione uma opção e tente novamente."
1141
+
1142
+ # @ GWGB
1143
+ #: admin/page-import.php:168
1144
+ msgid ""
1145
+ "I'm sorry, but I wasn't able to import comments from that page successfully."
1146
+ msgstr ""
1147
+ "Desculpe, não foi possível importar os comentários dessa página com sucesso."
1148
+
1149
+ # @ GWGB
1150
+ #: admin/page-import.php:170
1151
+ msgid "1 entry imported successfully from WordPress comments."
1152
+ msgstr "1 mensagem importada com sucesso dos comentários do Wordpress."
1153
+
1154
+ # @ GWGB
1155
+ #: admin/page-import.php:172
1156
+ #, php-format
1157
+ msgid "%d entries imported successfully from WordPress comments."
1158
+ msgstr "%d mensagens importadas com sucesso dos comentários do Wordpress."
1159
+
1160
+ # @ GWGB
1161
+ #: admin/page-import.php:176
1162
+ msgid ""
1163
+ "<strong>Nothing to import.</strong> There seem to be no comments on this "
1164
+ "page, post or at all."
1165
+ msgstr ""
1166
+ "<strong>Nada para importar.</strong> A página ou post que você escolheu "
1167
+ "parece não possuir comentários."
1168
+
1169
+ # @ GWGB
1170
+ #: admin/page-import.php:195
1171
+ msgid "Your filesize is too large."
1172
+ msgstr "Seu arquivo é pesado demais."
1173
+
1174
+ # @ GWGB
1175
+ #: admin/page-import.php:216
1176
+ msgid "Invalid file format."
1177
+ msgstr "Formato de arquivo inválido."
1178
+
1179
+ # @ GWGB
1180
+ #: admin/page-import.php:241
1181
+ msgid ""
1182
+ "It seems your CSV file is from an export that is not compatible with this "
1183
+ "version of Gwolle-GB."
1184
+ msgstr ""
1185
+ "Parece que seu arquivo CSV exportado não é compatível com essa versão do "
1186
+ "Gwolle-GB."
1187
+
1188
+ # @ GWGB
1189
+ #: admin/page-import.php:250 admin/page-import.php:284
1190
+ msgid "Your data seems to be corrupt. Import failed."
1191
+ msgstr "Seus dados parecem corrompidos. Falha na importação."
1192
+
1193
+ # @ GWGB
1194
+ #: admin/page-import.php:293
1195
+ msgid "I'm sorry, but I wasn't able to import entries from the CSV file."
1196
+ msgstr "Desculpe, não foi possível importar as mensagens do arquivo CSV."
1197
+
1198
+ # @ GWGB
1199
+ #: admin/page-import.php:295
1200
+ msgid "1 entry imported successfully from the CSV file."
1201
+ msgstr "1 mensagem importada com sucesso do arquivo CSV."
1202
+
1203
+ # @ GWGB
1204
+ #: admin/page-import.php:297
1205
+ #, php-format
1206
+ msgid "%d entries imported successfully from the CSV file."
1207
+ msgstr "%d mensagens importadas com sucesso do arquivo CSV."
1208
+
1209
+ # @ GWGB
1210
+ #: admin/page-import.php:306
1211
+ msgid "Your upload triggered the following error:"
1212
+ msgstr "Seu upload retornou o seguinte erro:"
1213
+
1214
+ # @ GWGB
1215
+ #: admin/page-import.php:319
1216
+ msgid "Import guestbook entries."
1217
+ msgstr "Importar mensagens do livro de visitas."
1218
+
1219
+ # @ GWGB
1220
+ #: admin/page-import.php:338
1221
+ msgid "Import guestbook entries from DMSGuestbook"
1222
+ msgstr "Importar mensagens de DMSGuestbook"
1223
+
1224
+ # @ GWGB
1225
+ #: admin/page-import.php:367
1226
+ #, php-format
1227
+ msgid "%d entries were found and will be imported."
1228
+ msgstr "%d mensagens foram encontradas e serão importadas."
1229
+
1230
+ # @ GWGB
1231
+ #: admin/page-import.php:370 admin/page-import.php:411
1232
+ msgid "The importer will preserve the following data per entry:"
1233
+ msgstr "A importação irá preservar os seguintes dados por mensagem:"
1234
+
1235
+ # @ GWGB
1236
+ #: admin/page-import.php:381 admin/page-import.php:422
1237
+ msgid ""
1238
+ "However, data such as HTML formatting is not supported by Gwolle-GB and "
1239
+ "<strong>will not</strong> be imported."
1240
+ msgstr ""
1241
+ "Entretanto, informações formatadas em HTML não são suportadas pelo Gwolle-GB "
1242
+ "e <strong>não serão</strong>importadas."
1243
+
1244
+ # @ GWGB
1245
+ #: admin/page-import.php:383 admin/page-import.php:426
1246
+ msgid ""
1247
+ "The importer does not delete any data, so you can go back whenever you want."
1248
+ msgstr ""
1249
+ "O importador não apaga nenhuma informação, então você pode voltar quando "
1250
+ "quiser."
1251
+
1252
+ # @ GWGB
1253
+ #: admin/page-import.php:389
1254
+ msgid "Import all entries from DMSGuestbook."
1255
+ msgstr "Importar todas as mensagens de DMSGuestbook."
1256
+
1257
+ # @ GWGB
1258
+ #: admin/page-import.php:393 admin/page-import.php:518
1259
+ #: admin/page-import.php:537
1260
+ msgid "Start import"
1261
+ msgstr "Iniciar importação"
1262
+
1263
+ # @ GWGB
1264
+ #: admin/page-import.php:396
1265
+ msgid "DMSGuestbook was not found."
1266
+ msgstr "DMSGuestbook não encontrado."
1267
+
1268
+ # @ GWGB
1269
+ #: admin/page-import.php:405
1270
+ msgid "Import guestbook entries from WordPress comments"
1271
+ msgstr "Importar mensagens dos comentários do Wordpress"
1272
+
1273
+ # @ GWGB
1274
+ #: admin/page-import.php:414
1275
+ msgid "User ID"
1276
+ msgstr "ID do Usuário"
1277
+
1278
+ # @ GWGB
1279
+ #: admin/page-import.php:420
1280
+ msgid "\"approved\" status"
1281
+ msgstr "Status \"aprovado\""
1282
+
1283
+ #: admin/page-import.php:424
1284
+ msgid "Spam comments will not be imported."
1285
+ msgstr "Spams nos comentários não serão importados."
1286
+
1287
+ # @ GWGB
1288
+ #: admin/page-import.php:429
1289
+ msgid "Select a page to import the comments from:"
1290
+ msgstr "Selecione a para de onde deseja importar os comentários:"
1291
+
1292
+ # @ GWGB
1293
+ #: admin/page-import.php:431 admin/page-import.php:469
1294
+ msgid "Select"
1295
+ msgstr "Selecionar"
1296
+
1297
+ # @ GWGB
1298
+ #: admin/page-import.php:455 admin/page-import.php:492
1299
+ msgid " Comments"
1300
+ msgstr "Comentários"
1301
+
1302
+ # @ GWGB
1303
+ #: admin/page-import.php:457 admin/page-import.php:494
1304
+ msgid "1 Comment"
1305
+ msgstr "1 comentário"
1306
+
1307
+ # @ GWGB
1308
+ #: admin/page-import.php:467
1309
+ msgid "Select a post to import the comments from:"
1310
+ msgstr "Selecione o post de onde deseja importar os comentários:"
1311
+
1312
+ # @ GWGB
1313
+ #: admin/page-import.php:511
1314
+ msgid "Select where to import the comments from:"
1315
+ msgstr "Selecione para onde deseja importar os comentários:"
1316
+
1317
+ #: admin/page-import.php:512
1318
+ msgid "Comments from selected page."
1319
+ msgstr "Comentários da página selecionada."
1320
+
1321
+ #: admin/page-import.php:513
1322
+ msgid "Comments from selected post."
1323
+ msgstr "Comentários do post selecionado."
1324
+
1325
+ # @ GWGB
1326
+ #: admin/page-import.php:514
1327
+ msgid "All Comments"
1328
+ msgstr "Todos os comentários"
1329
+
1330
+ # @ GWGB
1331
+ #: admin/page-import.php:526
1332
+ msgid "Import guestbook entries from Gwolle-GB"
1333
+ msgstr "Importar livro de visitas de Gwolle-GB"
1334
+
1335
+ # @ GWGB
1336
+ #: admin/page-import.php:532
1337
+ msgid "Select a CSV file with exported entries to import again:"
1338
+ msgstr ""
1339
+ "Selecionar arquivo CSV com mensagens exportadas para importar novamente:"
1340
+
1341
+ # @ GWGB
1342
+ #: admin/page-settings.php:326
1343
+ msgid "Form"
1344
+ msgstr "Formulário"
1345
+
1346
+ # @ GWGB
1347
+ #: admin/page-settings.php:327
1348
+ msgid "Reading"
1349
+ msgstr "Leitura"
1350
+
1351
+ # @ GWGB
1352
+ #: admin/page-settings.php:328
1353
+ msgid "Admin"
1354
+ msgstr "Adminstração"
1355
+
1356
+ # @ GWGB
1357
+ #: admin/page-settings.php:329 frontend/write.php:282 frontend/write.php:313
1358
+ msgid "Anti-spam"
1359
+ msgstr "Anti-Spam"
1360
+
1361
+ # @ GWGB
1362
+ #: admin/page-settings.php:330
1363
+ msgid "E-mail"
1364
+ msgstr "E-mail"
1365
+
1366
+ # @ GWGB
1367
+ #: admin/page-settings.php:331 admin/tabs/uninstalltab.php:45
1368
+ msgid "Uninstall"
1369
+ msgstr "Desinstalar"
1370
+
1371
+ #: frontend/posthandling.php:39
1372
+ msgid "Submitting a new guestbook entry is only allowed for logged-in users."
1373
+ msgstr ""
1374
+ "O envio de novas mensagens são permitidas somente para usuários ligados."
1375
+
1376
+ # @ GWGB
1377
+ #: frontend/posthandling.php:208 frontend/posthandling.php:251
1378
+ msgid "There were errors submitting your guestbook entry."
1379
+ msgstr "Ouve erros ao enviar sua mensagem."
1380
+
1381
+ # @ GWGB
1382
+ #: frontend/posthandling.php:214
1383
+ msgid "Your name is not filled in, even though it is mandatory."
1384
+ msgstr "O seu nome não está preenchido, embora seja obrigatório."
1385
+
1386
+ # @ GWGB
1387
+ #: frontend/posthandling.php:217
1388
+ msgid "Your origin is not filled in, even though it is mandatory."
1389
+ msgstr "Sua origem não está preenchida, embora seja obrigatória."
1390
+
1391
+ # @ GWGB
1392
+ #: frontend/posthandling.php:220
1393
+ msgid ""
1394
+ "Your e-mail address is not filled in correctly, even though it is mandatory."
1395
+ msgstr ""
1396
+ "O seu e-mail não está preenchido corretamente, embora seja obrigatório."
1397
+
1398
+ # @ GWGB
1399
+ #: frontend/posthandling.php:223
1400
+ msgid "Your website is not filled in, even though it is mandatory."
1401
+ msgstr "O seu site não está preenchido, embora seja obrigatório."
1402
+
1403
+ # @ GWGB
1404
+ #: frontend/posthandling.php:226
1405
+ msgid "There is no message, even though it is mandatory."
1406
+ msgstr "Não há mensagem, embora seja obrigatório."
1407
+
1408
+ # @ GWGB
1409
+ #: frontend/posthandling.php:229
1410
+ msgid ""
1411
+ "The anti-spam question was not answered correctly, even though it is "
1412
+ "mandatory."
1413
+ msgstr ""
1414
+ "A pergunta anti-spam não foi respondida corretamente, embora seja "
1415
+ "obrigatório."
1416
+
1417
+ # @ GWGB
1418
+ #: frontend/posthandling.php:232
1419
+ msgid "The reCAPTCHA was not filled in correctly, even though it is mandatory."
1420
+ msgstr ""
1421
+ "O código reCAPTCHA não foi preenchido corretamente, embora seja obrigatório."
1422
+
1423
+ # @ GWGB
1424
+ #: frontend/posthandling.php:324
1425
+ msgid "Double post: An entry with the data you entered has already been saved."
1426
+ msgstr ""
1427
+ "Mensagem duplicada: uma mensagem com esses mesmos dados já foi salva "
1428
+ "anteriormente."
1429
+
1430
+ # @ GWGB
1431
+ #: frontend/posthandling.php:341
1432
+ msgid "Thank you for your entry."
1433
+ msgstr "Obrigado pela sua mensagem."
1434
+
1435
+ # @ GWGB
1436
+ #: frontend/posthandling.php:343
1437
+ msgid "We will review it and unlock it in a short while."
1438
+ msgstr "Nós iremos rever e desbloquear em alguns instantes."
1439
+
1440
+ # @ GWGB
1441
+ #: frontend/posthandling.php:380 admin/tabs/emailtab.php:138
1442
+ msgid ""
1443
+ "\n"
1444
+ "Hello,\n"
1445
+ "\n"
1446
+ "There is a new guestbook entry at '%blog_name%'.\n"
1447
+ "You can check it at %entry_management_url%.\n"
1448
+ "\n"
1449
+ "Have a nice day.\n"
1450
+ "Your Gwolle-GB-Mailer\n"
1451
+ "\n"
1452
+ "\n"
1453
+ "Website address: %blog_url%\n"
1454
+ "User name: %user_name%\n"
1455
+ "User email: %user_email%\n"
1456
+ "Entry status: %status%\n"
1457
+ "Entry content:\n"
1458
+ "%entry_content%\n"
1459
+ msgstr ""
1460
+ "\n"
1461
+ "Olá,\n"
1462
+ "\n"
1463
+ "Há uma nova mensagem no livro de visitas em '%blog_name%'.\n"
1464
+ "Você pode verificá-la em %entry_management_url%.\n"
1465
+ "\n"
1466
+ "Tenha um bom dia!\n"
1467
+ "Gwolle-GB-Mailer\n"
1468
+ "\n"
1469
+ "\n"
1470
+ "Endereço do site: %blog_url%\n"
1471
+ "Nome do usuário: %user_name%\n"
1472
+ "E-mail do usuário: %user_email%\n"
1473
+ "Status da mensagem: %status%\n"
1474
+ "Conteúdo da mensagem:\n"
1475
+ "%entry_content%\n"
1476
+
1477
+ # @ GWGB
1478
+ #: frontend/posthandling.php:401 frontend/posthandling.php:467
1479
+ msgid "New Guestbook Entry"
1480
+ msgstr "Nova mensagem no livro de visitas"
1481
+
1482
+ #: frontend/posthandling.php:448 admin/tabs/emailtab.php:198
1483
+ msgid ""
1484
+ "\n"
1485
+ "Hello,\n"
1486
+ "\n"
1487
+ "You have just posted a new guestbook entry at '%blog_name%'.\n"
1488
+ "\n"
1489
+ "Have a nice day.\n"
1490
+ "The editors at %blog_name%.\n"
1491
+ "\n"
1492
+ "\n"
1493
+ "Website address: %blog_url%\n"
1494
+ "User name: %user_name%\n"
1495
+ "User email: %user_email%\n"
1496
+ "Entry content:\n"
1497
+ "%entry_content%\n"
1498
+ msgstr ""
1499
+ "\n"
1500
+ "Olá,\n"
1501
+ "\n"
1502
+ "Você acabou de postar uma nova mensagem em '%blog_name%'.\n"
1503
+ "\n"
1504
+ "Tenha um bom dia.\n"
1505
+ "Obrigado. %blog_name%.\n"
1506
+ "\n"
1507
+ "\n"
1508
+ "Endereço do site: %blog_url%\n"
1509
+ "Nome do usuário: %user_name%\n"
1510
+ "E-mail do usuário: %user_email%\n"
1511
+ "Conteúdo da mensagem:\n"
1512
+ "%entry_content%\n"
1513
+
1514
+ # @ GWGB
1515
+ #: frontend/read.php:79
1516
+ msgid "Previous page"
1517
+ msgstr "Página anterior"
1518
+
1519
+ # @ GWGB
1520
+ #: frontend/read.php:92 frontend/read.php:100 frontend/read.php:106
1521
+ #: frontend/read.php:121 frontend/read.php:132
1522
+ msgid "Page"
1523
+ msgstr "Página"
1524
+
1525
+ # @ GWGB
1526
+ #: frontend/read.php:103 frontend/read.php:133
1527
+ msgid "Next page"
1528
+ msgstr "Próxima página"
1529
+
1530
+ # @ GWGB
1531
+ #: frontend/read.php:144
1532
+ msgid "(no entries yet)"
1533
+ msgstr "(sem mensagens ainda)"
1534
+
1535
+ # @ GWGB
1536
+ #: frontend/read.php:192
1537
+ msgid "from"
1538
+ msgstr "desde"
1539
+
1540
+ # @ GWGB
1541
+ #: frontend/read.php:201
1542
+ msgid "wrote on"
1543
+ msgstr "escrito em"
1544
+
1545
+ # @ GWGB
1546
+ #: frontend/read.php:205
1547
+ msgid "on"
1548
+ msgstr "em"
1549
+
1550
+ # @ GWGB
1551
+ #: frontend/rss.php:84
1552
+ #, fuzzy
1553
+ msgid "Guestbook Entry by"
1554
+ msgstr "Mensagem"
1555
+
1556
+ # @ GWGB
1557
+ #: frontend/widget.php:12
1558
+ msgid "Displays the recent guestbook entries."
1559
+ msgstr "Exibir mensagens recentes do livro de visitas."
1560
+
1561
+ # @ GWGB
1562
+ #: frontend/widget.php:28 frontend/widget.php:194
1563
+ msgid "Visit guestbook"
1564
+ msgstr "Visitar livro de visitas"
1565
+
1566
+ # @ GWGB
1567
+ #: frontend/widget.php:147
1568
+ msgid "Click here to get to the guestbook."
1569
+ msgstr "Clique aqui para chegar ao livro de visitas."
1570
+
1571
+ # @ GWGB
1572
+ #: frontend/widget.php:210
1573
+ msgid "Title:"
1574
+ msgstr "Título: "
1575
+
1576
+ # @ GWGB
1577
+ #: frontend/widget.php:216
1578
+ msgid "Number of entries:"
1579
+ msgstr "Número de mensagens: "
1580
+
1581
+ # @ GWGB
1582
+ #: frontend/widget.php:232
1583
+ msgid "Best entries to show:"
1584
+ msgstr "Melhores mensagens para exibir: "
1585
+
1586
+ # @ GWGB
1587
+ #: frontend/widget.php:234
1588
+ msgid "List of entry_id's, comma-separated"
1589
+ msgstr "Lista de ids de mensagens separados por vírgulas"
1590
+
1591
+ #: frontend/widget.php:240
1592
+ msgid "Show name of author."
1593
+ msgstr "Exibir nome do autor."
1594
+
1595
+ # @ GWGB
1596
+ #: frontend/widget.php:246
1597
+ msgid "Show date of entry."
1598
+ msgstr "Data da mensagem."
1599
+
1600
+ # @ GWGB
1601
+ #: frontend/widget.php:250
1602
+ msgid "Number of words for each entry:"
1603
+ msgstr "Número de palavras de cada mensagem: "
1604
+
1605
+ # @ GWGB
1606
+ #: frontend/widget.php:266
1607
+ msgid "Link text:"
1608
+ msgstr "Texto do link: "
1609
+
1610
+ # @ GWGB
1611
+ #: frontend/widget.php:272
1612
+ msgid "Select the page of the guestbook:"
1613
+ msgstr "Selecione a página do livro de visitas: "
1614
+
1615
+ # @ GWGB
1616
+ #: frontend/widget.php:274
1617
+ msgid "Select page"
1618
+ msgstr "Selecionar página"
1619
+
1620
+ # @ GWGB
1621
+ #: frontend/write.php:94
1622
+ msgid "Write a new entry."
1623
+ msgstr "Escrever uma nova mensagem."
1624
+
1625
+ #: frontend/write.php:102
1626
+ msgid "Log in to post an entry"
1627
+ msgstr "Efetue o login para postar uma mensagem"
1628
+
1629
+ # @ GWGB
1630
+ #: frontend/write.php:129 admin/tabs/formtab.php:58
1631
+ msgid "Write a new entry for the Guestbook"
1632
+ msgstr "Escreve a tua mensagem para o livro de visitas"
1633
+
1634
+ # @ GWGB
1635
+ #: frontend/write.php:158 frontend/write.php:165 admin/tabs/formtab.php:125
1636
+ #: admin/tabs/readingtab.php:164
1637
+ msgid "City"
1638
+ msgstr "Localidade"
1639
+
1640
+ # @ GWGB
1641
+ #: frontend/write.php:177 frontend/write.php:184 admin/tabs/formtab.php:145
1642
+ msgid "Email"
1643
+ msgstr "E-mail"
1644
+
1645
+ # @ GWGB
1646
+ #: frontend/write.php:283
1647
+ msgid "Question:"
1648
+ msgstr "Questão: "
1649
+
1650
+ # @ GWGB
1651
+ #: frontend/write.php:289
1652
+ msgid "Answer"
1653
+ msgstr "Resposta"
1654
+
1655
+ # @ GWGB
1656
+ #: frontend/write.php:333
1657
+ msgid "Submit"
1658
+ msgstr "Enviar"
1659
+
1660
+ #: frontend/write.php:342 admin/tabs/formtab.php:74
1661
+ msgid ""
1662
+ "\n"
1663
+ "Fields marked with * are obligatory.\n"
1664
+ "Your E-mail address wil not be published.\n"
1665
+ "For security reasons we save the ip address %ip%.\n"
1666
+ "It might be that your entry will only be visible in the guestbook after we "
1667
+ "reviewed it.\n"
1668
+ "We reserve our right to edit, delete, or not publish entries.\n"
1669
+ msgstr ""
1670
+ "\n"
1671
+ "Campos marcados com * são obrigatórios.\n"
1672
+ "Seu endereço de e-mail não será publicado.\n"
1673
+ "Por razões de segurança nós salvamos o seu endereço de IP: %ip%.\n"
1674
+ "Pode ser que sua mensagem só se torne visível no livro de visitas depois que "
1675
+ "revisarmos. \n"
1676
+ "Nos reservamos no direito de editar, deletar ou não publicar as mensagens.\n"
1677
+
1678
+ # @ GWGB
1679
+ #: functions/function.log.php:94
1680
+ msgid "Entry has been locked."
1681
+ msgstr "Mensagem bloqueada."
1682
+
1683
+ # @ GWGB
1684
+ #: functions/function.log.php:95
1685
+ msgid "Entry has been checked."
1686
+ msgstr "Mensagem verificada."
1687
+
1688
+ # @ GWGB
1689
+ #: functions/function.log.php:96
1690
+ msgid "Entry marked as spam."
1691
+ msgstr "Mensagem marcada como spam."
1692
+
1693
+ # @ GWGB
1694
+ #: functions/function.log.php:97
1695
+ msgid "Entry marked as not spam."
1696
+ msgstr "Mensagem como não sendo spam."
1697
+
1698
+ # @ GWGB
1699
+ #: functions/function.log.php:98
1700
+ msgid "Entry has been edited."
1701
+ msgstr "Mensagem editada."
1702
+
1703
+ # @ GWGB
1704
+ #: functions/function.log.php:99
1705
+ msgid "Imported from DMSGuestbook"
1706
+ msgstr "Importado de DMSGuestbook"
1707
+
1708
+ # @ GWGB
1709
+ #: functions/function.log.php:100
1710
+ msgid "Imported from WordPress comments"
1711
+ msgstr "Importado dos comentários do Wordpress"
1712
+
1713
+ # @ GWGB
1714
+ #: functions/function.log.php:101
1715
+ msgid "Imported from Gwolle-GB"
1716
+ msgstr "Importado de Gwolle-GB"
1717
+
1718
+ # @ GWGB
1719
+ #: functions/function.log.php:102
1720
+ msgid "Exported to CSV file"
1721
+ msgstr "Exportado para um arquivo CSV"
1722
+
1723
+ # @ GWGB
1724
+ #: functions/function.log.php:103
1725
+ msgid "Entry has been trashed."
1726
+ msgstr "Mensagem enviada para lixeira."
1727
+
1728
+ # @ GWGB
1729
+ #: functions/function.log.php:104
1730
+ msgid "Entry has been untrashed."
1731
+ msgstr "Mensagem removida da lixeira."
1732
+
1733
+ # @ GWGB
1734
+ #: functions/function.misc.php:63
1735
+ msgid "No content to display. This entry is empty."
1736
+ msgstr "Sem conteúdo para exibir. Essa mensagem está vazia."
1737
+
1738
+ # @ GWGB
1739
+ #: admin/tabs/admintab.php:26
1740
+ msgid "Entries per page in the admin"
1741
+ msgstr "Mensagens por página no admin"
1742
+
1743
+ # @ GWGB
1744
+ #: admin/tabs/admintab.php:41
1745
+ msgid "Number of entries shown in the admin."
1746
+ msgstr "Número de mensagens exibidas no admin."
1747
+
1748
+ # @ GWGB
1749
+ #: admin/tabs/admintab.php:46
1750
+ msgid "Entry icons"
1751
+ msgstr "Inserir emoticons"
1752
+
1753
+ # @ GWGB
1754
+ #: admin/tabs/admintab.php:52
1755
+ msgid "Show entry icons"
1756
+ msgstr "Exibir inserção de emoticons"
1757
+
1758
+ # @ GWGB
1759
+ #: admin/tabs/admintab.php:54
1760
+ msgid ""
1761
+ "These icons are shown in every entry row of the admin list, so that you know "
1762
+ "its status (checked, spam and trash)."
1763
+ msgstr ""
1764
+ "Esses emoticons são exibidos em cada linha de mensagem na lista do admin, "
1765
+ "assim você pode saber o status (verificado, spam e lixo)."
1766
+
1767
+ # @ GWGB
1768
+ #: admin/tabs/admintab.php:61 admin/tabs/antispamtab.php:140
1769
+ #: admin/tabs/emailtab.php:235 admin/tabs/formtab.php:252
1770
+ #: admin/tabs/readingtab.php:229
1771
+ msgid "Save settings"
1772
+ msgstr "Salvar configurações"
1773
+
1774
+ # @ GWGB
1775
+ #: admin/tabs/antispamtab.php:26
1776
+ msgid "Moderate Guestbook"
1777
+ msgstr "Moderar livro de visitas"
1778
+
1779
+ # @ GWGB
1780
+ #: admin/tabs/antispamtab.php:34
1781
+ msgid "Moderate entries before publishing them."
1782
+ msgstr "Moderar mensagens antes de publicá-las."
1783
+
1784
+ # @ GWGB
1785
+ #: admin/tabs/antispamtab.php:38
1786
+ msgid ""
1787
+ "New entries have to be unlocked by a moderator before they are visible to "
1788
+ "the public."
1789
+ msgstr ""
1790
+ "Novas mensagens foram desbloqueadas por um moderador antes de serem visíveis "
1791
+ "ao público."
1792
+
1793
+ # @ GWGB
1794
+ #: admin/tabs/antispamtab.php:40
1795
+ msgid ""
1796
+ "It is recommended that you turn this on, because you are responsible for the "
1797
+ "content on your website."
1798
+ msgstr ""
1799
+ "É recomendável que você ligue essa opção pois você é responsável pelo "
1800
+ "conteúdo do seu site."
1801
+
1802
+ # @ GWGB
1803
+ #: admin/tabs/antispamtab.php:50
1804
+ msgid "Learn more about Akismet..."
1805
+ msgstr "Aprenda mais sobre Akismet..."
1806
+
1807
+ # @ GWGB
1808
+ #: admin/tabs/antispamtab.php:50 admin/tabs/antispamtab.php:106
1809
+ msgid "What's that?"
1810
+ msgstr "O que é isso?"
1811
+
1812
+ # @ GWGB
1813
+ #: admin/tabs/antispamtab.php:60
1814
+ msgid ""
1815
+ "Akismet helps you to fight spam. It's free and easy to install. Download and "
1816
+ "install it today to stop spam in your guestbook."
1817
+ msgstr ""
1818
+ "Akismet ajuda você a lutar contra o spam. É gratuito e fácil de instalar. "
1819
+ "Faça o download e instale-o hoje para bloquear os spams no seu livro de "
1820
+ "visitas."
1821
+
1822
+ # @ GWGB
1823
+ #: admin/tabs/antispamtab.php:63
1824
+ #, php-format
1825
+ msgid ""
1826
+ "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1827
+ "can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1828
+ msgstr ""
1829
+ "Desculpe, não foi possível localizar sua chave<strong>”WordPress API key”</"
1830
+ "strong>. Você pode inseri-la na <a href=\"%s\">página de configuração do "
1831
+ "Akismet</a>."
1832
+
1833
+ # @ GWGB
1834
+ #: admin/tabs/antispamtab.php:72
1835
+ msgid "Use Akismet"
1836
+ msgstr "Use Akismet"
1837
+
1838
+ # @ GWGB
1839
+ #: admin/tabs/antispamtab.php:74
1840
+ msgid ""
1841
+ "The WordPress API key has been found, so you can start using Akismet right "
1842
+ "now."
1843
+ msgstr ""
1844
+ "A chave “WordPress API key” foi encontrada, então você pode começar a usar o "
1845
+ "Akismet agora."
1846
+
1847
+ # @ GWGB
1848
+ #: admin/tabs/antispamtab.php:85
1849
+ msgid "Custom Anti-Spam Security Question"
1850
+ msgstr "Pergunta de segurança Anti-Spam personalizada"
1851
+
1852
+ # @ GWGB
1853
+ #: admin/tabs/antispamtab.php:88
1854
+ msgid "12 + six ="
1855
+ msgstr "12 + seis ="
1856
+
1857
+ # @ GWGB
1858
+ #: admin/tabs/antispamtab.php:89
1859
+ msgid "Custom security question to battle spam."
1860
+ msgstr "Pergunta de segurança customizada para combater spam."
1861
+
1862
+ # @ GWGB
1863
+ #: admin/tabs/antispamtab.php:91
1864
+ msgid "18"
1865
+ msgstr "18"
1866
+
1867
+ # @ GWGB
1868
+ #: admin/tabs/antispamtab.php:92
1869
+ msgid "The answer to your security question."
1870
+ msgstr "A resposta par a sua pergunta de segurança."
1871
+
1872
+ # @ GWGB
1873
+ #: admin/tabs/antispamtab.php:94
1874
+ msgid ""
1875
+ "You can ask your visitors to answer a custom security question, so only real "
1876
+ "people can post an entry."
1877
+ msgstr ""
1878
+ "Você pode perguntar seus visitantes a responderem a pergunta de segurança "
1879
+ "customizada, assim apenas pessoas reais poderão postar uma mensagem."
1880
+
1881
+ # @ GWGB
1882
+ #: admin/tabs/antispamtab.php:106
1883
+ msgid "Learn more about reCAPTCHA..."
1884
+ msgstr "Aprenda mais sobre reCAPTCHA…"
1885
+
1886
+ # @ GWGB
1887
+ #: admin/tabs/antispamtab.php:117
1888
+ msgid "<strong>Site (Public)</strong> key of your reCAPTCHA account"
1889
+ msgstr "Chave do <strong>Site (Público)</strong> da sua conta reCAPTCHA"
1890
+
1891
+ # @ GWGB
1892
+ #: admin/tabs/antispamtab.php:120
1893
+ msgid "<strong>Secret</strong> key of your reCAPTCHA account"
1894
+ msgstr "Chave <strong>Secreta</strong> da sua conta reCAPTCHA"
1895
+
1896
+ #: admin/tabs/antispamtab.php:123
1897
+ msgid ""
1898
+ "reCAPTCHA is a way to have visitors fill in a field with a few letters or "
1899
+ "numbers. It is a way to make sure that you have a human visitor and not a "
1900
+ "spambot. Not every visitor will appreciate it though, some will consider it "
1901
+ "unfriendly."
1902
+ msgstr ""
1903
+ "reCAPTCHA é o preenchimento de um campo com algumas letras e números. É uma "
1904
+ "maneira de se certificar de que você tem um visitante humano e não um robô "
1905
+ "de spams. Nem todo visitante irá apreciá-lo embora, alguns vão considerá-lo "
1906
+ "hostil."
1907
+
1908
+ # @ GWGB
1909
+ #: admin/tabs/antispamtab.php:125
1910
+ msgid "The keys can be found at your"
1911
+ msgstr "As chaves pode ser encontradas na sua"
1912
+
1913
+ # @ GWGB
1914
+ #: admin/tabs/antispamtab.php:125
1915
+ msgid "Go to my reCAPTCHA sites..."
1916
+ msgstr "Vá para meus sites reCAPTCHA… "
1917
+
1918
+ # @ GWGB
1919
+ #: admin/tabs/antispamtab.php:125
1920
+ msgid "reCAPTCHA sites overview"
1921
+ msgstr "Visão geral de sites reCAPTCHA "
1922
+
1923
+ # @ GWGB
1924
+ #: admin/tabs/antispamtab.php:130
1925
+ msgid ""
1926
+ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1927
+ "your theme or another plugin. The reCAPTCHA library in Gwolle-GB will not be "
1928
+ "loaded, and the found one will be used instead. This might give unexpected "
1929
+ "results."
1930
+ msgstr ""
1931
+ "<strong>Aviso:</strong> Aparentemente você já usa um acervo de reCAPTCHA no "
1932
+ "seu tema ou outro plugin. O acervo de reCAPTCHA em Gwolle-GB não será "
1933
+ "carregado e o que foi encontrado será usado. Isso pode trazer resultados "
1934
+ "inesperados."
1935
+
1936
+ # @ GWGB
1937
+ #: admin/tabs/antispamtab.php:132
1938
+ msgid ""
1939
+ "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1940
+ "your theme or another plugin. However, this is an old and incompatible "
1941
+ "version, so reCAPTCHA will not be used for Gwolle-GB."
1942
+ msgstr ""
1943
+ "<strong>Aviso:</strong> Aparentemente você já usa um acervo de reCAPTCHA no "
1944
+ "seu tema ou outro plugin. Entretanto essa é uma versão antiga e "
1945
+ "incompatível, então o reCAPTCHA não será usado para o Gwolle-GB."
1946
+
1947
+ # @ GWGB
1948
+ #: admin/tabs/emailtab.php:26
1949
+ msgid "Admin mail from address"
1950
+ msgstr "Enviar mensagem para admin no e-mail"
1951
+
1952
+ # @ GWGB
1953
+ #: admin/tabs/emailtab.php:32
1954
+ msgid ""
1955
+ "You can set the email address that is used for the From header of the mail "
1956
+ "that a notification subscriber gets on new entries."
1957
+ msgstr ""
1958
+ "Você pode definir um endereço de e-mail para ser usado no campo “De” da "
1959
+ "mensagem de e-mail enviada em novas mensagens."
1960
+
1961
+ # @ GWGB
1962
+ #: admin/tabs/emailtab.php:34
1963
+ msgid "By default the main admin address is used from General >> Settings."
1964
+ msgstr ""
1965
+ "Por padrão o endereço principal do admin usado está em Geral >> Configurações"
1966
+
1967
+ # @ GWGB
1968
+ #: admin/tabs/emailtab.php:41
1969
+ msgid "Unsubscribe moderators"
1970
+ msgstr "Desinscrever moderadores"
1971
+
1972
+ # @ GWGB
1973
+ #: admin/tabs/emailtab.php:51
1974
+ msgid "Unsubscribe User"
1975
+ msgstr "Desinscrever usuário"
1976
+
1977
+ # @ GWGB
1978
+ #: admin/tabs/emailtab.php:73
1979
+ msgid "These users have subscribed to the notification emails."
1980
+ msgstr "Os seguintes usuários se inscreveram na notificação por e-mail:"
1981
+
1982
+ #: admin/tabs/emailtab.php:74
1983
+ msgid ""
1984
+ "Select a user if you want that user to unsubscribe from the notification "
1985
+ "emails."
1986
+ msgstr ""
1987
+ "Selecione um usuário se você quiser que esse usuário seja removido das "
1988
+ "notificações de e-mail."
1989
+
1990
+ #: admin/tabs/emailtab.php:79
1991
+ msgid "Subscribe moderators"
1992
+ msgstr "Inscrever moderadores"
1993
+
1994
+ # @ GWGB
1995
+ #: admin/tabs/emailtab.php:82
1996
+ msgid "Subscribe User"
1997
+ msgstr "Inscrever Usuário"
1998
+
1999
+ #: admin/tabs/emailtab.php:125
2000
+ msgid "You can subscribe a moderator to the notification emails."
2001
+ msgstr "Você pode inscrever um moderador para as notificações de e-mails."
2002
+
2003
+ #: admin/tabs/emailtab.php:126
2004
+ msgid "Select a user that you want subscribed to the notification emails."
2005
+ msgstr ""
2006
+ "Selecione um usuário que você queira inscrito para as notificações de e-"
2007
+ "mails."
2008
+
2009
+ #: admin/tabs/emailtab.php:127
2010
+ msgid ""
2011
+ "You will only see users with the roles of Administrator, Editor and Author, "
2012
+ "who have the capability 'moderate_comments' ."
2013
+ msgstr ""
2014
+ "Você irá ver apenas usuários definidos como Administradores, Editores e "
2015
+ "Autores que tiverem a capacidade de moderar comentários."
2016
+
2017
+ # @ GWGB
2018
+ #: admin/tabs/emailtab.php:133
2019
+ msgid "Admin mail content"
2020
+ msgstr "Administrar conteúdo de e-mail"
2021
+
2022
+ # @ GWGB
2023
+ #: admin/tabs/emailtab.php:160
2024
+ msgid ""
2025
+ "You can set the content of the mail that a notification subscriber gets on "
2026
+ "new entries. The following tags are supported:"
2027
+ msgstr ""
2028
+ "Você pode definir o conteúdo do e-mail que a pessoa inscrita receberá na "
2029
+ "notificação ao colocar novas mensagens. As tags seguintes são suportadas:"
2030
+
2031
+ # @ GWGB
2032
+ #: admin/tabs/emailtab.php:175
2033
+ msgid "Mail Author"
2034
+ msgstr "E-mail do Autor"
2035
+
2036
+ #: admin/tabs/emailtab.php:183
2037
+ msgid "Mail the author with a confirmation email."
2038
+ msgstr "Enviar e-mail para autor com confirmação."
2039
+
2040
+ #: admin/tabs/emailtab.php:187
2041
+ msgid ""
2042
+ "The author of the guestbook entry will receive an email after posting. It "
2043
+ "will have a copy of the entry."
2044
+ msgstr ""
2045
+ "O autor da mensagem do livro de visitas irá receber uma mensagem depois de "
2046
+ "postar. Ele terá uma cópia da mensagem."
2047
+
2048
+ # @ GWGB
2049
+ #: admin/tabs/emailtab.php:193
2050
+ msgid "Author mail content"
2051
+ msgstr "Conteúdo do e-mail do autor"
2052
+
2053
+ # @ GWGB
2054
+ #: admin/tabs/emailtab.php:218
2055
+ msgid ""
2056
+ "You can set the content of the mail that the author of the entry will "
2057
+ "receive. The following tags are supported:"
2058
+ msgstr ""
2059
+ "Você pode definir o conteúdo do e-mail que o autor da mensagem irá receber. "
2060
+ "As seguintes tags são suportadas:"
2061
+
2062
+ #: admin/tabs/formtab.php:26
2063
+ msgid "Require Login"
2064
+ msgstr "Requisitar login"
2065
+
2066
+ #: admin/tabs/formtab.php:33
2067
+ msgid "Require user to be logged in."
2068
+ msgstr "Requisitar que o usuário esteja logado."
2069
+
2070
+ #: admin/tabs/formtab.php:35
2071
+ msgid "Only allow logged-in users to add a guestbook entry."
2072
+ msgstr ""
2073
+ "Permitir apenas usuários ligados para adicionar mensagens no livro de "
2074
+ "visitas."
2075
+
2076
+ #: admin/tabs/formtab.php:40
2077
+ msgid "Labels float"
2078
+ msgstr "Etiquetas flutuantes"
2079
+
2080
+ #: admin/tabs/formtab.php:47
2081
+ msgid "Labels in the form float to the left."
2082
+ msgstr "Etiquetas flutuam na esquerda no formulário."
2083
+
2084
+ #: admin/tabs/formtab.php:49
2085
+ msgid ""
2086
+ "Labels in the form float to the left. Otherwise the labels will be above the "
2087
+ "input-fields."
2088
+ msgstr ""
2089
+ "Etiquetas flutuam na esquerda no formulário. Ou então as etiquetas ficarão "
2090
+ "acima dos campos de preenchimento."
2091
+
2092
+ #: admin/tabs/formtab.php:54
2093
+ msgid "Header Text"
2094
+ msgstr "Texto do cabeçalho"
2095
+
2096
+ # @ GWGB
2097
+ #: admin/tabs/formtab.php:63
2098
+ msgid "You can set the header that is shown on top of the form."
2099
+ msgstr "Você pode definir o cabeçalho para ser exibido no topo do formulário."
2100
+
2101
+ #: admin/tabs/formtab.php:69
2102
+ msgid "Notice Text"
2103
+ msgstr "Texto aviso prévio"
2104
+
2105
+ # @ GWGB
2106
+ #: admin/tabs/formtab.php:86
2107
+ msgid "You can set the content of the notice that gets shown below the form."
2108
+ msgstr ""
2109
+ "Você pode definir o conteúdo do aviso que será mostrado abaixo do formulário."
2110
+
2111
+ #: admin/tabs/formtab.php:88
2112
+ msgid "You can use the tag %ip% to show the ip address."
2113
+ msgstr "Você pode usar a tag %ip% para exibir o endereço de IP."
2114
+
2115
+ # @ GWGB
2116
+ #: admin/tabs/formtab.php:101
2117
+ msgid "Configure the form that is shown to visitors."
2118
+ msgstr "Configurar o formulário que é exibido para os visitantes."
2119
+
2120
+ # @ GWGB
2121
+ #: admin/tabs/formtab.php:112 admin/tabs/formtab.php:132
2122
+ #: admin/tabs/formtab.php:152 admin/tabs/formtab.php:172
2123
+ #: admin/tabs/formtab.php:192 admin/tabs/formtab.php:212
2124
+ #: admin/tabs/formtab.php:227 admin/tabs/formtab.php:242
2125
+ #: admin/tabs/readingtab.php:147 admin/tabs/readingtab.php:159
2126
+ #: admin/tabs/readingtab.php:171 admin/tabs/readingtab.php:183
2127
+ #: admin/tabs/readingtab.php:196 admin/tabs/readingtab.php:209
2128
+ #: admin/tabs/readingtab.php:221
2129
+ msgid "Enabled"
2130
+ msgstr "Habilitado"
2131
+
2132
+ # @ GWGB
2133
+ #: admin/tabs/formtab.php:120 admin/tabs/formtab.php:140
2134
+ #: admin/tabs/formtab.php:160 admin/tabs/formtab.php:180
2135
+ #: admin/tabs/formtab.php:200
2136
+ msgid "Mandatory"
2137
+ msgstr "Obrigatório"
2138
+
2139
+ #: admin/tabs/formtab.php:205
2140
+ msgid "BBcode and Emoji"
2141
+ msgstr "BBCode e Emoji"
2142
+
2143
+ #: admin/tabs/formtab.php:215
2144
+ msgid "Will only be shown if the Message is enabled."
2145
+ msgstr "Será exibido apenas se Mensagem estiver habilitado."
2146
+
2147
+ # @ GWGB
2148
+ #: admin/tabs/formtab.php:220
2149
+ msgid "Custom Anti-spam"
2150
+ msgstr "Anti-Spam customizado"
2151
+
2152
+ # @ GWGB
2153
+ #: admin/tabs/formtab.php:230 admin/tabs/formtab.php:245
2154
+ msgid "When enabled it is mandatory."
2155
+ msgstr "Quando habilitado é obrigatório."
2156
+
2157
+ # @ GWGB
2158
+ #: admin/tabs/formtab.php:235 admin/tabs/uninstalltab.php:63
2159
+ msgid "reCAPTCHA"
2160
+ msgstr "reCAPTCHA"
2161
+
2162
+ # @ GWGB
2163
+ #: admin/tabs/readingtab.php:26
2164
+ msgid "Entries per page on the frontend"
2165
+ msgstr "Mensagens por página no frontend"
2166
+
2167
+ # @ GWGB
2168
+ #: admin/tabs/readingtab.php:41
2169
+ msgid "Number of entries shown on the frontend."
2170
+ msgstr "Número de mensagens exibidas no frontend."
2171
+
2172
+ # @ GWGB
2173
+ #: admin/tabs/readingtab.php:46
2174
+ msgid "Length of the entry content"
2175
+ msgstr "Tamanho do conteúdo da mensagem"
2176
+
2177
+ #: admin/tabs/readingtab.php:56
2178
+ msgid "Unlimited Words"
2179
+ msgstr "Palavras ilimitadas"
2180
+
2181
+ #: admin/tabs/readingtab.php:63
2182
+ msgid "Words"
2183
+ msgstr "Palavras"
2184
+
2185
+ #: admin/tabs/readingtab.php:69
2186
+ msgid "Maximum length of the entry content in words."
2187
+ msgstr "Tamanho máximo do conteúdo da mensagem em palavras."
2188
+
2189
+ #: admin/tabs/readingtab.php:70
2190
+ msgid "Please be aware that this will strip linebreaks as well."
2191
+ msgstr ""
2192
+ "Por favor, esteja ciente de que isso irá retirar quebras de linha também."
2193
+
2194
+ # @ GWGB
2195
+ #: admin/tabs/readingtab.php:76
2196
+ msgid "Line breaks"
2197
+ msgstr "Quebra de linhas"
2198
+
2199
+ # @ GWGB
2200
+ #: admin/tabs/readingtab.php:83
2201
+ msgid "Show line breaks."
2202
+ msgstr "Exibir quebra de linhas."
2203
+
2204
+ # @ GWGB
2205
+ #: admin/tabs/readingtab.php:85
2206
+ msgid ""
2207
+ "Show line breaks as the entry authors entered them. (May result in very long "
2208
+ "entries. Is turned off by default.)"
2209
+ msgstr ""
2210
+ "Mostrar quebras de linha quando os autores entrarem a mensagem deles. (Pode "
2211
+ "resultar em mensagens muito longas. É desligado por padrão.)"
2212
+
2213
+ # @ GWGB
2214
+ #: admin/tabs/readingtab.php:90
2215
+ msgid "Smileys"
2216
+ msgstr "Emoticons"
2217
+
2218
+ # @ GWGB
2219
+ #: admin/tabs/readingtab.php:97
2220
+ msgid "Display smileys as images."
2221
+ msgstr "Exibir emoticons como imagens."
2222
+
2223
+ # @ GWGB
2224
+ #: admin/tabs/readingtab.php:99
2225
+ #, php-format
2226
+ msgid ""
2227
+ "Replaces smileys in entries like :) with their image %s. Uses the WP smiley "
2228
+ "replacer, so check on that one if you'd like to add new/more smileys."
2229
+ msgstr ""
2230
+ "Substituir emoticons nas mensagens como :) pela sua imagem %s. Usa um "
2231
+ "substituidor de emoticons do WP, então verifique se você quer adicionar mais "
2232
+ "emoticons."
2233
+
2234
+ # @ GWGB
2235
+ #: admin/tabs/readingtab.php:104
2236
+ msgid "Links"
2237
+ msgstr "Links"
2238
+
2239
+ # @ GWGB
2240
+ #: admin/tabs/readingtab.php:111
2241
+ msgid "Link authors' name to their website."
2242
+ msgstr "Colocar link do site do autor em seu nome."
2243
+
2244
+ # @ GWGB
2245
+ #: admin/tabs/readingtab.php:113
2246
+ msgid ""
2247
+ "The author of an entry can set his/her website. If this setting is checked, "
2248
+ "his/her name will be a link to that website."
2249
+ msgstr ""
2250
+ "O autor de uma mensagem por definir seu site. Se essa opção estiver marcada, "
2251
+ "seu nome será um link para o site dele."
2252
+
2253
+ #: admin/tabs/readingtab.php:118
2254
+ msgid "Admin Entry Styling"
2255
+ msgstr "Administrar estilos da mensagem"
2256
+
2257
+ #: admin/tabs/readingtab.php:125
2258
+ msgid "Admin entries get a special CSS styling."
2259
+ msgstr "Mensagens de administradores ganham um estilo CSS especial."
2260
+
2261
+ #: admin/tabs/readingtab.php:127
2262
+ msgid ""
2263
+ "Admin entries get a special CSS styling. It will get a lightgrey background."
2264
+ msgstr ""
2265
+ "Mensagens de administradores ganham um estilo CSS especial. Elas terão um "
2266
+ "fundo em cinza claro."
2267
+
2268
+ # @ GWGB
2269
+ #: admin/tabs/readingtab.php:135
2270
+ msgid "Configure the parts of the entries that are shown to visitors."
2271
+ msgstr "Configurar partes de mensagens que são exibidas para os visitantes."
2272
+
2273
+ #: admin/tabs/readingtab.php:140
2274
+ msgid "Avatar"
2275
+ msgstr "Avatar"
2276
+
2277
+ #: admin/tabs/readingtab.php:176
2278
+ msgid "Date and Time"
2279
+ msgstr "Dia e hora"
2280
+
2281
+ #: admin/tabs/readingtab.php:184
2282
+ msgid "Setting this will show the date and the time of the entry."
2283
+ msgstr "Configurando isso irá mostrar data e horário da mensagem."
2284
+
2285
+ #: admin/tabs/readingtab.php:197
2286
+ msgid ""
2287
+ "Setting this will show the date of the entry. If Date and Time above are "
2288
+ "enabled, that setting has preference."
2289
+ msgstr ""
2290
+ "Configurando isso irá mostrar data e horário da mensagem. Se data e hora "
2291
+ "acima estiver habilitado, então essa configuração terá preferência."
2292
+
2293
+ #: admin/tabs/readingtab.php:202
2294
+ msgid "Content"
2295
+ msgstr "Conteúdo"
2296
+
2297
+ # @ GWGB
2298
+ #: admin/tabs/readingtab.php:214
2299
+ msgid "Edit link"
2300
+ msgstr "Editar link"
2301
+
2302
+ #: admin/tabs/readingtab.php:222
2303
+ msgid ""
2304
+ "A link to the editor will be added to the content. Only visible for "
2305
+ "moderators."
2306
+ msgstr ""
2307
+ "Um link para o editor será adicionado no conteúdo. Apenas visível para "
2308
+ "moderadores."
2309
+
2310
+ # @ GWGB
2311
+ #: admin/tabs/uninstalltab.php:34
2312
+ msgid "The entries and settings have been removed."
2313
+ msgstr "As mensagens e configurações foram removidas."
2314
+
2315
+ # @ GWGB
2316
+ #: admin/tabs/uninstalltab.php:35
2317
+ msgid "The plugin is deactivated."
2318
+ msgstr "O plugin está desativado."
2319
+
2320
+ # @ GWGB
2321
+ #: admin/tabs/uninstalltab.php:36
2322
+ msgid "You can now go to your"
2323
+ msgstr "Você pode ir agora para seu(sua) "
2324
+
2325
+ # @ GWGB
2326
+ #: admin/tabs/uninstalltab.php:36
2327
+ msgid "dashboard."
2328
+ msgstr "painel."
2329
+
2330
+ # @ GWGB
2331
+ #: admin/tabs/uninstalltab.php:47
2332
+ msgid ""
2333
+ "Uninstalling means that all database entries are removed (settings and "
2334
+ "entries)."
2335
+ msgstr ""
2336
+ "Desentalando significa que todas as suas mensagens da sua base de dados "
2337
+ "foram removidas (configurações e mensagens)."
2338
+
2339
+ # @ GWGB
2340
+ #: admin/tabs/uninstalltab.php:49
2341
+ msgid "This can <strong>not</strong> be undone."
2342
+ msgstr "Isso <strong>não pode</strong> ser desfeito."
2343
+
2344
+ # @ GWGB
2345
+ #: admin/tabs/uninstalltab.php:55
2346
+ msgid "Confirm"
2347
+ msgstr "Confirmar"
2348
+
2349
+ # @ GWGB
2350
+ #: admin/tabs/uninstalltab.php:58
2351
+ msgid "Yes, I'm absolutely sure of this. Proceed!"
2352
+ msgstr "Sim, tenho certeza absoluta disso. Continuar!"
2353
+
2354
+ # @ GWGB
2355
+ #: admin/tabs/uninstalltab.php:66
2356
+ msgid "Also delete the reCAPTCHA keys"
2357
+ msgstr "Delete também as chaves do reCAPTCHA"
2358
+
2359
+ # @ GWGB
2360
+ #: admin/tabs/uninstalltab.php:73
2361
+ msgid "Uninstall &raquo;"
2362
+ msgstr "Desinstalar &raquo;"
2363
+
2364
+ # @ GWGB
2365
+ #~ msgid "Donate"
2366
+ #~ msgstr "Doar"
2367
+
2368
+ # @ GWGB
2369
+ #~ msgid "Homepage"
2370
+ #~ msgstr "Website"
2371
+
2372
+ # @ GWGB
2373
+ #~ msgid "Icons by"
2374
+ #~ msgstr "Ícones por"
2375
+
2376
+ # @ GWGB
2377
+ #~ msgid "No Comments"
2378
+ #~ msgstr "Sem comentários"
2379
+
2380
+ # @ GWGB
2381
+ #~ msgid "Import all entries from this page."
2382
+ #~ msgstr "Importar todas as mensagens dessa página."
2383
+
2384
+ # @ GWGB
2385
+ #~ msgid "Fields marked with * are obligatory."
2386
+ #~ msgstr "Campos marcados com * são de preenchimento obrigatório."
2387
+
2388
+ # @ GWGB
2389
+ #~ msgid "The E-mail address wil not be published."
2390
+ #~ msgstr "O endereço de E-mail não será publicado."
2391
+
2392
+ # @ GWGB
2393
+ #~ msgid ""
2394
+ #~ "For security reasons we save the ip address <span id=\"gwolle_gb_ip\">%s</"
2395
+ #~ "span>."
2396
+ #~ msgstr ""
2397
+ #~ "Por questões de segurança gravamos o seguinte endereço de ip <span id="
2398
+ #~ "\"gwolle_gb_ip\">%s</span>."
2399
+
2400
+ # @ GWGB
2401
+ #~ msgid "Your entry will be visible in the guestbook after we reviewed it."
2402
+ #~ msgstr "A tua mensagem estará visível no livro de visitas após ser revista."
2403
+
2404
+ # @ GWGB
2405
+ #~ msgid "We reserve our right to edit, delete, or not publish entries."
2406
+ #~ msgstr "Reserva-me o direito de editar, eliminar ou não publicar mensagens."
2407
+
2408
+ # @ GWGB
2409
+ #~ msgid "http://zenoweb.nl"
2410
+ #~ msgstr "http://zenoweb.nl"
2411
+
2412
+ # @ GWGB
2413
+ #~ msgid ""
2414
+ #~ "Gwolle Guestbook is not just another guestbook for WordPress. The goal is "
2415
+ #~ "to provide an easy and slim way to integrate a guestbook into your "
2416
+ #~ "WordPress powered site. Don't use your 'comment' section the wrong way - "
2417
+ #~ "install Gwolle-GB and have a real guestbook."
2418
+ #~ msgstr ""
2419
+ #~ "Livro de visita Gwolle não é apenas outro livro de visitas par WordPress. "
2420
+ #~ "A vantagem é fornecer um caminho fácil para integrar um livro de visitas "
2421
+ #~ "ao seu site desenvolvido com Wordpress. Não use sua área de ‘comentários’ "
2422
+ #~ "de maneira errada - instale Gwolle-GB e tenha um livro de visitas "
2423
+ #~ "verdadeiro."
2424
+
2425
+ # @ GWGB
2426
+ #~ msgid "Marcel Pol"
2427
+ #~ msgstr "Marcel Pol"
2428
+
2429
+ # @ GWGB
2430
+ #~ msgid "1.1.7"
2431
+ #~ msgstr "1.1.7"
lang/gwolle-gb-pt_PT.mo ADDED
Binary file
lang/gwolle-gb-pt_PT.po ADDED
@@ -0,0 +1,1896 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Gwolle Guestbook v1.1.7\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2015-02-13 15:37:28+0000\n"
7
+ "Last-Translator: jcpq <mail@fischeris.jose-quintas.com>\n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
+ "X-Generator: CSL v1.x\n"
14
+ "X-Poedit-Language: Portuguese\n"
15
+ "X-Poedit-Country: PORTUGAL\n"
16
+ "X-Poedit-SourceCharset: utf-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
18
+ "X-Poedit-Basepath: ../\n"
19
+ "X-Poedit-Bookmarks: \n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Textdomain-Support: yes"
22
+
23
+ #: actions.php:35
24
+ #: actions.php:36
25
+ #: frontend/widget.php:21
26
+ #: frontend/widget.php:143
27
+ #@ GWGB
28
+ msgid "Guestbook"
29
+ msgstr ""
30
+
31
+ #: actions.php:46
32
+ #: actions.php:47
33
+ #: admin/page-settings.php:383
34
+ #: admin/page-settings.php:470
35
+ #@ GWGB
36
+ msgid "Entries"
37
+ msgstr ""
38
+
39
+ #: actions.php:54
40
+ #@ GWGB
41
+ msgid "Entry editor"
42
+ msgstr ""
43
+
44
+ #: actions.php:54
45
+ #: admin/page-gwolle-gb.php:85
46
+ #@ GWGB
47
+ msgid "New entry"
48
+ msgstr ""
49
+
50
+ #: actions.php:57
51
+ #: actions.php:80
52
+ #: admin/page-settings.php:184
53
+ #@ GWGB
54
+ msgid "Settings"
55
+ msgstr ""
56
+
57
+ #: actions.php:60
58
+ #@ GWGB
59
+ msgid "Import"
60
+ msgstr ""
61
+
62
+ #: actions.php:63
63
+ #@ GWGB
64
+ msgid "Export"
65
+ msgstr ""
66
+
67
+ #: admin/dashboard-widget.php:116
68
+ #: admin/page-entries.php:675
69
+ #: frontend/read.php:204
70
+ #@ GWGB
71
+ msgid "Edit entry"
72
+ msgstr ""
73
+
74
+ #: admin/dashboard-widget.php:116
75
+ #: admin/page-entries.php:675
76
+ #: frontend/read.php:204
77
+ #@ GWGB
78
+ msgid "Edit"
79
+ msgstr "Editar"
80
+
81
+ #: admin/dashboard-widget.php:120
82
+ #: admin/page-editor.php:414
83
+ #: admin/page-entries.php:678
84
+ #@ GWGB
85
+ msgid "Check entry"
86
+ msgstr ""
87
+
88
+ #: admin/dashboard-widget.php:120
89
+ #: admin/page-editor.php:414
90
+ #: admin/page-entries.php:678
91
+ #@ GWGB
92
+ msgid "Check"
93
+ msgstr ""
94
+
95
+ #: admin/dashboard-widget.php:124
96
+ #: admin/page-editor.php:417
97
+ #: admin/page-entries.php:681
98
+ #@ GWGB
99
+ msgid "Uncheck entry"
100
+ msgstr ""
101
+
102
+ #: admin/dashboard-widget.php:124
103
+ #: admin/page-editor.php:417
104
+ #: admin/page-entries.php:681
105
+ #@ GWGB
106
+ msgid "Uncheck"
107
+ msgstr ""
108
+
109
+ #: admin/dashboard-widget.php:128
110
+ #: admin/page-editor.php:420
111
+ #: admin/page-entries.php:684
112
+ #@ GWGB
113
+ msgid "Mark entry as spam."
114
+ msgstr ""
115
+
116
+ #: admin/dashboard-widget.php:128
117
+ #: admin/page-editor.php:363
118
+ #: admin/page-editor.php:420
119
+ #: admin/page-entries.php:422
120
+ #: admin/page-entries.php:684
121
+ #@ GWGB
122
+ msgid "Spam"
123
+ msgstr ""
124
+
125
+ #: admin/dashboard-widget.php:132
126
+ #: admin/page-editor.php:423
127
+ #: admin/page-entries.php:687
128
+ #@ GWGB
129
+ msgid "Mark entry as not-spam."
130
+ msgstr ""
131
+
132
+ #: admin/dashboard-widget.php:132
133
+ #: admin/page-editor.php:423
134
+ #: admin/page-entries.php:687
135
+ #@ GWGB
136
+ msgid "Not spam"
137
+ msgstr ""
138
+
139
+ #: admin/dashboard-widget.php:136
140
+ #: admin/page-editor.php:426
141
+ #: admin/page-entries.php:690
142
+ #@ GWGB
143
+ msgid "Move entry to trash."
144
+ msgstr ""
145
+
146
+ #: admin/dashboard-widget.php:136
147
+ #: admin/page-editor.php:373
148
+ #: admin/page-editor.php:426
149
+ #: admin/page-entries.php:426
150
+ #: admin/page-entries.php:690
151
+ #@ GWGB
152
+ msgid "Trash"
153
+ msgstr ""
154
+
155
+ #: admin/dashboard-widget.php:140
156
+ #: admin/page-editor.php:429
157
+ #: admin/page-entries.php:693
158
+ #@ GWGB
159
+ msgid "Recover entry from trash."
160
+ msgstr ""
161
+
162
+ #: admin/dashboard-widget.php:140
163
+ #: admin/page-editor.php:429
164
+ #: admin/page-entries.php:693
165
+ #@ GWGB
166
+ msgid "Untrash"
167
+ msgstr ""
168
+
169
+ #: admin/dashboard-widget.php:144
170
+ #: admin/page-editor.php:432
171
+ #: admin/page-entries.php:696
172
+ #@ GWGB
173
+ msgid "Please wait..."
174
+ msgstr ""
175
+
176
+ #: admin/dashboard-widget.php:144
177
+ #: admin/page-editor.php:432
178
+ #: admin/page-entries.php:696
179
+ #@ GWGB
180
+ msgid "Wait..."
181
+ msgstr ""
182
+
183
+ #: admin/dashboard-widget.php:155
184
+ #@ GWGB
185
+ msgid "Refresh"
186
+ msgstr ""
187
+
188
+ #: admin/dashboard-widget.php:156
189
+ #@ GWGB
190
+ msgid "View all"
191
+ msgstr ""
192
+
193
+ #: admin/dashboard-widget.php:157
194
+ #@ GWGB
195
+ msgid "View new"
196
+ msgstr ""
197
+
198
+ #: admin/dashboard-widget.php:160
199
+ #@ GWGB
200
+ msgid "No new and unchecked guestbook entries."
201
+ msgstr ""
202
+
203
+ #: admin/dashboard-widget.php:167
204
+ #@ GWGB
205
+ msgid "Guestbook (new entries)"
206
+ msgstr ""
207
+
208
+ #: admin/installSplash.php:14
209
+ #@ GWGB
210
+ msgid "Installation"
211
+ msgstr ""
212
+
213
+ #: admin/installSplash.php:20
214
+ #@ GWGB
215
+ msgid "Welcome!<br>It seems that either you're using this plugin for the first time or you've deleted all settings.<br>However, to use this plugin we have to setup the database tables. Good for you, we've made this as easy as possible.<br>All you've got to do is click on that button below, and that's it."
216
+ msgstr ""
217
+
218
+ #: admin/installSplash.php:26
219
+ #@ GWGB
220
+ msgid "Sure, let's do this!"
221
+ msgstr ""
222
+
223
+ #: admin/installSplash.php:33
224
+ #, php-format
225
+ #@ GWGB
226
+ msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
227
+ msgstr ""
228
+
229
+ #: admin/installSplash.php:35
230
+ #, php-format
231
+ #@ GWGB
232
+ msgid "It looks like there has been an error. <a href=\"%s\">Click here to continue...</a>"
233
+ msgstr ""
234
+
235
+ #: admin/page-editor.php:15
236
+ #: admin/page-entries.php:16
237
+ #: admin/page-export.php:17
238
+ #: admin/page-gwolle-gb.php:278
239
+ #: admin/page-import.php:24
240
+ #: admin/page-settings.php:15
241
+ #@ GWGB
242
+ msgid "Cheatin&#8217; uh?"
243
+ msgstr ""
244
+
245
+ #: admin/page-editor.php:26
246
+ #@ GWGB
247
+ msgid "Edit guestbook entry"
248
+ msgstr ""
249
+
250
+ #: admin/page-editor.php:39
251
+ #@ GWGB
252
+ msgid "Entry could not be found."
253
+ msgstr ""
254
+
255
+ #: admin/page-editor.php:41
256
+ #@ GWGB
257
+ msgid "Guestbook entry (error)"
258
+ msgstr ""
259
+
260
+ #: admin/page-editor.php:44
261
+ #@ GWGB
262
+ msgid "New guestbook entry"
263
+ msgstr ""
264
+
265
+ #: admin/page-editor.php:54
266
+ #@ GWGB
267
+ msgid "Something strange happened."
268
+ msgstr ""
269
+
270
+ #: admin/page-editor.php:82
271
+ #@ GWGB
272
+ msgid "Submitted as Spam to the Akismet service."
273
+ msgstr ""
274
+
275
+ #: admin/page-editor.php:91
276
+ #@ GWGB
277
+ msgid "Submitted as Ham to the Akismet service."
278
+ msgstr ""
279
+
280
+ #: admin/page-editor.php:140
281
+ #: admin/page-gwolle-gb.php:354
282
+ #: admin/page-settings.php:190
283
+ #@ GWGB
284
+ msgid "Changes saved."
285
+ msgstr ""
286
+
287
+ #: admin/page-editor.php:142
288
+ #: admin/page-editor.php:234
289
+ #@ GWGB
290
+ msgid "Error happened during saving."
291
+ msgstr ""
292
+
293
+ #: admin/page-editor.php:146
294
+ #@ GWGB
295
+ msgid "Entry was not changed."
296
+ msgstr ""
297
+
298
+ #: admin/page-editor.php:157
299
+ #@ GWGB
300
+ msgid "Entry removed."
301
+ msgstr ""
302
+
303
+ #: admin/page-editor.php:200
304
+ #@ GWGB
305
+ msgid "Entry has no content, even though that is mandatory."
306
+ msgstr ""
307
+
308
+ #: admin/page-editor.php:232
309
+ #@ GWGB
310
+ msgid "Entry saved."
311
+ msgstr ""
312
+
313
+ #: admin/page-editor.php:238
314
+ #@ GWGB
315
+ msgid "Entry was not saved."
316
+ msgstr ""
317
+
318
+ #: admin/page-editor.php:311
319
+ #: admin/page-editor.php:404
320
+ #: admin/page-editor.php:448
321
+ #: admin/page-editor.php:503
322
+ #: admin/page-editor.php:539
323
+ #: admin/page-editor.php:550
324
+ #: admin/page-editor.php:558
325
+ #: admin/page-export.php:40
326
+ #: admin/page-import.php:314
327
+ #: admin/page-import.php:381
328
+ #: admin/page-import.php:450
329
+ #@ GWGB
330
+ msgid "Click to open or close"
331
+ msgstr ""
332
+
333
+ #: admin/page-editor.php:311
334
+ #@ GWGB
335
+ msgid "Options"
336
+ msgstr ""
337
+
338
+ #: admin/page-editor.php:332
339
+ #@ GWGB
340
+ msgid "This entry is not yet visible."
341
+ msgstr ""
342
+
343
+ #: admin/page-editor.php:336
344
+ #: admin/page-editor.php:341
345
+ #@ GWGB
346
+ msgid "This entry is Visible."
347
+ msgstr ""
348
+
349
+ #: admin/page-editor.php:337
350
+ #: admin/page-editor.php:342
351
+ #@ GWGB
352
+ msgid "This entry is Not Visible."
353
+ msgstr ""
354
+
355
+ #: admin/page-editor.php:353
356
+ #@ GWGB
357
+ msgid "Checked"
358
+ msgstr ""
359
+
360
+ #: admin/page-editor.php:381
361
+ #@ GWGB
362
+ msgid "Remove this entry Permanently."
363
+ msgstr ""
364
+
365
+ #: admin/page-editor.php:392
366
+ #@ GWGB
367
+ msgid "Save"
368
+ msgstr ""
369
+
370
+ #: admin/page-editor.php:404
371
+ #@ GWGB
372
+ msgid "Actions"
373
+ msgstr ""
374
+
375
+ #: admin/page-editor.php:448
376
+ #@ GWGB
377
+ msgid "Details"
378
+ msgstr ""
379
+
380
+ #: admin/page-editor.php:452
381
+ #: admin/page-entries.php:546
382
+ #: admin/page-entries.php:562
383
+ #@ GWGB
384
+ msgid "Author"
385
+ msgstr ""
386
+
387
+ #: admin/page-editor.php:457
388
+ #: admin/page-editor.php:465
389
+ #: admin/page-editor.php:485
390
+ #: admin/page-editor.php:493
391
+ #: functions/function.log.php:164
392
+ #@ GWGB
393
+ msgid "Unknown"
394
+ msgstr ""
395
+
396
+ #: admin/page-editor.php:461
397
+ #@ GWGB
398
+ msgid "E-Mail"
399
+ msgstr ""
400
+
401
+ #: admin/page-editor.php:469
402
+ #: admin/page-editor.php:513
403
+ #@ GWGB
404
+ msgid "Written"
405
+ msgstr ""
406
+
407
+ #: admin/page-editor.php:474
408
+ #@ GWGB
409
+ msgid "Not yet"
410
+ msgstr ""
411
+
412
+ #: admin/page-editor.php:478
413
+ #@ GWGB
414
+ msgid "Author's IP-address"
415
+ msgstr ""
416
+
417
+ #: admin/page-editor.php:481
418
+ #@ GWGB
419
+ msgid "Whois search for this IP"
420
+ msgstr ""
421
+
422
+ #: admin/page-editor.php:489
423
+ #@ GWGB
424
+ msgid "Host"
425
+ msgstr ""
426
+
427
+ #: admin/page-editor.php:503
428
+ #@ GWGB
429
+ msgid "Entry log"
430
+ msgstr ""
431
+
432
+ #: admin/page-editor.php:522
433
+ #@ GWGB
434
+ msgid "No log yet."
435
+ msgstr ""
436
+
437
+ #: admin/page-editor.php:539
438
+ #: frontend/write.php:171
439
+ #@ GWGB
440
+ msgid "Guestbook entry"
441
+ msgstr "Mensagem"
442
+
443
+ #: admin/page-editor.php:544
444
+ #, php-format
445
+ #@ GWGB
446
+ msgid "Line breaks will not be visible to the visitors due to your <a href=\"%s\">settings</a>."
447
+ msgstr ""
448
+
449
+ #: admin/page-editor.php:550
450
+ #: admin/page-settings.php:280
451
+ #: frontend/write.php:157
452
+ #: frontend/write.php:164
453
+ #@ GWGB
454
+ msgid "Homepage"
455
+ msgstr "Website"
456
+
457
+ #: admin/page-editor.php:553
458
+ #@ GWGB
459
+ msgid "Example: <code>http://www.example.com/</code>"
460
+ msgstr ""
461
+
462
+ #: admin/page-editor.php:558
463
+ #: admin/page-export.php:55
464
+ #@ GWGB
465
+ msgid "Origin"
466
+ msgstr ""
467
+
468
+ #: admin/page-entries.php:209
469
+ #@ GWGB
470
+ msgid "entry checked."
471
+ msgstr ""
472
+
473
+ #: admin/page-entries.php:211
474
+ #@ GWGB
475
+ msgid "entries checked."
476
+ msgstr ""
477
+
478
+ #: admin/page-entries.php:213
479
+ #@ GWGB
480
+ msgid "No entries checked."
481
+ msgstr ""
482
+
483
+ #: admin/page-entries.php:217
484
+ #@ GWGB
485
+ msgid "entry unchecked."
486
+ msgstr ""
487
+
488
+ #: admin/page-entries.php:219
489
+ #@ GWGB
490
+ msgid "entries unchecked."
491
+ msgstr ""
492
+
493
+ #: admin/page-entries.php:221
494
+ #@ GWGB
495
+ msgid "No entries unchecked."
496
+ msgstr ""
497
+
498
+ #: admin/page-entries.php:225
499
+ #@ GWGB
500
+ msgid "entry marked as spam and submitted to Akismet as spam (if Akismet was enabled)."
501
+ msgstr ""
502
+
503
+ #: admin/page-entries.php:227
504
+ #@ GWGB
505
+ msgid "entries marked as spam and submitted to Akismet as spam (if Akismet was enabled)."
506
+ msgstr ""
507
+
508
+ #: admin/page-entries.php:229
509
+ #@ GWGB
510
+ msgid "No entries marked as spam."
511
+ msgstr ""
512
+
513
+ #: admin/page-entries.php:233
514
+ #@ GWGB
515
+ msgid "entry marked as not spam and submitted to Akismet as ham (if Akismet was enabled)."
516
+ msgstr ""
517
+
518
+ #: admin/page-entries.php:235
519
+ #@ GWGB
520
+ msgid "entries marked as not spam and submitted to Akismet as ham (if Akismet was enabled)."
521
+ msgstr ""
522
+
523
+ #: admin/page-entries.php:237
524
+ #@ GWGB
525
+ msgid "No entries marked as not spam."
526
+ msgstr ""
527
+
528
+ #: admin/page-entries.php:241
529
+ #@ GWGB
530
+ msgid "entry considered spam and marked as such."
531
+ msgstr ""
532
+
533
+ #: admin/page-entries.php:243
534
+ #@ GWGB
535
+ msgid "entries considered spam and marked as such."
536
+ msgstr ""
537
+
538
+ #: admin/page-entries.php:246
539
+ #@ GWGB
540
+ msgid "entry not considered spam and marked as such."
541
+ msgstr ""
542
+
543
+ #: admin/page-entries.php:248
544
+ #@ GWGB
545
+ msgid "entries not considered spam and marked as such."
546
+ msgstr ""
547
+
548
+ #: admin/page-entries.php:251
549
+ #@ GWGB
550
+ msgid "entry already considered spam and not changed."
551
+ msgstr ""
552
+
553
+ #: admin/page-entries.php:253
554
+ #@ GWGB
555
+ msgid "entries already considered spam and not changed."
556
+ msgstr ""
557
+
558
+ #: admin/page-entries.php:256
559
+ #@ GWGB
560
+ msgid "entry already considered not spam and not changed."
561
+ msgstr ""
562
+
563
+ #: admin/page-entries.php:258
564
+ #@ GWGB
565
+ msgid "entries already considered not spam and not changed."
566
+ msgstr ""
567
+
568
+ #: admin/page-entries.php:262
569
+ #@ GWGB
570
+ msgid "entry moved to trash."
571
+ msgstr ""
572
+
573
+ #: admin/page-entries.php:264
574
+ #@ GWGB
575
+ msgid "entries moved to trash."
576
+ msgstr ""
577
+
578
+ #: admin/page-entries.php:266
579
+ #@ GWGB
580
+ msgid "No entries moved to trash."
581
+ msgstr ""
582
+
583
+ #: admin/page-entries.php:270
584
+ #@ GWGB
585
+ msgid "entry recovered from trash."
586
+ msgstr ""
587
+
588
+ #: admin/page-entries.php:272
589
+ #@ GWGB
590
+ msgid "entries recovered from trash."
591
+ msgstr ""
592
+
593
+ #: admin/page-entries.php:274
594
+ #@ GWGB
595
+ msgid "No entries recovered from trash."
596
+ msgstr ""
597
+
598
+ #: admin/page-entries.php:278
599
+ #@ GWGB
600
+ msgid "entry removed permanently."
601
+ msgstr ""
602
+
603
+ #: admin/page-entries.php:280
604
+ #@ GWGB
605
+ msgid "entries removed permanently."
606
+ msgstr ""
607
+
608
+ #: admin/page-entries.php:282
609
+ #@ GWGB
610
+ msgid "No entries permanently removed."
611
+ msgstr ""
612
+
613
+ #: admin/page-entries.php:314
614
+ #@ GWGB
615
+ msgid "Please activate Akismet if you want to battle spam."
616
+ msgstr ""
617
+
618
+ #: admin/page-entries.php:387
619
+ #@ GWGB
620
+ msgid "Guestbook entries"
621
+ msgstr ""
622
+
623
+ #: admin/page-entries.php:409
624
+ #@ GWGB
625
+ msgid "All"
626
+ msgstr ""
627
+
628
+ #: admin/page-entries.php:414
629
+ #@ GWGB
630
+ msgid "Unlocked"
631
+ msgstr ""
632
+
633
+ #: admin/page-entries.php:418
634
+ #@ GWGB
635
+ msgid "New"
636
+ msgstr ""
637
+
638
+ #: admin/page-entries.php:433
639
+ #@ GWGB
640
+ msgid "Mass edit actions"
641
+ msgstr ""
642
+
643
+ #: admin/page-entries.php:436
644
+ #@ GWGB
645
+ msgid "Recover from trash"
646
+ msgstr ""
647
+
648
+ #: admin/page-entries.php:437
649
+ #: admin/page-entries.php:454
650
+ #@ GWGB
651
+ msgid "Remove permanently"
652
+ msgstr ""
653
+
654
+ #: admin/page-entries.php:440
655
+ #@ GWGB
656
+ msgid "Mark as checked"
657
+ msgstr ""
658
+
659
+ #: admin/page-entries.php:443
660
+ #@ GWGB
661
+ msgid "Mark as not checked"
662
+ msgstr ""
663
+
664
+ #: admin/page-entries.php:446
665
+ #@ GWGB
666
+ msgid "Mark as spam"
667
+ msgstr ""
668
+
669
+ #: admin/page-entries.php:448
670
+ #@ GWGB
671
+ msgid "Mark as not spam"
672
+ msgstr ""
673
+
674
+ #: admin/page-entries.php:450
675
+ #@ GWGB
676
+ msgid "Check with Akismet"
677
+ msgstr ""
678
+
679
+ #: admin/page-entries.php:452
680
+ #@ GWGB
681
+ msgid "Move to trash"
682
+ msgstr ""
683
+
684
+ #: admin/page-entries.php:459
685
+ #@ GWGB
686
+ msgid "Apply"
687
+ msgstr ""
688
+
689
+ #: admin/page-entries.php:471
690
+ #@ GWGB
691
+ msgid "Showing:"
692
+ msgstr ""
693
+
694
+ #: admin/page-entries.php:472
695
+ #@ GWGB
696
+ msgid "of"
697
+ msgstr ""
698
+
699
+ #: admin/page-entries.php:539
700
+ #: admin/page-entries.php:555
701
+ #@ GWGB
702
+ msgid "ID"
703
+ msgstr ""
704
+
705
+ #: admin/page-entries.php:545
706
+ #: admin/page-entries.php:561
707
+ #@ GWGB
708
+ msgid "Date"
709
+ msgstr ""
710
+
711
+ #: admin/page-entries.php:547
712
+ #: admin/page-entries.php:563
713
+ #@ GWGB
714
+ msgid "Entry (excerpt)"
715
+ msgstr ""
716
+
717
+ #: admin/page-entries.php:548
718
+ #: admin/page-entries.php:564
719
+ #@ GWGB
720
+ msgid "Action"
721
+ msgstr ""
722
+
723
+ #: admin/page-entries.php:577
724
+ #@ GWGB
725
+ msgid "No entries found."
726
+ msgstr ""
727
+
728
+ #: admin/page-export.php:27
729
+ #@ GWGB
730
+ msgid "Export guestbook entries."
731
+ msgstr ""
732
+
733
+ #: admin/page-export.php:40
734
+ #@ GWGB
735
+ msgid "Export guestbook entries from Gwolle-GB"
736
+ msgstr ""
737
+
738
+ #: admin/page-export.php:46
739
+ #, php-format
740
+ #@ GWGB
741
+ msgid "%d entries were found and will be exported."
742
+ msgstr ""
743
+
744
+ #: admin/page-export.php:49
745
+ #@ GWGB
746
+ msgid "The exporter will preserve the following data per entry:"
747
+ msgstr ""
748
+
749
+ #: admin/page-export.php:52
750
+ #: admin/page-import.php:348
751
+ #: admin/page-import.php:389
752
+ #: admin/page-settings.php:217
753
+ #: frontend/write.php:115
754
+ #: frontend/write.php:122
755
+ #@ GWGB
756
+ msgid "Name"
757
+ msgstr "Nome"
758
+
759
+ #: admin/page-export.php:53
760
+ #: admin/page-import.php:349
761
+ #: admin/page-import.php:391
762
+ #@ GWGB
763
+ msgid "E-Mail address"
764
+ msgstr ""
765
+
766
+ #: admin/page-export.php:54
767
+ #: admin/page-import.php:350
768
+ #: admin/page-import.php:392
769
+ #@ GWGB
770
+ msgid "URL/Website"
771
+ msgstr ""
772
+
773
+ #: admin/page-export.php:56
774
+ #: admin/page-import.php:351
775
+ #: admin/page-import.php:393
776
+ #@ GWGB
777
+ msgid "Date of the entry"
778
+ msgstr ""
779
+
780
+ #: admin/page-export.php:57
781
+ #: admin/page-import.php:352
782
+ #: admin/page-import.php:394
783
+ #@ GWGB
784
+ msgid "IP address"
785
+ msgstr ""
786
+
787
+ #: admin/page-export.php:58
788
+ #@ GWGB
789
+ msgid "Host address"
790
+ msgstr ""
791
+
792
+ #: admin/page-export.php:59
793
+ #: admin/page-import.php:353
794
+ #: admin/page-import.php:395
795
+ #: admin/page-settings.php:301
796
+ #: admin/page-settings.php:716
797
+ #@ GWGB
798
+ msgid "Message"
799
+ msgstr ""
800
+
801
+ #: admin/page-export.php:60
802
+ #: admin/page-import.php:355
803
+ #@ GWGB
804
+ msgid "\"is checked\" flag"
805
+ msgstr ""
806
+
807
+ #: admin/page-export.php:61
808
+ #: admin/page-import.php:354
809
+ #@ GWGB
810
+ msgid "\"is spam\" flag"
811
+ msgstr ""
812
+
813
+ #: admin/page-export.php:62
814
+ #@ GWGB
815
+ msgid "\"is trash\" flag"
816
+ msgstr ""
817
+
818
+ #: admin/page-export.php:64
819
+ #@ GWGB
820
+ msgid "The exporter does not delete any data, so your data will still be here."
821
+ msgstr ""
822
+
823
+ #: admin/page-export.php:70
824
+ #@ GWGB
825
+ msgid "Export all entries from this website."
826
+ msgstr ""
827
+
828
+ #: admin/page-export.php:74
829
+ #@ GWGB
830
+ msgid "Start export"
831
+ msgstr ""
832
+
833
+ #: admin/page-gwolle-gb.php:34
834
+ #@ GWGB
835
+ msgid "Overview"
836
+ msgstr ""
837
+
838
+ #: admin/page-gwolle-gb.php:48
839
+ #@ GWGB
840
+ msgid "Entry total"
841
+ msgstr ""
842
+
843
+ #: admin/page-gwolle-gb.php:51
844
+ #@ GWGB
845
+ msgid "Entries total"
846
+ msgstr ""
847
+
848
+ #: admin/page-gwolle-gb.php:67
849
+ #@ GWGB
850
+ msgid "Unlocked entry"
851
+ msgstr ""
852
+
853
+ #: admin/page-gwolle-gb.php:69
854
+ #@ GWGB
855
+ msgid "Unlocked entries"
856
+ msgstr ""
857
+
858
+ #: admin/page-gwolle-gb.php:87
859
+ #@ GWGB
860
+ msgid "New entries"
861
+ msgstr ""
862
+
863
+ #: admin/page-gwolle-gb.php:103
864
+ #@ GWGB
865
+ msgid "Spam entry"
866
+ msgstr ""
867
+
868
+ #: admin/page-gwolle-gb.php:105
869
+ #@ GWGB
870
+ msgid "Spam entries"
871
+ msgstr ""
872
+
873
+ #: admin/page-gwolle-gb.php:121
874
+ #@ GWGB
875
+ msgid "Trashed entry"
876
+ msgstr ""
877
+
878
+ #: admin/page-gwolle-gb.php:123
879
+ #@ GWGB
880
+ msgid "Trashed entries"
881
+ msgstr ""
882
+
883
+ #: admin/page-gwolle-gb.php:136
884
+ #@ GWGB
885
+ msgid "Write admin entry"
886
+ msgstr ""
887
+
888
+ #: admin/page-gwolle-gb.php:149
889
+ #@ GWGB
890
+ msgid "Sorry, but the function <code>mail()</code> required to notify you by mail is not enabled in your PHP configuration. You might want to install a WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can contact your hosting provider to change this."
891
+ msgstr ""
892
+
893
+ #: admin/page-gwolle-gb.php:175
894
+ #@ GWGB
895
+ msgid "Send me an e-mail when a new entry has been posted."
896
+ msgstr ""
897
+
898
+ #: admin/page-gwolle-gb.php:177
899
+ #@ GWGB
900
+ msgid "Save setting"
901
+ msgstr ""
902
+
903
+ #: admin/page-gwolle-gb.php:182
904
+ #@ GWGB
905
+ msgid "The following users have subscribed to this service:"
906
+ msgstr ""
907
+
908
+ #: admin/page-gwolle-gb.php:194
909
+ #: functions/function.log.php:173
910
+ #@ GWGB
911
+ msgid "You"
912
+ msgstr ""
913
+
914
+ #: admin/page-gwolle-gb.php:203
915
+ #@ GWGB
916
+ msgid "No subscriber yet"
917
+ msgstr ""
918
+
919
+ #: admin/page-gwolle-gb.php:215
920
+ #@ GWGB
921
+ msgid "Icons by"
922
+ msgstr ""
923
+
924
+ #: admin/page-gwolle-gb.php:223
925
+ #@ GWGB
926
+ msgid "This is how you can get your guestbook displayed on your website:"
927
+ msgstr ""
928
+
929
+ #: admin/page-gwolle-gb.php:225
930
+ #@ GWGB
931
+ msgid "Create a new page."
932
+ msgstr ""
933
+
934
+ #: admin/page-gwolle-gb.php:226
935
+ #@ GWGB
936
+ msgid "Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the content."
937
+ msgstr ""
938
+
939
+ #: admin/page-gwolle-gb.php:227
940
+ #@ GWGB
941
+ msgid "It is probably a good idea to disable comments on that page; otherwise, your visitors might get a little confused."
942
+ msgstr ""
943
+
944
+ #: admin/page-gwolle-gb.php:234
945
+ #@ GWGB
946
+ msgid "These entries will be visible for your visitors:"
947
+ msgstr ""
948
+
949
+ #: admin/page-gwolle-gb.php:236
950
+ #@ GWGB
951
+ msgid "Marked as Checked."
952
+ msgstr ""
953
+
954
+ #: admin/page-gwolle-gb.php:237
955
+ #@ GWGB
956
+ msgid "Not marked as Spam."
957
+ msgstr ""
958
+
959
+ #: admin/page-gwolle-gb.php:238
960
+ #@ GWGB
961
+ msgid "Not marked as Trash."
962
+ msgstr ""
963
+
964
+ #: admin/page-gwolle-gb.php:242
965
+ #@ GWGB
966
+ msgid "The Main Menu counter counts the following entries:"
967
+ msgstr ""
968
+
969
+ #: admin/page-gwolle-gb.php:244
970
+ #@ GWGB
971
+ msgid "Marked as Unchecked (You might want to moderate them)."
972
+ msgstr ""
973
+
974
+ #: admin/page-gwolle-gb.php:245
975
+ #@ GWGB
976
+ msgid "Not marked as Spam (You might want to check them)."
977
+ msgstr ""
978
+
979
+ #: admin/page-gwolle-gb.php:246
980
+ #@ GWGB
981
+ msgid "Not marked as Trash (You decide what goes to the trash)."
982
+ msgstr ""
983
+
984
+ #: admin/page-gwolle-gb.php:255
985
+ #@ GWGB
986
+ msgid "Donate to the EFF."
987
+ msgstr ""
988
+
989
+ #: admin/page-gwolle-gb.php:259
990
+ #@ GWGB
991
+ msgid "The Electronic Frontier Foundation is one of the few organisations that wants to keep the internet a free place."
992
+ msgstr ""
993
+
994
+ #: admin/page-gwolle-gb.php:260
995
+ #@ GWGB
996
+ msgid "Please donate to the EFF."
997
+ msgstr ""
998
+
999
+ #: admin/page-gwolle-gb.php:265
1000
+ #: admin/page-gwolle-gb.php:269
1001
+ #@ GWGB
1002
+ msgid "Donate to the maintainer."
1003
+ msgstr ""
1004
+
1005
+ #: admin/page-gwolle-gb.php:268
1006
+ #@ GWGB
1007
+ msgid "If you rather want to donate to the maintainer of the plugin, you can donate through PayPal."
1008
+ msgstr ""
1009
+
1010
+ #: admin/page-gwolle-gb.php:269
1011
+ #@ GWGB
1012
+ msgid "Donate through PayPal to"
1013
+ msgstr ""
1014
+
1015
+ #: admin/page-gwolle-gb.php:338
1016
+ #@ GWGB
1017
+ msgid "Welcome to the Guestbook!"
1018
+ msgstr ""
1019
+
1020
+ #: admin/page-gwolle-gb.php:339
1021
+ #@ GWGB
1022
+ msgid "E-mail Notifications"
1023
+ msgstr ""
1024
+
1025
+ #: admin/page-gwolle-gb.php:340
1026
+ #@ GWGB
1027
+ msgid "This plugin uses the following scripts/programs/images:"
1028
+ msgstr ""
1029
+
1030
+ #: admin/page-gwolle-gb.php:341
1031
+ #: admin/page-gwolle-gb.php:342
1032
+ #@ GWGB
1033
+ msgid "Help"
1034
+ msgstr ""
1035
+
1036
+ #: admin/page-gwolle-gb.php:343
1037
+ #@ GWGB
1038
+ msgid "Donate"
1039
+ msgstr ""
1040
+
1041
+ #. translators: plugin header field 'Name'
1042
+ #: admin/page-gwolle-gb.php:348
1043
+ #: gwolle-gb.php:0
1044
+ #@ GWGB
1045
+ msgid "Gwolle Guestbook"
1046
+ msgstr ""
1047
+
1048
+ #: admin/page-import.php:88
1049
+ #@ GWGB
1050
+ msgid "I'm sorry, but I wasn't able to import entries from DMSGuestbook successfully."
1051
+ msgstr ""
1052
+
1053
+ #: admin/page-import.php:90
1054
+ #@ GWGB
1055
+ msgid "1 entry imported successfully from DMSGuestbook."
1056
+ msgstr ""
1057
+
1058
+ #: admin/page-import.php:92
1059
+ #, php-format
1060
+ #@ GWGB
1061
+ msgid "%d entries imported successfully from DMSGuestbook."
1062
+ msgstr ""
1063
+
1064
+ #: admin/page-import.php:96
1065
+ #@ GWGB
1066
+ msgid "<strong>Nothing to import.</strong> The guestbook you've chosen does not contain any entries."
1067
+ msgstr ""
1068
+
1069
+ #: admin/page-import.php:101
1070
+ #@ GWGB
1071
+ msgid "I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook."
1072
+ msgstr ""
1073
+
1074
+ #: admin/page-import.php:106
1075
+ #: admin/page-import.php:168
1076
+ #@ GWGB
1077
+ msgid "You haven't chosen a guestbook. Please select one and try again."
1078
+ msgstr ""
1079
+
1080
+ #: admin/page-import.php:151
1081
+ #@ GWGB
1082
+ msgid "I'm sorry, but I wasn't able to import comments from that page successfully."
1083
+ msgstr ""
1084
+
1085
+ #: admin/page-import.php:153
1086
+ #@ GWGB
1087
+ msgid "1 entry imported successfully from WordPress comments."
1088
+ msgstr ""
1089
+
1090
+ #: admin/page-import.php:155
1091
+ #, php-format
1092
+ #@ GWGB
1093
+ msgid "%d entries imported successfully from WordPress comments."
1094
+ msgstr ""
1095
+
1096
+ #: admin/page-import.php:159
1097
+ #@ GWGB
1098
+ msgid "<strong>Nothing to import.</strong> The page you've chosen does not have any comments."
1099
+ msgstr ""
1100
+
1101
+ #: admin/page-import.php:163
1102
+ #@ GWGB
1103
+ msgid "You haven't chosen a page. Please select one and try again."
1104
+ msgstr ""
1105
+
1106
+ #: admin/page-import.php:181
1107
+ #@ GWGB
1108
+ msgid "Your filesize is too large."
1109
+ msgstr ""
1110
+
1111
+ #: admin/page-import.php:197
1112
+ #@ GWGB
1113
+ msgid "Invalid file format."
1114
+ msgstr ""
1115
+
1116
+ #: admin/page-import.php:222
1117
+ #@ GWGB
1118
+ msgid "It seems your CSV file is from an export that is not compatible with this version of Gwolle-GB."
1119
+ msgstr ""
1120
+
1121
+ #: admin/page-import.php:231
1122
+ #: admin/page-import.php:260
1123
+ #@ GWGB
1124
+ msgid "Your data seems to be corrupt. Import failed."
1125
+ msgstr ""
1126
+
1127
+ #: admin/page-import.php:269
1128
+ #@ GWGB
1129
+ msgid "I'm sorry, but I wasn't able to import entries from the CSV file."
1130
+ msgstr ""
1131
+
1132
+ #: admin/page-import.php:271
1133
+ #@ GWGB
1134
+ msgid "1 entry imported successfully from the CSV file."
1135
+ msgstr ""
1136
+
1137
+ #: admin/page-import.php:273
1138
+ #, php-format
1139
+ #@ GWGB
1140
+ msgid "%d entries imported successfully from the CSV file."
1141
+ msgstr ""
1142
+
1143
+ #: admin/page-import.php:282
1144
+ #@ GWGB
1145
+ msgid "Your upload triggered the following error:"
1146
+ msgstr ""
1147
+
1148
+ #: admin/page-import.php:295
1149
+ #@ GWGB
1150
+ msgid "Import guestbook entries."
1151
+ msgstr ""
1152
+
1153
+ #: admin/page-import.php:314
1154
+ #@ GWGB
1155
+ msgid "Import guestbook entries from DMSGuestbook"
1156
+ msgstr ""
1157
+
1158
+ #: admin/page-import.php:343
1159
+ #, php-format
1160
+ #@ GWGB
1161
+ msgid "%d entries were found and will be imported."
1162
+ msgstr ""
1163
+
1164
+ #: admin/page-import.php:346
1165
+ #: admin/page-import.php:387
1166
+ #@ GWGB
1167
+ msgid "The importer will preserve the following data per entry:"
1168
+ msgstr ""
1169
+
1170
+ #: admin/page-import.php:357
1171
+ #: admin/page-import.php:398
1172
+ #@ GWGB
1173
+ msgid "However, data such as HTML formatting is not supported by Gwolle-GB and <strong>will not</strong> be imported."
1174
+ msgstr ""
1175
+
1176
+ #: admin/page-import.php:359
1177
+ #: admin/page-import.php:400
1178
+ #@ GWGB
1179
+ msgid "The importer does not delete any data, so you can go back whenever you want."
1180
+ msgstr ""
1181
+
1182
+ #: admin/page-import.php:365
1183
+ #@ GWGB
1184
+ msgid "Import all entries from DMSGuestbook."
1185
+ msgstr ""
1186
+
1187
+ #: admin/page-import.php:369
1188
+ #: admin/page-import.php:442
1189
+ #: admin/page-import.php:461
1190
+ #@ GWGB
1191
+ msgid "Start import"
1192
+ msgstr ""
1193
+
1194
+ #: admin/page-import.php:372
1195
+ #@ GWGB
1196
+ msgid "DMSGuestbook was not found."
1197
+ msgstr ""
1198
+
1199
+ #: admin/page-import.php:381
1200
+ #@ GWGB
1201
+ msgid "Import guestbook entries from WordPress comments"
1202
+ msgstr ""
1203
+
1204
+ #: admin/page-import.php:390
1205
+ #@ GWGB
1206
+ msgid "User ID"
1207
+ msgstr ""
1208
+
1209
+ #: admin/page-import.php:396
1210
+ #@ GWGB
1211
+ msgid "\"approved\" status"
1212
+ msgstr ""
1213
+
1214
+ #: admin/page-import.php:403
1215
+ #@ GWGB
1216
+ msgid "Select a page to import the comments from:"
1217
+ msgstr ""
1218
+
1219
+ #: admin/page-import.php:405
1220
+ #@ GWGB
1221
+ msgid "Select"
1222
+ msgstr ""
1223
+
1224
+ #: admin/page-import.php:421
1225
+ #@ GWGB
1226
+ msgid "No Comments"
1227
+ msgstr ""
1228
+
1229
+ #: admin/page-import.php:423
1230
+ #@ GWGB
1231
+ msgid " Comments"
1232
+ msgstr ""
1233
+
1234
+ #: admin/page-import.php:425
1235
+ #@ GWGB
1236
+ msgid "1 Comment"
1237
+ msgstr ""
1238
+
1239
+ #: admin/page-import.php:438
1240
+ #@ GWGB
1241
+ msgid "Import all entries from this page."
1242
+ msgstr ""
1243
+
1244
+ #: admin/page-import.php:450
1245
+ #@ GWGB
1246
+ msgid "Import guestbook entries from Gwolle-GB"
1247
+ msgstr ""
1248
+
1249
+ #: admin/page-import.php:456
1250
+ #@ GWGB
1251
+ msgid "Select a CSV file with exported entries to import again:"
1252
+ msgstr ""
1253
+
1254
+ #: admin/page-settings.php:197
1255
+ #@ GWGB
1256
+ msgid "Form"
1257
+ msgstr ""
1258
+
1259
+ #: admin/page-settings.php:198
1260
+ #@ GWGB
1261
+ msgid "Reading"
1262
+ msgstr ""
1263
+
1264
+ #: admin/page-settings.php:199
1265
+ #@ GWGB
1266
+ msgid "Admin"
1267
+ msgstr ""
1268
+
1269
+ #: admin/page-settings.php:200
1270
+ #: frontend/write.php:195
1271
+ #: frontend/write.php:221
1272
+ #@ GWGB
1273
+ msgid "Anti-spam"
1274
+ msgstr ""
1275
+
1276
+ #: admin/page-settings.php:201
1277
+ #@ GWGB
1278
+ msgid "E-mail"
1279
+ msgstr ""
1280
+
1281
+ #: admin/page-settings.php:202
1282
+ #: admin/page-settings.php:731
1283
+ #@ GWGB
1284
+ msgid "Uninstall"
1285
+ msgstr ""
1286
+
1287
+ #: admin/page-settings.php:208
1288
+ #@ GWGB
1289
+ msgid "Configure the form that is shown to visitors."
1290
+ msgstr ""
1291
+
1292
+ #: admin/page-settings.php:224
1293
+ #: admin/page-settings.php:245
1294
+ #: admin/page-settings.php:266
1295
+ #: admin/page-settings.php:287
1296
+ #: admin/page-settings.php:308
1297
+ #: admin/page-settings.php:329
1298
+ #: admin/page-settings.php:345
1299
+ #@ GWGB
1300
+ msgid "Enabled"
1301
+ msgstr ""
1302
+
1303
+ #: admin/page-settings.php:232
1304
+ #: admin/page-settings.php:253
1305
+ #: admin/page-settings.php:274
1306
+ #: admin/page-settings.php:295
1307
+ #: admin/page-settings.php:316
1308
+ #@ GWGB
1309
+ msgid "Mandatory"
1310
+ msgstr ""
1311
+
1312
+ #: admin/page-settings.php:238
1313
+ #: frontend/write.php:129
1314
+ #: frontend/write.php:136
1315
+ #@ GWGB
1316
+ msgid "City"
1317
+ msgstr "Localidade"
1318
+
1319
+ #: admin/page-settings.php:259
1320
+ #: frontend/write.php:143
1321
+ #: frontend/write.php:150
1322
+ #@ GWGB
1323
+ msgid "Email"
1324
+ msgstr ""
1325
+
1326
+ #: admin/page-settings.php:322
1327
+ #@ GWGB
1328
+ msgid "Custom Anti-spam"
1329
+ msgstr ""
1330
+
1331
+ #: admin/page-settings.php:332
1332
+ #: admin/page-settings.php:348
1333
+ #@ GWGB
1334
+ msgid "When enabled it is mandatory."
1335
+ msgstr ""
1336
+
1337
+ #: admin/page-settings.php:338
1338
+ #: admin/page-settings.php:751
1339
+ #@ GWGB
1340
+ msgid "reCAPTCHA"
1341
+ msgstr ""
1342
+
1343
+ #: admin/page-settings.php:354
1344
+ #: admin/page-settings.php:441
1345
+ #: admin/page-settings.php:497
1346
+ #: admin/page-settings.php:630
1347
+ #: admin/page-settings.php:695
1348
+ #@ GWGB
1349
+ msgid "Save settings"
1350
+ msgstr ""
1351
+
1352
+ #: admin/page-settings.php:373
1353
+ #@ GWGB
1354
+ msgid "Entries per page on the frontend"
1355
+ msgstr ""
1356
+
1357
+ #: admin/page-settings.php:388
1358
+ #@ GWGB
1359
+ msgid "Number of entries shown on the frontend."
1360
+ msgstr ""
1361
+
1362
+ #: admin/page-settings.php:394
1363
+ #@ GWGB
1364
+ msgid "Line breaks"
1365
+ msgstr ""
1366
+
1367
+ #: admin/page-settings.php:401
1368
+ #@ GWGB
1369
+ msgid "Show line breaks."
1370
+ msgstr ""
1371
+
1372
+ #: admin/page-settings.php:403
1373
+ #@ GWGB
1374
+ msgid "Show line breaks as the entry authors entered them. (May result in very long entries. Is turned off by default.)"
1375
+ msgstr ""
1376
+
1377
+ #: admin/page-settings.php:409
1378
+ #@ GWGB
1379
+ msgid "Smileys"
1380
+ msgstr ""
1381
+
1382
+ #: admin/page-settings.php:416
1383
+ #@ GWGB
1384
+ msgid "Display smileys as images."
1385
+ msgstr ""
1386
+
1387
+ #: admin/page-settings.php:418
1388
+ #, php-format
1389
+ #@ GWGB
1390
+ msgid "Replaces smileys in entries like :) with their image %s. Uses the WP smiley replacer, so check on that one if you'd like to add new/more smileys."
1391
+ msgstr ""
1392
+
1393
+ #: admin/page-settings.php:424
1394
+ #@ GWGB
1395
+ msgid "Links"
1396
+ msgstr ""
1397
+
1398
+ #: admin/page-settings.php:431
1399
+ #@ GWGB
1400
+ msgid "Link authors' name to their website."
1401
+ msgstr ""
1402
+
1403
+ #: admin/page-settings.php:433
1404
+ #@ GWGB
1405
+ msgid "The author of an entry can set his/her website. If this setting is checked, his/her name will be a link to that website."
1406
+ msgstr ""
1407
+
1408
+ #: admin/page-settings.php:460
1409
+ #@ GWGB
1410
+ msgid "Entries per page in the admin"
1411
+ msgstr ""
1412
+
1413
+ #: admin/page-settings.php:475
1414
+ #@ GWGB
1415
+ msgid "Number of entries shown in the admin."
1416
+ msgstr ""
1417
+
1418
+ #: admin/page-settings.php:481
1419
+ #@ GWGB
1420
+ msgid "Entry icons"
1421
+ msgstr ""
1422
+
1423
+ #: admin/page-settings.php:487
1424
+ #@ GWGB
1425
+ msgid "Show entry icons"
1426
+ msgstr ""
1427
+
1428
+ #: admin/page-settings.php:489
1429
+ #@ GWGB
1430
+ msgid "These icons are shown in every entry row of the admin list, so that you know its status (checked, spam and trash)."
1431
+ msgstr ""
1432
+
1433
+ #: admin/page-settings.php:516
1434
+ #@ GWGB
1435
+ msgid "Moderate Guestbook"
1436
+ msgstr ""
1437
+
1438
+ #: admin/page-settings.php:524
1439
+ #@ GWGB
1440
+ msgid "Moderate entries before publishing them."
1441
+ msgstr ""
1442
+
1443
+ #: admin/page-settings.php:528
1444
+ #@ GWGB
1445
+ msgid "New entries have to be unlocked by a moderator before they are visible to the public."
1446
+ msgstr ""
1447
+
1448
+ #: admin/page-settings.php:530
1449
+ #@ GWGB
1450
+ msgid "It is recommended that you turn this on, because you are responsible for the content on your website."
1451
+ msgstr ""
1452
+
1453
+ #: admin/page-settings.php:541
1454
+ #@ GWGB
1455
+ msgid "Learn more about Akismet..."
1456
+ msgstr ""
1457
+
1458
+ #: admin/page-settings.php:541
1459
+ #: admin/page-settings.php:599
1460
+ #@ GWGB
1461
+ msgid "What's that?"
1462
+ msgstr ""
1463
+
1464
+ #: admin/page-settings.php:551
1465
+ #@ GWGB
1466
+ msgid "Akismet helps you to fight spam. It's free and easy to install. Download and install it today to stop spam in your guestbook."
1467
+ msgstr ""
1468
+
1469
+ #: admin/page-settings.php:554
1470
+ #, php-format
1471
+ #@ GWGB
1472
+ msgid "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1473
+ msgstr ""
1474
+
1475
+ #: admin/page-settings.php:563
1476
+ #@ GWGB
1477
+ msgid "Use Akismet"
1478
+ msgstr ""
1479
+
1480
+ #: admin/page-settings.php:565
1481
+ #@ GWGB
1482
+ msgid "The WordPress API key has been found, so you can start using Akismet right now."
1483
+ msgstr ""
1484
+
1485
+ #: admin/page-settings.php:577
1486
+ #@ GWGB
1487
+ msgid "Custom Anti-Spam Security Question"
1488
+ msgstr ""
1489
+
1490
+ #: admin/page-settings.php:580
1491
+ #@ GWGB
1492
+ msgid "12 + six"
1493
+ msgstr ""
1494
+
1495
+ #: admin/page-settings.php:581
1496
+ #@ GWGB
1497
+ msgid "Custom security question to battle spam."
1498
+ msgstr ""
1499
+
1500
+ #: admin/page-settings.php:583
1501
+ #@ GWGB
1502
+ msgid "18"
1503
+ msgstr ""
1504
+
1505
+ #: admin/page-settings.php:584
1506
+ #@ GWGB
1507
+ msgid "The answer to your security question."
1508
+ msgstr ""
1509
+
1510
+ #: admin/page-settings.php:586
1511
+ #@ GWGB
1512
+ msgid "You can ask your visitors to answer a custom security question, so only real people can post an entry."
1513
+ msgstr ""
1514
+
1515
+ #: admin/page-settings.php:599
1516
+ #@ GWGB
1517
+ msgid "Learn more about reCAPTCHA..."
1518
+ msgstr ""
1519
+
1520
+ #: admin/page-settings.php:610
1521
+ #@ GWGB
1522
+ msgid "<strong>Site (Public)</strong> key of your reCAPTCHA account"
1523
+ msgstr ""
1524
+
1525
+ #: admin/page-settings.php:613
1526
+ #@ GWGB
1527
+ msgid "<strong>Secret</strong> key of your reCAPTCHA account"
1528
+ msgstr ""
1529
+
1530
+ #: admin/page-settings.php:615
1531
+ #@ GWGB
1532
+ msgid "The keys can be found at your"
1533
+ msgstr ""
1534
+
1535
+ #: admin/page-settings.php:615
1536
+ #@ GWGB
1537
+ msgid "Go to my reCAPTCHA sites..."
1538
+ msgstr ""
1539
+
1540
+ #: admin/page-settings.php:615
1541
+ #@ GWGB
1542
+ msgid "reCAPTCHA sites overview"
1543
+ msgstr ""
1544
+
1545
+ #: admin/page-settings.php:619
1546
+ #@ GWGB
1547
+ msgid "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in your theme or another plugin. The reCAPTCHA library in Gwolle-GB will not be loaded, and the found one will be used instead. This might give unexpected results."
1548
+ msgstr ""
1549
+
1550
+ #: admin/page-settings.php:621
1551
+ #@ GWGB
1552
+ msgid "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in your theme or another plugin. However, this is an old and incompatible version, so reCAPTCHA will not be used for Gwolle-GB."
1553
+ msgstr ""
1554
+
1555
+ #: admin/page-settings.php:649
1556
+ #@ GWGB
1557
+ msgid "Admin mail content"
1558
+ msgstr ""
1559
+
1560
+ #: admin/page-settings.php:654
1561
+ #: frontend/posthandling.php:308
1562
+ #, php-format
1563
+ #@ GWGB
1564
+ msgid ""
1565
+ "Hello,\n"
1566
+ "\n"
1567
+ "There is a new guestbook entry at '%blog_name%'.\n"
1568
+ "You can check it at %entry_management_url%.\n"
1569
+ "\n"
1570
+ "Have a nice day!\n"
1571
+ "Your Gwolle-GB-Mailer"
1572
+ msgstr ""
1573
+
1574
+ #: admin/page-settings.php:661
1575
+ #@ GWGB
1576
+ msgid "You can set the content of the mail that a notification subscriber gets on new entries. The following tags are supported:"
1577
+ msgstr ""
1578
+
1579
+ #: admin/page-settings.php:677
1580
+ #@ GWGB
1581
+ msgid "Admin mail from address"
1582
+ msgstr ""
1583
+
1584
+ #: admin/page-settings.php:683
1585
+ #@ GWGB
1586
+ msgid "You can set the email address that is used for the From header of the mail that a notification subscriber gets on new entries."
1587
+ msgstr ""
1588
+
1589
+ #: admin/page-settings.php:685
1590
+ #@ GWGB
1591
+ msgid "By default the main admin address is used from General >> Settings."
1592
+ msgstr ""
1593
+
1594
+ #: admin/page-settings.php:719
1595
+ #@ GWGB
1596
+ msgid "The entries and settings have been removed."
1597
+ msgstr ""
1598
+
1599
+ #: admin/page-settings.php:720
1600
+ #@ GWGB
1601
+ msgid "The plugin is deactivated."
1602
+ msgstr ""
1603
+
1604
+ #: admin/page-settings.php:721
1605
+ #@ GWGB
1606
+ msgid "You can now go to your"
1607
+ msgstr ""
1608
+
1609
+ #: admin/page-settings.php:721
1610
+ #@ GWGB
1611
+ msgid "dashboard."
1612
+ msgstr ""
1613
+
1614
+ #: admin/page-settings.php:733
1615
+ #@ GWGB
1616
+ msgid "Uninstalling means that all database entries are removed (settings and entries)."
1617
+ msgstr ""
1618
+
1619
+ #: admin/page-settings.php:735
1620
+ #@ GWGB
1621
+ msgid "This can <strong>not</strong> be undone."
1622
+ msgstr ""
1623
+
1624
+ #: admin/page-settings.php:742
1625
+ #@ GWGB
1626
+ msgid "Confirm"
1627
+ msgstr ""
1628
+
1629
+ #: admin/page-settings.php:745
1630
+ #@ GWGB
1631
+ msgid "Yes, I'm absolutely sure of this. Proceed!"
1632
+ msgstr ""
1633
+
1634
+ #: admin/page-settings.php:754
1635
+ #@ GWGB
1636
+ msgid "Also delete the reCAPTCHA keys"
1637
+ msgstr ""
1638
+
1639
+ #: admin/page-settings.php:762
1640
+ #@ GWGB
1641
+ msgid "Uninstall &raquo;"
1642
+ msgstr ""
1643
+
1644
+ #: frontend/posthandling.php:194
1645
+ #: frontend/posthandling.php:209
1646
+ #@ GWGB
1647
+ msgid "There were errors submitting your guestbook entry."
1648
+ msgstr ""
1649
+
1650
+ #: frontend/posthandling.php:261
1651
+ #@ GWGB
1652
+ msgid "Double post: An entry with the data you entered has already been saved."
1653
+ msgstr ""
1654
+
1655
+ #: frontend/posthandling.php:277
1656
+ #@ GWGB
1657
+ msgid "Thank you for your entry."
1658
+ msgstr "Obrigado pela sua mensagem."
1659
+
1660
+ #: frontend/posthandling.php:279
1661
+ #@ GWGB
1662
+ msgid "We will review it and unlock it in a short while."
1663
+ msgstr ""
1664
+
1665
+ #: frontend/posthandling.php:313
1666
+ #@ GWGB
1667
+ msgid "New Guestbook Entry"
1668
+ msgstr ""
1669
+
1670
+ #: frontend/read.php:79
1671
+ #@ GWGB
1672
+ msgid "Previous page"
1673
+ msgstr ""
1674
+
1675
+ #: frontend/read.php:92
1676
+ #: frontend/read.php:100
1677
+ #: frontend/read.php:106
1678
+ #: frontend/read.php:121
1679
+ #: frontend/read.php:132
1680
+ #@ GWGB
1681
+ msgid "Page"
1682
+ msgstr ""
1683
+
1684
+ #: frontend/read.php:103
1685
+ #: frontend/read.php:133
1686
+ #@ GWGB
1687
+ msgid "Next page"
1688
+ msgstr ""
1689
+
1690
+ #: frontend/read.php:144
1691
+ #@ GWGB
1692
+ msgid "(no entries yet)"
1693
+ msgstr ""
1694
+
1695
+ #: frontend/read.php:180
1696
+ #@ GWGB
1697
+ msgid "from"
1698
+ msgstr "desde"
1699
+
1700
+ #: frontend/read.php:184
1701
+ #@ GWGB
1702
+ msgid "wrote at"
1703
+ msgstr "escrito em"
1704
+
1705
+ #: frontend/widget.php:12
1706
+ #@ GWGB
1707
+ msgid "Displays the recent guestbook entries."
1708
+ msgstr ""
1709
+
1710
+ #: frontend/widget.php:30
1711
+ #: frontend/widget.php:147
1712
+ #@ GWGB
1713
+ msgid "Visit guestbook"
1714
+ msgstr ""
1715
+
1716
+ #: frontend/widget.php:112
1717
+ #@ GWGB
1718
+ msgid "Click here to get to the guestbook."
1719
+ msgstr ""
1720
+
1721
+ #: frontend/widget.php:161
1722
+ #@ GWGB
1723
+ msgid "Title:"
1724
+ msgstr ""
1725
+
1726
+ #: frontend/widget.php:167
1727
+ #@ GWGB
1728
+ msgid "Number of entries:"
1729
+ msgstr ""
1730
+
1731
+ #: frontend/widget.php:183
1732
+ #@ GWGB
1733
+ msgid "Best entries to show:"
1734
+ msgstr ""
1735
+
1736
+ #: frontend/widget.php:185
1737
+ #@ GWGB
1738
+ msgid "List of entry_id's, comma-separated"
1739
+ msgstr ""
1740
+
1741
+ #: frontend/widget.php:189
1742
+ #@ GWGB
1743
+ msgid "Number of words for each entry:"
1744
+ msgstr ""
1745
+
1746
+ #: frontend/widget.php:205
1747
+ #@ GWGB
1748
+ msgid "Link text:"
1749
+ msgstr ""
1750
+
1751
+ #: frontend/widget.php:211
1752
+ #@ GWGB
1753
+ msgid "Select the page of the guestbook:"
1754
+ msgstr ""
1755
+
1756
+ #: frontend/widget.php:213
1757
+ #@ GWGB
1758
+ msgid "Select page"
1759
+ msgstr ""
1760
+
1761
+ #: frontend/write.php:97
1762
+ #@ GWGB
1763
+ msgid "Write a new entry."
1764
+ msgstr "Escreve uma nova mensagem."
1765
+
1766
+ #: frontend/write.php:110
1767
+ #@ GWGB
1768
+ msgid "Write a new entry for the Guestbook"
1769
+ msgstr "Escreve a tua mensagem para o livro de visitas"
1770
+
1771
+ #: frontend/write.php:201
1772
+ #@ GWGB
1773
+ msgid "Answer"
1774
+ msgstr "Resposta"
1775
+
1776
+ #: frontend/write.php:202
1777
+ #@ GWGB
1778
+ msgid "Question:"
1779
+ msgstr ""
1780
+
1781
+ #: frontend/write.php:241
1782
+ #@ GWGB
1783
+ msgid "Submit"
1784
+ msgstr "Enviar"
1785
+
1786
+ #: frontend/write.php:246
1787
+ #@ GWGB
1788
+ msgid "Fields marked with * are obligatory."
1789
+ msgstr "Campos marcados com * são de preenchimento obrigatório."
1790
+
1791
+ #: frontend/write.php:249
1792
+ #@ GWGB
1793
+ msgid "The E-mail address wil not be published."
1794
+ msgstr "O endereço de E-mail não será publicado."
1795
+
1796
+ #: frontend/write.php:252
1797
+ #, php-format
1798
+ #@ GWGB
1799
+ msgid "For security reasons we save the ip address <span id=\"gwolle_gb_ip\">%s</span>."
1800
+ msgstr "Por questões de segurança gravamos o seguinte endereço de ip <span id=\"gwolle_gb_ip\">%s</span>."
1801
+
1802
+ #: frontend/write.php:257
1803
+ #@ GWGB
1804
+ msgid "Your entry will be visible in the guestbook after we reviewed it."
1805
+ msgstr "A tua mensagem estará visível no livro de visitas após ser revista."
1806
+
1807
+ #: frontend/write.php:260
1808
+ #@ GWGB
1809
+ msgid "We reserve our right to edit, delete, or not publish entries."
1810
+ msgstr "Reserva-me o direito de editar, eliminar ou não publicar mensagens."
1811
+
1812
+ #: functions/function.log.php:94
1813
+ #@ GWGB
1814
+ msgid "Entry has been locked."
1815
+ msgstr ""
1816
+
1817
+ #: functions/function.log.php:95
1818
+ #@ GWGB
1819
+ msgid "Entry has been checked."
1820
+ msgstr ""
1821
+
1822
+ #: functions/function.log.php:96
1823
+ #@ GWGB
1824
+ msgid "Entry marked as spam."
1825
+ msgstr ""
1826
+
1827
+ #: functions/function.log.php:97
1828
+ #@ GWGB
1829
+ msgid "Entry marked as not spam."
1830
+ msgstr ""
1831
+
1832
+ #: functions/function.log.php:98
1833
+ #@ GWGB
1834
+ msgid "Entry has been edited."
1835
+ msgstr ""
1836
+
1837
+ #: functions/function.log.php:99
1838
+ #@ GWGB
1839
+ msgid "Imported from DMSGuestbook"
1840
+ msgstr ""
1841
+
1842
+ #: functions/function.log.php:100
1843
+ #@ GWGB
1844
+ msgid "Imported from WordPress comments"
1845
+ msgstr ""
1846
+
1847
+ #: functions/function.log.php:101
1848
+ #@ GWGB
1849
+ msgid "Imported from Gwolle-GB"
1850
+ msgstr ""
1851
+
1852
+ #: functions/function.log.php:102
1853
+ #@ GWGB
1854
+ msgid "Exported to CSV file"
1855
+ msgstr ""
1856
+
1857
+ #: functions/function.log.php:103
1858
+ #@ GWGB
1859
+ msgid "Entry has been trashed."
1860
+ msgstr ""
1861
+
1862
+ #: functions/function.log.php:104
1863
+ #@ GWGB
1864
+ msgid "Entry has been untrashed."
1865
+ msgstr ""
1866
+
1867
+ #: functions/function.misc.php:46
1868
+ #@ GWGB
1869
+ msgid "No content to display. This entry is empty."
1870
+ msgstr ""
1871
+
1872
+ #. translators: plugin header field 'PluginURI'
1873
+ #. translators: plugin header field 'AuthorURI'
1874
+ #: gwolle-gb.php:0
1875
+ #@ GWGB
1876
+ msgid "http://zenoweb.nl"
1877
+ msgstr ""
1878
+
1879
+ #. translators: plugin header field 'Description'
1880
+ #: gwolle-gb.php:0
1881
+ #@ GWGB
1882
+ msgid "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-GB and have a real guestbook."
1883
+ msgstr ""
1884
+
1885
+ #. translators: plugin header field 'Author'
1886
+ #: gwolle-gb.php:0
1887
+ #@ GWGB
1888
+ msgid "Marcel Pol"
1889
+ msgstr ""
1890
+
1891
+ #. translators: plugin header field 'Version'
1892
+ #: gwolle-gb.php:0
1893
+ #@ GWGB
1894
+ msgid "1.1.7"
1895
+ msgstr ""
1896
+
lang/gwolle-gb-sk_SK.mo ADDED
Binary file
lang/gwolle-gb-sk_SK.po ADDED
@@ -0,0 +1,2240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: guestbook\n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2015-06-13 14:55+0200\n"
11
+ "PO-Revision-Date: 2015-06-13 15:01+0100\n"
12
+ "Last-Translator: Marcel Pol <marcel@timelord.nl>\n"
13
+ "Language-Team: HONYA K. <foto@honya-k.cz>\n"
14
+ "Language: cs_CZ\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.7.7\n"
19
+ "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
20
+
21
+ #: actions.php:35 actions.php:36 frontend/widget.php:22
22
+ #: frontend/widget.php:188
23
+ msgid "Guestbook"
24
+ msgstr "Návštevná kniha"
25
+
26
+ #: actions.php:46 actions.php:47 admin/tabs/admintab.php:36
27
+ #: admin/tabs/readingtab.php:36
28
+ msgid "Entries"
29
+ msgstr "Záznamy"
30
+
31
+ #. /editor.php
32
+ #: actions.php:54
33
+ msgid "Entry editor"
34
+ msgstr "Editor záznamu"
35
+
36
+ #: actions.php:54 admin/page-gwolle-gb.php:85
37
+ msgid "New entry"
38
+ msgstr "Nový záznam"
39
+
40
+ #. /settings.php
41
+ #: actions.php:57 actions.php:80 admin/page-settings.php:314
42
+ msgid "Settings"
43
+ msgstr "Nastavenia"
44
+
45
+ #. /import.php
46
+ #: actions.php:60
47
+ msgid "Import"
48
+ msgstr "Import"
49
+
50
+ #. /export.php
51
+ #: actions.php:63
52
+ msgid "Export"
53
+ msgstr "Export"
54
+
55
+ #: actions.php:190 actions.php:194 frontend/rss.php:70 frontend/rss.php:73
56
+ #, fuzzy
57
+ msgid "Guestbook Feed"
58
+ msgstr "Návštevná kniha"
59
+
60
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:696
61
+ #: frontend/read.php:236
62
+ msgid "Edit entry"
63
+ msgstr "Upraviť záznam"
64
+
65
+ #: admin/dashboard-widget.php:116 admin/page-entries.php:696
66
+ #: frontend/read.php:236
67
+ msgid "Edit"
68
+ msgstr "Upraviť"
69
+
70
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:425
71
+ #: admin/page-entries.php:699
72
+ msgid "Check entry"
73
+ msgstr "Skontrolovať záznam"
74
+
75
+ #: admin/dashboard-widget.php:120 admin/page-editor.php:425
76
+ #: admin/page-entries.php:699
77
+ msgid "Check"
78
+ msgstr "Označit"
79
+
80
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:428
81
+ #: admin/page-entries.php:702
82
+ msgid "Uncheck entry"
83
+ msgstr "Odznačit záznam"
84
+
85
+ #: admin/dashboard-widget.php:124 admin/page-editor.php:428
86
+ #: admin/page-entries.php:702
87
+ msgid "Uncheck"
88
+ msgstr "Odznačit"
89
+
90
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:431
91
+ #: admin/page-entries.php:705
92
+ msgid "Mark entry as spam."
93
+ msgstr "Označit záznam ako spam"
94
+
95
+ #: admin/dashboard-widget.php:128 admin/page-editor.php:374
96
+ #: admin/page-editor.php:431 admin/page-entries.php:437
97
+ #: admin/page-entries.php:705
98
+ msgid "Spam"
99
+ msgstr "Nevyžiadané"
100
+
101
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:434
102
+ #: admin/page-entries.php:708
103
+ msgid "Mark entry as not-spam."
104
+ msgstr "Označit ako nieje spam"
105
+
106
+ #: admin/dashboard-widget.php:132 admin/page-editor.php:434
107
+ #: admin/page-entries.php:708
108
+ msgid "Not spam"
109
+ msgstr "Nieje spam"
110
+
111
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:437
112
+ #: admin/page-entries.php:711
113
+ msgid "Move entry to trash."
114
+ msgstr "Presunúť záznam do koša"
115
+
116
+ #: admin/dashboard-widget.php:136 admin/page-editor.php:384
117
+ #: admin/page-editor.php:437 admin/page-entries.php:441
118
+ #: admin/page-entries.php:711
119
+ msgid "Trash"
120
+ msgstr "Odstránené"
121
+
122
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:440
123
+ #: admin/page-entries.php:714
124
+ msgid "Recover entry from trash."
125
+ msgstr "Obnoviť záznam z koša."
126
+
127
+ #: admin/dashboard-widget.php:140 admin/page-editor.php:440
128
+ #: admin/page-entries.php:714
129
+ msgid "Untrash"
130
+ msgstr "Obnoviť"
131
+
132
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:443
133
+ #: admin/page-entries.php:717
134
+ msgid "Please wait..."
135
+ msgstr "Prosím počkajte..."
136
+
137
+ #: admin/dashboard-widget.php:144 admin/page-editor.php:443
138
+ #: admin/page-entries.php:717
139
+ msgid "Wait..."
140
+ msgstr "Počkajte..."
141
+
142
+ #: admin/dashboard-widget.php:155
143
+ msgid "Refresh"
144
+ msgstr "Znovu načítať"
145
+
146
+ #: admin/dashboard-widget.php:156
147
+ msgid "View all"
148
+ msgstr "Zobrazit všetko"
149
+
150
+ #: admin/dashboard-widget.php:157
151
+ msgid "View new"
152
+ msgstr "Vidieť nové"
153
+
154
+ #: admin/dashboard-widget.php:160
155
+ msgid "No new and unchecked guestbook entries."
156
+ msgstr "Žiadne nové a neskontrolované záznamy."
157
+
158
+ #: admin/dashboard-widget.php:172
159
+ msgid "Guestbook (new entries)"
160
+ msgstr "Kniha návštev (nové záznamy)"
161
+
162
+ #: admin/installSplash.php:14
163
+ msgid "Installation"
164
+ msgstr "Inštalácia"
165
+
166
+ #: admin/installSplash.php:20
167
+ msgid ""
168
+ "Welcome!<br>It seems that either you're using this plugin for the first time "
169
+ "or you've deleted all settings.<br>However, to use this plugin we have to "
170
+ "setup the database tables. Good for you, we've made this as easy as possible."
171
+ "<br>All you've got to do is click on that button below, and that's it."
172
+ msgstr ""
173
+ "Vitajte! <br> Zdá sa, že buď používate tento plugin poprvý krát, alebo ste "
174
+ "smazali všetky nastavenia. <br> Pokiaľ však chcete používať tento plugin, "
175
+ "musíme nastaviť databázové tabuľky. Dobré pre vás, urobili sme to tak "
176
+ "jednoduché, ako je to možné. <br> Všetko, čo musíte urobiť, je kliknúť na "
177
+ "toto tlačítko nižšie, a to je všetko."
178
+
179
+ #: admin/installSplash.php:26
180
+ msgid "Sure, let's do this!"
181
+ msgstr "Jasné, poďme to spraviť!"
182
+
183
+ #: admin/installSplash.php:33
184
+ #, php-format
185
+ msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
186
+ msgstr ""
187
+ "V poriadku, skončili sme. <a href=\"%s\">Kliknite sem pre pokračovanie...</a>"
188
+
189
+ #: admin/installSplash.php:35
190
+ #, php-format
191
+ msgid ""
192
+ "It looks like there has been an error. <a href=\"%s\">Click here to "
193
+ "continue...</a>"
194
+ msgstr ""
195
+ "Vyzerá to tak, že tam boli chyby. <a href=\"%s\">Kliknite sem pre "
196
+ "pokračovanie...</a>"
197
+
198
+ #: admin/page-editor.php:15 admin/page-entries.php:16 admin/page-export.php:17
199
+ #: admin/page-gwolle-gb.php:278 admin/page-import.php:26
200
+ #: admin/page-settings.php:15 admin/tabs/admintab.php:15
201
+ #: admin/tabs/antispamtab.php:15 admin/tabs/emailtab.php:15
202
+ #: admin/tabs/formtab.php:15 admin/tabs/readingtab.php:15
203
+ #: admin/tabs/uninstalltab.php:18
204
+ msgid "Cheatin&#8217; uh?"
205
+ msgstr "Cheatin&#8217; uh?"
206
+
207
+ #: admin/page-editor.php:32
208
+ msgid "Edit guestbook entry"
209
+ msgstr "Upraviť záznam v knihe návštev"
210
+
211
+ #: admin/page-editor.php:45
212
+ msgid "Entry could not be found."
213
+ msgstr "Záznam nebol nájdený"
214
+
215
+ #: admin/page-editor.php:47
216
+ msgid "Guestbook entry (error)"
217
+ msgstr "Záznam v knihe návštev (Chyba)"
218
+
219
+ #: admin/page-editor.php:50
220
+ msgid "New guestbook entry"
221
+ msgstr "Nový záznam do knihy návštev"
222
+
223
+ #: admin/page-editor.php:60
224
+ msgid "Something strange happened."
225
+ msgstr "Stalo sa niečo zvláštne."
226
+
227
+ #: admin/page-editor.php:88
228
+ msgid "Submitted as Spam to the Akismet service."
229
+ msgstr "Vložené ako spam do služby Akismet"
230
+
231
+ #: admin/page-editor.php:97
232
+ msgid "Submitted as Ham to the Akismet service."
233
+ msgstr "Vložené ako HAM do služby Akismet"
234
+
235
+ #: admin/page-editor.php:148 admin/page-gwolle-gb.php:355
236
+ #: admin/page-settings.php:320
237
+ msgid "Changes saved."
238
+ msgstr "Zmeny uložené"
239
+
240
+ #: admin/page-editor.php:150 admin/page-editor.php:245
241
+ msgid "Error happened during saving."
242
+ msgstr "Stala sa chyba pri ukladaní"
243
+
244
+ #: admin/page-editor.php:154
245
+ msgid "Entry was not changed."
246
+ msgstr "Záznam nebol zmenený"
247
+
248
+ #: admin/page-editor.php:165
249
+ msgid "Entry removed."
250
+ msgstr "Záznam zmazaný."
251
+
252
+ #: admin/page-editor.php:210
253
+ msgid "Entry has no content, even though that is mandatory."
254
+ msgstr "Položka nemá žiadny obsah, aj keď je to povinné."
255
+
256
+ #: admin/page-editor.php:243
257
+ msgid "Entry saved."
258
+ msgstr "Záznam uložený"
259
+
260
+ #: admin/page-editor.php:249
261
+ msgid "Entry was not saved."
262
+ msgstr "Záznam nebol uložený"
263
+
264
+ #: admin/page-editor.php:322 admin/page-editor.php:415
265
+ #: admin/page-editor.php:459 admin/page-editor.php:514
266
+ #: admin/page-editor.php:549 admin/page-editor.php:566
267
+ #: admin/page-editor.php:574 admin/page-export.php:40
268
+ #: admin/page-import.php:338 admin/page-import.php:405
269
+ #: admin/page-import.php:526
270
+ msgid "Click to open or close"
271
+ msgstr "Klikni pre otvorenie alebo zatvorenie"
272
+
273
+ #: admin/page-editor.php:322
274
+ msgid "Options"
275
+ msgstr "Možnosti"
276
+
277
+ #: admin/page-editor.php:343
278
+ msgid "This entry is not yet visible."
279
+ msgstr "Tento záznam ešte nieje viditeľný."
280
+
281
+ #: admin/page-editor.php:347 admin/page-editor.php:352
282
+ msgid "This entry is Visible."
283
+ msgstr "Tento záznam je viditelný"
284
+
285
+ #: admin/page-editor.php:348 admin/page-editor.php:353
286
+ msgid "This entry is Not Visible."
287
+ msgstr "Tento záznam nieje viditelný"
288
+
289
+ #: admin/page-editor.php:364
290
+ msgid "Checked"
291
+ msgstr "Skontrolované."
292
+
293
+ #: admin/page-editor.php:392
294
+ msgid "Remove this entry Permanently."
295
+ msgstr "Trvale odstraňte túto položku."
296
+
297
+ #: admin/page-editor.php:403
298
+ msgid "Save"
299
+ msgstr "Uložiť"
300
+
301
+ #: admin/page-editor.php:415
302
+ msgid "Actions"
303
+ msgstr "Akcie"
304
+
305
+ #: admin/page-editor.php:459
306
+ msgid "Details"
307
+ msgstr "Detaily"
308
+
309
+ #: admin/page-editor.php:463 admin/page-entries.php:567
310
+ #: admin/page-entries.php:583
311
+ msgid "Author"
312
+ msgstr "Text"
313
+
314
+ #: admin/page-editor.php:467 admin/page-editor.php:475
315
+ #: admin/page-editor.php:496 admin/page-editor.php:504
316
+ #: functions/function.log.php:164
317
+ msgid "Unknown"
318
+ msgstr "Neznámy"
319
+
320
+ #: admin/page-editor.php:471
321
+ msgid "E-Mail"
322
+ msgstr "Email"
323
+
324
+ #: admin/page-editor.php:480 admin/page-editor.php:524
325
+ msgid "Written"
326
+ msgstr "Napísal(a)"
327
+
328
+ #: admin/page-editor.php:485
329
+ msgid "Not yet"
330
+ msgstr "Zatiaľ nič"
331
+
332
+ #: admin/page-editor.php:489
333
+ msgid "Author's IP-address"
334
+ msgstr "Autorova IP adresa"
335
+
336
+ #: admin/page-editor.php:492
337
+ msgid "Whois search for this IP"
338
+ msgstr "Hladať IP adresu pomocou Whois"
339
+
340
+ #: admin/page-editor.php:500
341
+ msgid "Host"
342
+ msgstr "Hosť"
343
+
344
+ #: admin/page-editor.php:514
345
+ msgid "Entry log"
346
+ msgstr "Log záznamov"
347
+
348
+ #: admin/page-editor.php:533
349
+ msgid "No log yet."
350
+ msgstr "Žiadne záznamy"
351
+
352
+ #: admin/page-editor.php:549 frontend/write.php:215
353
+ msgid "Guestbook entry"
354
+ msgstr "Text príspevku"
355
+
356
+ #: admin/page-editor.php:554
357
+ #, php-format
358
+ msgid ""
359
+ "Line breaks will not be visible to the visitors due to your <a href=\"%s"
360
+ "\">settings</a>."
361
+ msgstr ""
362
+ "Zalomenia riadkov nebudú pre návštevníkov viditeľné, skontrolujte <a href="
363
+ "\"%s\">nastavenia</a>."
364
+
365
+ #: admin/page-editor.php:566 frontend/write.php:196 frontend/write.php:203
366
+ #: admin/tabs/formtab.php:165
367
+ #, fuzzy
368
+ msgid "Website"
369
+ msgstr "Odkaz na autorovi webové stránky"
370
+
371
+ #: admin/page-editor.php:569
372
+ msgid "Example: <code>http://www.example.com/</code>"
373
+ msgstr "Příklad: <code>http://www.example.com/</code>"
374
+
375
+ #: admin/page-editor.php:574 admin/page-export.php:61
376
+ msgid "Origin"
377
+ msgstr "Mesto"
378
+
379
+ #: admin/page-entries.php:209
380
+ msgid "entry checked."
381
+ msgstr "Záznam skontrolovaný."
382
+
383
+ #: admin/page-entries.php:211
384
+ msgid "entries checked."
385
+ msgstr "Záznamy skontrolované."
386
+
387
+ #: admin/page-entries.php:213
388
+ msgid "No entries checked."
389
+ msgstr "Žiadne záznamy neskontrolované."
390
+
391
+ #: admin/page-entries.php:217
392
+ msgid "entry unchecked."
393
+ msgstr "Záznamy neskontrolované."
394
+
395
+ #: admin/page-entries.php:219
396
+ msgid "entries unchecked."
397
+ msgstr "Záznamy neskontrolované."
398
+
399
+ #: admin/page-entries.php:221
400
+ msgid "No entries unchecked."
401
+ msgstr "Žiadne záznamy neskontrolované."
402
+
403
+ #: admin/page-entries.php:225
404
+ msgid ""
405
+ "entry marked as spam and submitted to Akismet as spam (if Akismet was "
406
+ "enabled)."
407
+ msgstr ""
408
+ "Záznam označený ako spam a pridaný Akismet-U ako spam (pokiaľ bol povolený "
409
+ "Akismet)."
410
+
411
+ #: admin/page-entries.php:227
412
+ msgid ""
413
+ "entries marked as spam and submitted to Akismet as spam (if Akismet was "
414
+ "enabled)."
415
+ msgstr ""
416
+ "Záznamy označené ako spam a pridané Akismet-U ako spam (pokiaľ bol povolený "
417
+ "Akismet)."
418
+
419
+ #: admin/page-entries.php:229
420
+ msgid "No entries marked as spam."
421
+ msgstr "Žiadne položky označené ako SPAM."
422
+
423
+ #: admin/page-entries.php:233
424
+ msgid ""
425
+ "entry marked as not spam and submitted to Akismet as ham (if Akismet was "
426
+ "enabled)."
427
+ msgstr ""
428
+ "Položka označena ako nieje spam a pridaná Akismet-U ako šunka (pokiaľ bol "
429
+ "povolený Akismet)."
430
+
431
+ #: admin/page-entries.php:235
432
+ msgid ""
433
+ "entries marked as not spam and submitted to Akismet as ham (if Akismet was "
434
+ "enabled)."
435
+ msgstr ""
436
+ "Položky označené ako nieje spam a pridané Akismet-U ako šunky (pokiaľ bol "
437
+ "povolený Akismet)."
438
+
439
+ #: admin/page-entries.php:237
440
+ msgid "No entries marked as not spam."
441
+ msgstr "Žiadne záznamy označené ako nieje spam."
442
+
443
+ #: admin/page-entries.php:241
444
+ msgid "entry considered spam and marked as such."
445
+ msgstr "Záznam je považovaný za spam, a je tak aj označený."
446
+
447
+ #: admin/page-entries.php:243
448
+ msgid "entries considered spam and marked as such."
449
+ msgstr "Záznamy sú považované za spam, a ta