Simple History - Version 2.0.29

Version Description

(April 2015) =

  • Added: Introducing Post "Quick Diff" a very simple and efficient way to quickly see whats been changed in a post. With Quick Diff you will in a glance see the difference between the title, permalink, content, publish date, post status, post author, or the template of the post. It's really a super simple and fast way to follow the work of your co-editors.
  • Added: Filter to add custom HTML above and after the context data table. They are named simple_history/log_html_output_details_single/html_before_context_table and simple_history/log_html_output_details_single/html_after_context_table (and yes, I do fancy really long filter names).
  • Added: Filters to control what to output in the data/context details table (the popup you see when you click the time of each event): simple_history/log_html_output_details_table/row_keys_to_show and simple_history/log_html_output_details_table/context_keys_to_show. Also added two usage examples for the filters.
  • Added: Filter simple_history/log_insert_context to control what gets saved to the context table. Example on usage for this is also available in the example file.
  • Added: data attribute data-ip-address-multiple and class SimpleHistoryLogitem--IPAddress-multiple added for events that have more than one IP address detected. Happens when http_x_forwarded_for or similar headers are included in response.
  • Updated: Danish translation updated.
  • Fixed: Images in GitHub readme files are now displayed correctly.
  • Fixed: Readme files to GitHub repositories ending with slash (/) now works correctly too.
  • Fixed: IP Info popup is now again closeable with ESC key or with a click outside it.
  • Fixed: Some enqueued scripts had double slashes in them.
  • Fixed: Make sure URLs from add_query_arg() gets escaped.
  • Fixed: Some other small things.
Download this release

Release Info

Developer eskapism
Plugin Icon 128x128 Simple History
Version 2.0.29
Comparing to
See all releases

Code changes from version 2.0.28 to 2.0.29

css/github-markdown.css ADDED
@@ -0,0 +1,669 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ github-markdown-css from https://github.com/sindresorhus/github-markdown-css
3
+ License: MIT © Sindre Sorhus
4
+ */
5
+
6
+ @font-face {
7
+ font-family: octicons-anchor;
8
+ src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format('woff');
9
+ }
10
+
11
+ .markdown-body {
12
+ -ms-text-size-adjust: 100%;
13
+ -webkit-text-size-adjust: 100%;
14
+ color: #333;
15
+ overflow: hidden;
16
+ font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
17
+ font-size: 16px;
18
+ line-height: 1.6;
19
+ word-wrap: break-word;
20
+ }
21
+
22
+ .markdown-body a {
23
+ background: transparent;
24
+ }
25
+
26
+ .markdown-body a:active,
27
+ .markdown-body a:hover {
28
+ outline: 0;
29
+ }
30
+
31
+ .markdown-body strong {
32
+ font-weight: bold;
33
+ }
34
+
35
+ .markdown-body h1 {
36
+ font-size: 2em;
37
+ margin: 0.67em 0;
38
+ }
39
+
40
+ .markdown-body img {
41
+ border: 0;
42
+ }
43
+
44
+ .markdown-body hr {
45
+ box-sizing: content-box;
46
+ height: 0;
47
+ }
48
+
49
+ .markdown-body pre {
50
+ overflow: auto;
51
+ }
52
+
53
+ .markdown-body code,
54
+ .markdown-body kbd,
55
+ .markdown-body pre {
56
+ font-family: monospace, monospace;
57
+ font-size: 1em;
58
+ }
59
+
60
+ .markdown-body input {
61
+ color: inherit;
62
+ font: inherit;
63
+ margin: 0;
64
+ }
65
+
66
+ .markdown-body html input[disabled] {
67
+ cursor: default;
68
+ }
69
+
70
+ .markdown-body input {
71
+ line-height: normal;
72
+ }
73
+
74
+ .markdown-body input[type="checkbox"] {
75
+ box-sizing: border-box;
76
+ padding: 0;
77
+ }
78
+
79
+ .markdown-body table {
80
+ border-collapse: collapse;
81
+ border-spacing: 0;
82
+ }
83
+
84
+ .markdown-body td,
85
+ .markdown-body th {
86
+ padding: 0;
87
+ }
88
+
89
+ .markdown-body * {
90
+ box-sizing: border-box;
91
+ }
92
+
93
+ .markdown-body input {
94
+ font: 13px/1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
95
+ }
96
+
97
+ .markdown-body a {
98
+ color: #4183c4;
99
+ text-decoration: none;
100
+ }
101
+
102
+ .markdown-body a:hover,
103
+ .markdown-body a:active {
104
+ text-decoration: underline;
105
+ }
106
+
107
+ .markdown-body hr {
108
+ height: 0;
109
+ margin: 15px 0;
110
+ overflow: hidden;
111
+ background: transparent;
112
+ border: 0;
113
+ border-bottom: 1px solid #ddd;
114
+ }
115
+
116
+ .markdown-body hr:before {
117
+ display: table;
118
+ content: "";
119
+ }
120
+
121
+ .markdown-body hr:after {
122
+ display: table;
123
+ clear: both;
124
+ content: "";
125
+ }
126
+
127
+ .markdown-body h1,
128
+ .markdown-body h2,
129
+ .markdown-body h3,
130
+ .markdown-body h4,
131
+ .markdown-body h5,
132
+ .markdown-body h6 {
133
+ margin-top: 15px;
134
+ margin-bottom: 15px;
135
+ line-height: 1.1;
136
+ }
137
+
138
+ .markdown-body h1 {
139
+ font-size: 30px;
140
+ }
141
+
142
+ .markdown-body h2 {
143
+ font-size: 21px;
144
+ }
145
+
146
+ .markdown-body h3 {
147
+ font-size: 16px;
148
+ }
149
+
150
+ .markdown-body h4 {
151
+ font-size: 14px;
152
+ }
153
+
154
+ .markdown-body h5 {
155
+ font-size: 12px;
156
+ }
157
+
158
+ .markdown-body h6 {
159
+ font-size: 11px;
160
+ }
161
+
162
+ .markdown-body blockquote {
163
+ margin: 0;
164
+ }
165
+
166
+ .markdown-body ul,
167
+ .markdown-body ol {
168
+ padding: 0;
169
+ margin-top: 0;
170
+ margin-bottom: 0;
171
+ }
172
+
173
+ .markdown-body ol ol,
174
+ .markdown-body ul ol {
175
+ list-style-type: lower-roman;
176
+ }
177
+
178
+ .markdown-body ul ul ol,
179
+ .markdown-body ul ol ol,
180
+ .markdown-body ol ul ol,
181
+ .markdown-body ol ol ol {
182
+ list-style-type: lower-alpha;
183
+ }
184
+
185
+ .markdown-body dd {
186
+ margin-left: 0;
187
+ }
188
+
189
+ .markdown-body code {
190
+ font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
191
+ font-size: 12px;
192
+ }
193
+
194
+ .markdown-body pre {
195
+ margin-top: 0;
196
+ margin-bottom: 0;
197
+ font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
198
+ }
199
+
200
+ .markdown-body .octicon {
201
+ font: normal normal normal 16px/1 octicons-anchor;
202
+ display: inline-block;
203
+ text-decoration: none;
204
+ text-rendering: auto;
205
+ -webkit-font-smoothing: antialiased;
206
+ -moz-osx-font-smoothing: grayscale;
207
+ -webkit-user-select: none;
208
+ -moz-user-select: none;
209
+ -ms-user-select: none;
210
+ user-select: none;
211
+ }
212
+
213
+ .markdown-body .octicon-link:before {
214
+ content: '\f05c';
215
+ }
216
+
217
+ .markdown-body>*:first-child {
218
+ margin-top: 0 !important;
219
+ }
220
+
221
+ .markdown-body>*:last-child {
222
+ margin-bottom: 0 !important;
223
+ }
224
+
225
+ .markdown-body a:not(:link):not(:visited) {
226
+ color: inherit;
227
+ text-decoration: none;
228
+ }
229
+
230
+ .markdown-body .anchor {
231
+ position: absolute;
232
+ top: 0;
233
+ left: 0;
234
+ display: block;
235
+ padding-right: 6px;
236
+ padding-left: 30px;
237
+ margin-left: -30px;
238
+ }
239
+
240
+ .markdown-body .anchor:focus {
241
+ outline: none;
242
+ }
243
+
244
+ .markdown-body h1,
245
+ .markdown-body h2,
246
+ .markdown-body h3,
247
+ .markdown-body h4,
248
+ .markdown-body h5,
249
+ .markdown-body h6 {
250
+ position: relative;
251
+ margin-top: 1em;
252
+ margin-bottom: 16px;
253
+ font-weight: bold;
254
+ line-height: 1.4;
255
+ }
256
+
257
+ .markdown-body h1 .octicon-link,
258
+ .markdown-body h2 .octicon-link,
259
+ .markdown-body h3 .octicon-link,
260
+ .markdown-body h4 .octicon-link,
261
+ .markdown-body h5 .octicon-link,
262
+ .markdown-body h6 .octicon-link {
263
+ display: none;
264
+ color: #000;
265
+ vertical-align: middle;
266
+ }
267
+
268
+ .markdown-body h1:hover .anchor,
269
+ .markdown-body h2:hover .anchor,
270
+ .markdown-body h3:hover .anchor,
271
+ .markdown-body h4:hover .anchor,
272
+ .markdown-body h5:hover .anchor,
273
+ .markdown-body h6:hover .anchor {
274
+ padding-left: 8px;
275
+ margin-left: -30px;
276
+ text-decoration: none;
277
+ }
278
+
279
+ .markdown-body h1:hover .anchor .octicon-link,
280
+ .markdown-body h2:hover .anchor .octicon-link,
281
+ .markdown-body h3:hover .anchor .octicon-link,
282
+ .markdown-body h4:hover .anchor .octicon-link,
283
+ .markdown-body h5:hover .anchor .octicon-link,
284
+ .markdown-body h6:hover .anchor .octicon-link {
285
+ display: inline-block;
286
+ }
287
+
288
+ .markdown-body h1 {
289
+ padding-bottom: 0.3em;
290
+ font-size: 2.25em;
291
+ line-height: 1.2;
292
+ border-bottom: 1px solid #eee;
293
+ }
294
+
295
+ .markdown-body h1 .anchor {
296
+ line-height: 1;
297
+ }
298
+
299
+ .markdown-body h2 {
300
+ padding-bottom: 0.3em;
301
+ font-size: 1.75em;
302
+ line-height: 1.225;
303
+ border-bottom: 1px solid #eee;
304
+ }
305
+
306
+ .markdown-body h2 .anchor {
307
+ line-height: 1;
308
+ }
309
+
310
+ .markdown-body h3 {
311
+ font-size: 1.5em;
312
+ line-height: 1.43;
313
+ }
314
+
315
+ .markdown-body h3 .anchor {
316
+ line-height: 1.2;
317
+ }
318
+
319
+ .markdown-body h4 {
320
+ font-size: 1.25em;
321
+ }
322
+
323
+ .markdown-body h4 .anchor {
324
+ line-height: 1.2;
325
+ }
326
+
327
+ .markdown-body h5 {
328
+ font-size: 1em;
329
+ }
330
+
331
+ .markdown-body h5 .anchor {
332
+ line-height: 1.1;
333
+ }
334
+
335
+ .markdown-body h6 {
336
+ font-size: 1em;
337
+ color: #777;
338
+ }
339
+
340
+ .markdown-body h6 .anchor {
341
+ line-height: 1.1;
342
+ }
343
+
344
+ .markdown-body p,
345
+ .markdown-body blockquote,
346
+ .markdown-body ul,
347
+ .markdown-body ol,
348
+ .markdown-body dl,
349
+ .markdown-body table,
350
+ .markdown-body pre {
351
+ margin-top: 0;
352
+ margin-bottom: 16px;
353
+ }
354
+
355
+ .markdown-body hr {
356
+ height: 4px;
357
+ padding: 0;
358
+ margin: 16px 0;
359
+ background-color: #e7e7e7;
360
+ border: 0 none;
361
+ }
362
+
363
+ .markdown-body ul,
364
+ .markdown-body ol {
365
+ padding-left: 2em;
366
+ }
367
+
368
+ .markdown-body ul ul,
369
+ .markdown-body ul ol,
370
+ .markdown-body ol ol,
371
+ .markdown-body ol ul {
372
+ margin-top: 0;
373
+ margin-bottom: 0;
374
+ }
375
+
376
+ .markdown-body li>p {
377
+ margin-top: 16px;
378
+ }
379
+
380
+ .markdown-body dl {
381
+ padding: 0;
382
+ }
383
+
384
+ .markdown-body dl dt {
385
+ padding: 0;
386
+ margin-top: 16px;
387
+ font-size: 1em;
388
+ font-style: italic;
389
+ font-weight: bold;
390
+ }
391
+
392
+ .markdown-body dl dd {
393
+ padding: 0 16px;
394
+ margin-bottom: 16px;
395
+ }
396
+
397
+ .markdown-body blockquote {
398
+ padding: 0 15px;
399
+ color: #777;
400
+ border-left: 4px solid #ddd;
401
+ }
402
+
403
+ .markdown-body blockquote>:first-child {
404
+ margin-top: 0;
405
+ }
406
+
407
+ .markdown-body blockquote>:last-child {
408
+ margin-bottom: 0;
409
+ }
410
+
411
+ .markdown-body table {
412
+ display: block;
413
+ width: 100%;
414
+ overflow: auto;
415
+ word-break: normal;
416
+ word-break: keep-all;
417
+ }
418
+
419
+ .markdown-body table th {
420
+ font-weight: bold;
421
+ }
422
+
423
+ .markdown-body table th,
424
+ .markdown-body table td {
425
+ padding: 6px 13px;
426
+ border: 1px solid #ddd;
427
+ }
428
+
429
+ .markdown-body table tr {
430
+ background-color: #fff;
431
+ border-top: 1px solid #ccc;
432
+ }
433
+
434
+ .markdown-body table tr:nth-child(2n) {
435
+ background-color: #f8f8f8;
436
+ }
437
+
438
+ .markdown-body img {
439
+ max-width: 100%;
440
+ box-sizing: border-box;
441
+ }
442
+
443
+ .markdown-body code {
444
+ padding: 0;
445
+ padding-top: 0.2em;
446
+ padding-bottom: 0.2em;
447
+ margin: 0;
448
+ font-size: 85%;
449
+ background-color: rgba(0,0,0,0.04);
450
+ border-radius: 3px;
451
+ }
452
+
453
+ .markdown-body code:before,
454
+ .markdown-body code:after {
455
+ letter-spacing: -0.2em;
456
+ content: "\00a0";
457
+ }
458
+
459
+ .markdown-body pre>code {
460
+ padding: 0;
461
+ margin: 0;
462
+ font-size: 100%;
463
+ word-break: normal;
464
+ white-space: pre;
465
+ background: transparent;
466
+ border: 0;
467
+ }
468
+
469
+ .markdown-body .highlight {
470
+ margin-bottom: 16px;
471
+ }
472
+
473
+ .markdown-body .highlight pre,
474
+ .markdown-body pre {
475
+ padding: 16px;
476
+ overflow: auto;
477
+ font-size: 85%;
478
+ line-height: 1.45;
479
+ background-color: #f7f7f7;
480
+ border-radius: 3px;
481
+ }
482
+
483
+ .markdown-body .highlight pre {
484
+ margin-bottom: 0;
485
+ word-break: normal;
486
+ }
487
+
488
+ .markdown-body pre {
489
+ word-wrap: normal;
490
+ }
491
+
492
+ .markdown-body pre code {
493
+ display: inline;
494
+ max-width: initial;
495
+ padding: 0;
496
+ margin: 0;
497
+ overflow: initial;
498
+ line-height: inherit;
499
+ word-wrap: normal;
500
+ background-color: transparent;
501
+ border: 0;
502
+ }
503
+
504
+ .markdown-body pre code:before,
505
+ .markdown-body pre code:after {
506
+ content: normal;
507
+ }
508
+
509
+ .markdown-body kbd {
510
+ display: inline-block;
511
+ padding: 3px 5px;
512
+ font-size: 11px;
513
+ line-height: 10px;
514
+ color: #555;
515
+ vertical-align: middle;
516
+ background-color: #fcfcfc;
517
+ border: solid 1px #ccc;
518
+ border-bottom-color: #bbb;
519
+ border-radius: 3px;
520
+ box-shadow: inset 0 -1px 0 #bbb;
521
+ }
522
+
523
+ .markdown-body .pl-c {
524
+ color: #969896;
525
+ }
526
+
527
+ .markdown-body .pl-c1,
528
+ .markdown-body .pl-mdh,
529
+ .markdown-body .pl-mm,
530
+ .markdown-body .pl-mp,
531
+ .markdown-body .pl-mr,
532
+ .markdown-body .pl-s1 .pl-v,
533
+ .markdown-body .pl-s3,
534
+ .markdown-body .pl-sc,
535
+ .markdown-body .pl-sv {
536
+ color: #0086b3;
537
+ }
538
+
539
+ .markdown-body .pl-e,
540
+ .markdown-body .pl-en {
541
+ color: #795da3;
542
+ }
543
+
544
+ .markdown-body .pl-s1 .pl-s2,
545
+ .markdown-body .pl-smi,
546
+ .markdown-body .pl-smp,
547
+ .markdown-body .pl-stj,
548
+ .markdown-body .pl-vo,
549
+ .markdown-body .pl-vpf {
550
+ color: #333;
551
+ }
552
+
553
+ .markdown-body .pl-ent {
554
+ color: #63a35c;
555
+ }
556
+
557
+ .markdown-body .pl-k,
558
+ .markdown-body .pl-s,
559
+ .markdown-body .pl-st {
560
+ color: #a71d5d;
561
+ }
562
+
563
+ .markdown-body .pl-pds,
564
+ .markdown-body .pl-s1,
565
+ .markdown-body .pl-s1 .pl-pse .pl-s2,
566
+ .markdown-body .pl-sr,
567
+ .markdown-body .pl-sr .pl-cce,
568
+ .markdown-body .pl-sr .pl-sra,
569
+ .markdown-body .pl-sr .pl-sre,
570
+ .markdown-body .pl-src {
571
+ color: #183691;
572
+ }
573
+
574
+ .markdown-body .pl-v {
575
+ color: #ed6a43;
576
+ }
577
+
578
+ .markdown-body .pl-id {
579
+ color: #b52a1d;
580
+ }
581
+
582
+ .markdown-body .pl-ii {
583
+ background-color: #b52a1d;
584
+ color: #f8f8f8;
585
+ }
586
+
587
+ .markdown-body .pl-sr .pl-cce {
588
+ color: #63a35c;
589
+ font-weight: bold;
590
+ }
591
+
592
+ .markdown-body .pl-ml {
593
+ color: #693a17;
594
+ }
595
+
596
+ .markdown-body .pl-mh,
597
+ .markdown-body .pl-mh .pl-en,
598
+ .markdown-body .pl-ms {
599
+ color: #1d3e81;
600
+ font-weight: bold;
601
+ }
602
+
603
+ .markdown-body .pl-mq {
604
+ color: #008080;
605
+ }
606
+
607
+ .markdown-body .pl-mi {
608
+ color: #333;
609
+ font-style: italic;
610
+ }
611
+
612
+ .markdown-body .pl-mb {
613
+ color: #333;
614
+ font-weight: bold;
615
+ }
616
+
617
+ .markdown-body .pl-md,
618
+ .markdown-body .pl-mdhf {
619
+ background-color: #ffecec;
620
+ color: #bd2c00;
621
+ }
622
+
623
+ .markdown-body .pl-mdht,
624
+ .markdown-body .pl-mi1 {
625
+ background-color: #eaffea;
626
+ color: #55a532;
627
+ }
628
+
629
+ .markdown-body .pl-mdr {
630
+ color: #795da3;
631
+ font-weight: bold;
632
+ }
633
+
634
+ .markdown-body .pl-mo {
635
+ color: #1d3e81;
636
+ }
637
+
638
+ .markdown-body kbd {
639
+ display: inline-block;
640
+ padding: 3px 5px;
641
+ font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
642
+ line-height: 10px;
643
+ color: #555;
644
+ vertical-align: middle;
645
+ background-color: #fcfcfc;
646
+ border: solid 1px #ccc;
647
+ border-bottom-color: #bbb;
648
+ border-radius: 3px;
649
+ box-shadow: inset 0 -1px 0 #bbb;
650
+ }
651
+
652
+ .markdown-body .task-list-item {
653
+ list-style-type: none;
654
+ }
655
+
656
+ .markdown-body .task-list-item+.task-list-item {
657
+ margin-top: 3px;
658
+ }
659
+
660
+ .markdown-body .task-list-item input {
661
+ margin: 0 0.35em 0.25em -1.6em;
662
+ vertical-align: middle;
663
+ }
664
+
665
+ .markdown-body :checked+.radio-label {
666
+ z-index: 1;
667
+ position: relative;
668
+ border-color: #4183c4;
669
+ }
dropins/SimpleHistoryIpInfoDropin.js CHANGED
@@ -68,13 +68,8 @@
68
  return true;
69
  }
70
 
71
- // Make sure variable and properties exist before trying to work on them
72
- if (!e.originalEvent || e.originalEvent.type || e.originalEvent.keyCode) {
73
- return;
74
- }
75
-
76
  // If initiated by keyboard but not esc, then don't close
77
- if (e.originalEvent.type == "keyup" && e.originalEvent.keyCode != 27) {
78
  return;
79
  }
80
 
68
  return true;
69
  }
70
 
 
 
 
 
 
71
  // If initiated by keyboard but not esc, then don't close
72
+ if (e.originalEvent && e.originalEvent.type == "keyup" && e.originalEvent.keyCode && e.originalEvent.keyCode != 27) {
73
  return;
74
  }
75
 
dropins/SimpleHistoryRSSDropin.php CHANGED
@@ -84,7 +84,7 @@ class SimpleHistoryRSSDropin {
84
  add_settings_error( "simple_history_rss_feed_regenerate_secret", "simple_history_rss_feed_regenerate_secret", $msg, "updated" );
85
  set_transient('settings_errors', get_settings_errors(), 30);
86
 
87
- $goback = add_query_arg( 'settings-updated', 'true', wp_get_referer() );
88
  wp_redirect( $goback );
89
  exit;
90
 
@@ -183,18 +183,20 @@ class SimpleHistoryRSSDropin {
183
 
184
  // http://cyber.law.harvard.edu/rss/rss.html#ltguidgtSubelementOfLtitemgt
185
  //$item_guid = home_url() . "?SimpleHistoryGuid=" . $row->id;
186
- $item_guid = add_query_arg("SimpleHistoryGuid", $row->id, home_url());
187
- $item_link = add_query_arg("SimpleHistoryGuid", $row->id, home_url());
188
 
189
  /**
190
- * Filter the guid/link URL used in RSS feed
 
191
  *
192
  * @since 2.0.23
193
  *
194
- * @param string $item_guid
195
  * @param array $row
196
  */
197
  $item_link = apply_filters("simple_history/rss_item_link", $item_link, $row);
 
198
 
199
  $item_title = $this->sh->getLogLevelTranslated( $row->level ) . ": " . wp_kses( $text_output, array() );
200
 
@@ -326,7 +328,7 @@ class SimpleHistoryRSSDropin {
326
  */
327
  function settings_field_rss_regenerate() {
328
 
329
- $update_link = add_query_arg("", "");
330
  $update_link = wp_nonce_url( $update_link, "simple_history_rss_update_secret", "simple_history_rss_secret_regenerate_nonce" );
331
 
332
  echo "<p>";
@@ -342,13 +344,15 @@ class SimpleHistoryRSSDropin {
342
 
343
  /**
344
  * Get the URL to the RSS feed
 
345
  * @return string URL
346
  */
347
  function get_rss_address() {
348
 
349
  $rss_secret = get_option("simple_history_rss_secret");
350
  $rss_address = add_query_arg(array("simple_history_get_rss" => "1", "rss_secret" => $rss_secret), get_bloginfo("url") . "/");
351
- $rss_address = htmlspecialchars($rss_address, ENT_COMPAT, "UTF-8");
 
352
 
353
  return $rss_address;
354
 
84
  add_settings_error( "simple_history_rss_feed_regenerate_secret", "simple_history_rss_feed_regenerate_secret", $msg, "updated" );
85
  set_transient('settings_errors', get_settings_errors(), 30);
86
 
87
+ $goback = esc_url_raw( add_query_arg( 'settings-updated', 'true', wp_get_referer() ) );
88
  wp_redirect( $goback );
89
  exit;
90
 
183
 
184
  // http://cyber.law.harvard.edu/rss/rss.html#ltguidgtSubelementOfLtitemgt
185
  //$item_guid = home_url() . "?SimpleHistoryGuid=" . $row->id;
186
+ $item_guid = esc_url( add_query_arg("SimpleHistoryGuid", $row->id, home_url()) );
187
+ $item_link = esc_url( add_query_arg("SimpleHistoryGuid", $row->id, home_url()) );
188
 
189
  /**
190
+ * Filter the guid/link URL used in RSS feed.
191
+ * Link will be esc_url'ed by simple history, so no need to do that in your filter
192
  *
193
  * @since 2.0.23
194
  *
195
+ * @param string $item_guid link.
196
  * @param array $row
197
  */
198
  $item_link = apply_filters("simple_history/rss_item_link", $item_link, $row);
199
+ $item_link = esc_url($item_link);
200
 
201
  $item_title = $this->sh->getLogLevelTranslated( $row->level ) . ": " . wp_kses( $text_output, array() );
202
 
328
  */
329
  function settings_field_rss_regenerate() {
330
 
331
+ $update_link = esc_url( add_query_arg("", "") );
332
  $update_link = wp_nonce_url( $update_link, "simple_history_rss_update_secret", "simple_history_rss_secret_regenerate_nonce" );
333
 
334
  echo "<p>";
344
 
345
  /**
346
  * Get the URL to the RSS feed
347
+ *
348
  * @return string URL
349
  */
350
  function get_rss_address() {
351
 
352
  $rss_secret = get_option("simple_history_rss_secret");
353
  $rss_address = add_query_arg(array("simple_history_get_rss" => "1", "rss_secret" => $rss_secret), get_bloginfo("url") . "/");
354
+ $rss_address = esc_url( $rss_address );
355
+ // $rss_address = htmlspecialchars($rss_address, ENT_COMPAT, "UTF-8");
356
 
357
  return $rss_address;
358
 
examples/examples.php CHANGED
@@ -16,6 +16,47 @@ define("SIMPLE_HISTORY_LOG_DEBUG", true);
16
  * Some examples of filter usage and so on
17
  */
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  // Allow only the users specified in $allowed_users to show the history page, the history widget on the dashboard, or the history settings page
20
  add_filter("simple_history/show_dashboard_page", "function_show_history_dashboard_or_page");
21
  add_filter("simple_history/show_dashboard_widget", "function_show_history_dashboard_or_page");
16
  * Some examples of filter usage and so on
17
  */
18
 
19
+ // Skip adding things to the context table during logging.
20
+ // Useful if you don't want to add cool and possible super useful info to your logged events.
21
+ // Also nice to have if you want to make sure your database does not grow.
22
+ add_filter("simple_history/log_insert_context", function($context, $data) {
23
+
24
+ unset($context["_user_id"]);
25
+ unset($context["_user_login"]);
26
+ unset($context["_user_email"]);
27
+ unset($context["server_http_user_agent"]);
28
+
29
+ return $context;
30
+
31
+ }, 10, 2);
32
+
33
+ // Hide some columns from the detailed context view popup window
34
+ add_filter("simple_history/log_html_output_details_table/row_keys_to_show", function($logRowKeysToShow, $oneLogRow) {
35
+
36
+ $logRowKeysToShow["id"] = false;
37
+ $logRowKeysToShow["logger"] = false;
38
+ $logRowKeysToShow["level"] = false;
39
+ $logRowKeysToShow["message"] = false;
40
+
41
+ return $logRowKeysToShow;
42
+
43
+ }, 10, 2);
44
+
45
+
46
+ // Hide some more columns from the detailed context view popup window
47
+ add_filter("simple_history/log_html_output_details_table/context_keys_to_show", function($logRowContextKeysToShow, $oneLogRow) {
48
+
49
+ $logRowContextKeysToShow["plugin_slug"] = false;
50
+ $logRowContextKeysToShow["plugin_name"] = false;
51
+ $logRowContextKeysToShow["plugin_title"] = false;
52
+ $logRowContextKeysToShow["plugin_description"] = false;
53
+
54
+ return $logRowContextKeysToShow;
55
+
56
+ }, 10, 2);
57
+
58
+
59
+
60
  // Allow only the users specified in $allowed_users to show the history page, the history widget on the dashboard, or the history settings page
61
  add_filter("simple_history/show_dashboard_page", "function_show_history_dashboard_or_page");
62
  add_filter("simple_history/show_dashboard_widget", "function_show_history_dashboard_or_page");
inc/SimpleHistory.php CHANGED
@@ -10,7 +10,7 @@ class SimpleHistory {
10
  const NAME = "Simple History";
11
 
12
  // Dont use this any more! Will be removed in future versions. Use global SIMPLE_HISTORY_VERSION instead.
13
- const VERSION = "2.0.28";
14
 
15
  /**
16
  * For singleton
@@ -916,8 +916,8 @@ class SimpleHistory {
916
  wp_enqueue_style("simple_history_styles", $plugin_url . "css/styles.css", false, SIMPLE_HISTORY_VERSION);
917
  wp_enqueue_script("simple_history_script", $plugin_url . "js/scripts.js", array("jquery", "backbone", "wp-util"), SIMPLE_HISTORY_VERSION, true);
918
 
919
- wp_enqueue_script("select2", $plugin_url . "/js/select2/select2.min.js", array("jquery"));
920
- wp_enqueue_style("select2", $plugin_url . "/js/select2/select2.css");
921
 
922
  // Translations that we use in JavaScript
923
  wp_localize_script('simple_history_script', 'simple_history_script_vars', array(
@@ -1224,20 +1224,20 @@ $active_tab = isset($_GET["selected-tab"]) ? $_GET["selected-tab"] : "settings";
1224
 
1225
  <h3 class="nav-tab-wrapper">
1226
  <?php
1227
- foreach ($arr_settings_tabs as $one_tab) {
1228
 
1229
- $tab_slug = $one_tab["slug"];
1230
 
1231
- printf(
1232
- '<a href="%3$s" class="nav-tab %4$s">%1$s</a>',
1233
- $one_tab["name"], // 1
1234
- $tab_slug, // 2
1235
- add_query_arg("selected-tab", $tab_slug, $settings_base_url), // 3
1236
- $active_tab == $tab_slug ? "nav-tab-active" : ""// 4
1237
- );
1238
 
1239
- }
1240
- ?>
1241
  </h3>
1242
 
1243
  <?php
@@ -1354,7 +1354,7 @@ foreach ($arr_settings_tabs as $one_tab) {
1354
  add_settings_error("simple_history_rss_feed_regenerate_secret", "simple_history_rss_feed_regenerate_secret", $msg, "updated");
1355
  set_transient('settings_errors', get_settings_errors(), 30);
1356
 
1357
- $goback = add_query_arg('settings-updated', 'true', wp_get_referer());
1358
  wp_redirect($goback);
1359
  exit;
1360
 
@@ -1556,7 +1556,7 @@ foreach ($arr_settings_tabs as $one_tab) {
1556
  */
1557
  function settings_field_clear_log() {
1558
 
1559
- $clear_link = add_query_arg("", "");
1560
  $clear_link = wp_nonce_url($clear_link, "simple_history_clear_log", "simple_history_clear_log_nonce");
1561
  $clear_days = $this->get_clear_history_interval();
1562
 
@@ -1910,7 +1910,16 @@ foreach ($arr_settings_tabs as $one_tab) {
1910
  $data_attrs .= sprintf(' data-row-id="%1$d" ', $oneLogRow->id);
1911
  $data_attrs .= sprintf(' data-occasions-count="%1$d" ', $occasions_count);
1912
  $data_attrs .= sprintf(' data-occasions-id="%1$s" ', esc_attr( $oneLogRow->occasionsID ));
1913
- $data_attrs .= sprintf(' data-ip-address="%1$s" ', esc_attr( $oneLogRow->context["_server_remote_addr"] ) );
 
 
 
 
 
 
 
 
 
1914
  $data_attrs .= sprintf(' data-logger="%1$s" ', esc_attr( $oneLogRow->logger ) );
1915
  $data_attrs .= sprintf(' data-level="%1$s" ', esc_attr( $oneLogRow->level ) );
1916
  $data_attrs .= sprintf(' data-date="%1$s" ', esc_attr( $oneLogRow->date ) );
@@ -1924,6 +1933,8 @@ foreach ($arr_settings_tabs as $one_tab) {
1924
  $more_details_html = "";
1925
  if ( $args["type"] == "single" ) {
1926
 
 
 
1927
  $more_details_html .= sprintf('<h2 class="SimpleHistoryLogitem__moreDetailsHeadline">%1$s</h2>', __("Context data", "simple-history"));
1928
  $more_details_html .= "<p>" . __("This is potentially useful meta data that a logger has saved.", "simple-history") . "</p>";
1929
  $more_details_html .= "<table class='SimpleHistoryLogitem__moreDetailsContext'>";
@@ -1936,7 +1947,35 @@ foreach ($arr_settings_tabs as $one_tab) {
1936
  "Value"
1937
  );
1938
 
1939
- foreach ($oneLogRow as $rowKey => $rowVal) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1940
 
1941
  // skip arrays and objects and such
1942
  if (is_array($rowVal) || is_object($rowVal)) {
@@ -1954,7 +1993,39 @@ foreach ($arr_settings_tabs as $one_tab) {
1954
 
1955
  }
1956
 
1957
- foreach ($oneLogRow->context as $contextKey => $contextVal) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1958
 
1959
  $more_details_html .= sprintf(
1960
  '<tr>
@@ -1969,6 +2040,8 @@ foreach ($arr_settings_tabs as $one_tab) {
1969
 
1970
  $more_details_html .= "</table>";
1971
 
 
 
1972
  $more_details_html = sprintf(
1973
  '<div class="SimpleHistoryLogitem__moreDetails">%1$s</div>',
1974
  $more_details_html
@@ -1984,7 +2057,11 @@ foreach ($arr_settings_tabs as $one_tab) {
1984
  );
1985
 
1986
  if (isset($oneLogRow->initiator) && !empty($oneLogRow->initiator)) {
1987
- $classes[] = "SimpleHistoryLogitem--initiator-" . esc_attr($oneLogRow->initiator);
 
 
 
 
1988
  }
1989
 
1990
  // Always append the log level tag
@@ -2030,7 +2107,7 @@ foreach ($arr_settings_tabs as $one_tab) {
2030
  $oneLogRow->logger, // 7
2031
  $data_attrs, // 8 data attributes
2032
  $more_details_html, // 9
2033
- join(" ", $classes) // 10
2034
  );
2035
 
2036
  // Get the main message row.
@@ -2602,3 +2679,93 @@ function simple_history_add($args) {
2602
  SimpleLogger()->info($message, $context);
2603
 
2604
  } // simple_history_add
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  const NAME = "Simple History";
11
 
12
  // Dont use this any more! Will be removed in future versions. Use global SIMPLE_HISTORY_VERSION instead.
13
+ const VERSION = "2.0.29";
14
 
15
  /**
16
  * For singleton
916
  wp_enqueue_style("simple_history_styles", $plugin_url . "css/styles.css", false, SIMPLE_HISTORY_VERSION);
917
  wp_enqueue_script("simple_history_script", $plugin_url . "js/scripts.js", array("jquery", "backbone", "wp-util"), SIMPLE_HISTORY_VERSION, true);
918
 
919
+ wp_enqueue_script("select2", $plugin_url . "js/select2/select2.min.js", array("jquery"));
920
+ wp_enqueue_style("select2", $plugin_url . "js/select2/select2.css");
921
 
922
  // Translations that we use in JavaScript
923
  wp_localize_script('simple_history_script', 'simple_history_script_vars', array(
1224
 
1225
  <h3 class="nav-tab-wrapper">
1226
  <?php
1227
+ foreach ($arr_settings_tabs as $one_tab) {
1228
 
1229
+ $tab_slug = $one_tab["slug"];
1230
 
1231
+ printf(
1232
+ '<a href="%3$s" class="nav-tab %4$s">%1$s</a>',
1233
+ $one_tab["name"], // 1
1234
+ $tab_slug, // 2
1235
+ esc_url( add_query_arg("selected-tab", $tab_slug, $settings_base_url) ), // 3
1236
+ $active_tab == $tab_slug ? "nav-tab-active" : ""// 4
1237
+ );
1238
 
1239
+ }
1240
+ ?>
1241
  </h3>
1242
 
1243
  <?php
1354
  add_settings_error("simple_history_rss_feed_regenerate_secret", "simple_history_rss_feed_regenerate_secret", $msg, "updated");
1355
  set_transient('settings_errors', get_settings_errors(), 30);
1356
 
1357
+ $goback = esc_url_raw( add_query_arg('settings-updated', 'true', wp_get_referer()) );
1358
  wp_redirect($goback);
1359
  exit;
1360
 
1556
  */
1557
  function settings_field_clear_log() {
1558
 
1559
+ $clear_link = esc_url( add_query_arg("", "") );
1560
  $clear_link = wp_nonce_url($clear_link, "simple_history_clear_log", "simple_history_clear_log_nonce");
1561
  $clear_days = $this->get_clear_history_interval();
1562
 
1910
  $data_attrs .= sprintf(' data-row-id="%1$d" ', $oneLogRow->id);
1911
  $data_attrs .= sprintf(' data-occasions-count="%1$d" ', $occasions_count);
1912
  $data_attrs .= sprintf(' data-occasions-id="%1$s" ', esc_attr( $oneLogRow->occasionsID ));
1913
+
1914
+ if ( isset($oneLogRow->context["_server_remote_addr"]) ) {
1915
+ $data_attrs .= sprintf(' data-ip-address="%1$s" ', esc_attr( $oneLogRow->context["_server_remote_addr"] ) );
1916
+ }
1917
+
1918
+ $arr_found_additional_ip_headers = $this->instantiatedLoggers["SimpleLogger"]["instance"]->get_event_ip_number_headers($oneLogRow);
1919
+ if ( $arr_found_additional_ip_headers ) {
1920
+ $data_attrs .= sprintf(' data-ip-address-multiple="1" ' );
1921
+ }
1922
+
1923
  $data_attrs .= sprintf(' data-logger="%1$s" ', esc_attr( $oneLogRow->logger ) );
1924
  $data_attrs .= sprintf(' data-level="%1$s" ', esc_attr( $oneLogRow->level ) );
1925
  $data_attrs .= sprintf(' data-date="%1$s" ', esc_attr( $oneLogRow->date ) );
1933
  $more_details_html = "";
1934
  if ( $args["type"] == "single" ) {
1935
 
1936
+ $more_details_html = apply_filters("simple_history/log_html_output_details_single/html_before_context_table", $more_details_html, $oneLogRow);
1937
+
1938
  $more_details_html .= sprintf('<h2 class="SimpleHistoryLogitem__moreDetailsHeadline">%1$s</h2>', __("Context data", "simple-history"));
1939
  $more_details_html .= "<p>" . __("This is potentially useful meta data that a logger has saved.", "simple-history") . "</p>";
1940
  $more_details_html .= "<table class='SimpleHistoryLogitem__moreDetailsContext'>";
1947
  "Value"
1948
  );
1949
 
1950
+ $logRowKeysToShow = array_fill_keys( array_keys( (array) $oneLogRow), true);
1951
+
1952
+ /**
1953
+ * Filter what keys to show from oneLogRow
1954
+ *
1955
+ * Array is in format
1956
+ *
1957
+ * Array
1958
+ * (
1959
+ * [id] => 1
1960
+ * [logger] => 1
1961
+ * [level] => 1
1962
+ * ...
1963
+ * )
1964
+ *
1965
+ *
1966
+ * @since 2.0.29
1967
+ *
1968
+ * @param array with keys to show. key to show = key. value = boolean to show or not.
1969
+ * @param object log row to show details from
1970
+ */
1971
+ $logRowKeysToShow = apply_filters("simple_history/log_html_output_details_table/row_keys_to_show", $logRowKeysToShow, $oneLogRow);
1972
+
1973
+ foreach ( $oneLogRow as $rowKey => $rowVal ) {
1974
+
1975
+ // Only columns from oneLogRow that exist in logRowKeysToShow will be outputed
1976
+ if ( ! array_key_exists($rowKey, $logRowKeysToShow) || ! $logRowKeysToShow[$rowKey] ) {
1977
+ continue;
1978
+ }
1979
 
1980
  // skip arrays and objects and such
1981
  if (is_array($rowVal) || is_object($rowVal)) {
1993
 
1994
  }
1995
 
1996
+
1997
+ $logRowContextKeysToShow = array_fill_keys( array_keys( (array) $oneLogRow->context), true);
1998
+
1999
+ /**
2000
+ * Filter what keys to show from the row context
2001
+ *
2002
+ * Array is in format
2003
+ *
2004
+ * Array
2005
+ * (
2006
+ * [plugin_slug] => 1
2007
+ * [plugin_name] => 1
2008
+ * [plugin_title] => 1
2009
+ * [plugin_description] => 1
2010
+ * [plugin_author] => 1
2011
+ * [plugin_version] => 1
2012
+ * ...
2013
+ * )
2014
+ *
2015
+ *
2016
+ * @since 2.0.29
2017
+ *
2018
+ * @param array with keys to show. key to show = key. value = boolean to show or not.
2019
+ * @param object log row to show details from
2020
+ */
2021
+ $logRowContextKeysToShow = apply_filters("simple_history/log_html_output_details_table/context_keys_to_show", $logRowContextKeysToShow, $oneLogRow);
2022
+
2023
+ foreach ( $oneLogRow->context as $contextKey => $contextVal ) {
2024
+
2025
+ // Only columns from context that exist in logRowContextKeysToShow will be outputed
2026
+ if ( ! array_key_exists($contextKey, $logRowContextKeysToShow) || ! $logRowContextKeysToShow[$contextKey] ) {
2027
+ continue;
2028
+ }
2029
 
2030
  $more_details_html .= sprintf(
2031
  '<tr>
2040
 
2041
  $more_details_html .= "</table>";
2042
 
2043
+ $more_details_html = apply_filters("simple_history/log_html_output_details_single/html_after_context_table", $more_details_html, $oneLogRow);
2044
+
2045
  $more_details_html = sprintf(
2046
  '<div class="SimpleHistoryLogitem__moreDetails">%1$s</div>',
2047
  $more_details_html
2057
  );
2058
 
2059
  if (isset($oneLogRow->initiator) && !empty($oneLogRow->initiator)) {
2060
+ $classes[] = "SimpleHistoryLogitem--initiator-" . $oneLogRow->initiator;
2061
+ }
2062
+
2063
+ if ( $arr_found_additional_ip_headers ) {
2064
+ $classes[] = "SimpleHistoryLogitem--IPAddress-multiple";
2065
  }
2066
 
2067
  // Always append the log level tag
2107
  $oneLogRow->logger, // 7
2108
  $data_attrs, // 8 data attributes
2109
  $more_details_html, // 9
2110
+ esc_attr( join(" ", $classes) ) // 10
2111
  );
2112
 
2113
  // Get the main message row.
2679
  SimpleLogger()->info($message, $context);
2680
 
2681
  } // simple_history_add
2682
+
2683
+ /**
2684
+ * Pretty much same as wp_text_diff() but with this you can set leading and trailing context lines
2685
+ *
2686
+ * @since 2.0.29
2687
+ *
2688
+ *
2689
+ * Original description from wp_text_diff():
2690
+ *
2691
+ * Displays a human readable HTML representation of the difference between two strings.
2692
+ *
2693
+ * The Diff is available for getting the changes between versions. The output is
2694
+ * HTML, so the primary use is for displaying the changes. If the two strings
2695
+ * are equivalent, then an empty string will be returned.
2696
+ *
2697
+ * The arguments supported and can be changed are listed below.
2698
+ *
2699
+ * 'title' : Default is an empty string. Titles the diff in a manner compatible
2700
+ * with the output.
2701
+ * 'title_left' : Default is an empty string. Change the HTML to the left of the
2702
+ * title.
2703
+ * 'title_right' : Default is an empty string. Change the HTML to the right of
2704
+ * the title.
2705
+ *
2706
+ * @see wp_parse_args() Used to change defaults to user defined settings.
2707
+ * @uses Text_Diff
2708
+ * @uses WP_Text_Diff_Renderer_Table
2709
+ *
2710
+ * @param string $left_string "old" (left) version of string
2711
+ * @param string $right_string "new" (right) version of string
2712
+ * @param string|array $args Optional. Change 'title', 'title_left', and 'title_right' defaults. And leading_context_lines and trailing_context_lines.
2713
+ * @return string Empty string if strings are equivalent or HTML with differences.
2714
+ */
2715
+ function simple_history_text_diff( $left_string, $right_string, $args = null ) {
2716
+
2717
+ $defaults = array(
2718
+ 'title' => '',
2719
+ 'title_left' => '',
2720
+ 'title_right' => '',
2721
+ "leading_context_lines" => 1,
2722
+ "trailing_context_lines" => 1
2723
+ );
2724
+
2725
+ $args = wp_parse_args( $args, $defaults );
2726
+
2727
+ if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )
2728
+ require( ABSPATH . WPINC . '/wp-diff.php' );
2729
+
2730
+ $left_string = normalize_whitespace($left_string);
2731
+ $right_string = normalize_whitespace($right_string);
2732
+
2733
+ $left_lines = explode("\n", $left_string);
2734
+ $right_lines = explode("\n", $right_string);
2735
+ $text_diff = new Text_Diff($left_lines, $right_lines);
2736
+
2737
+ $renderer = new WP_Text_Diff_Renderer_Table( $args );
2738
+ $renderer->_leading_context_lines = $args["leading_context_lines"];
2739
+ $renderer->_trailing_context_lines = $args["trailing_context_lines"];
2740
+
2741
+ $diff = $renderer->render($text_diff);
2742
+
2743
+ if ( !$diff )
2744
+ return '';
2745
+
2746
+ $r = "<table class='diff SimpleHistory__diff'>\n";
2747
+
2748
+ if ( ! empty( $args[ 'show_split_view' ] ) ) {
2749
+ $r .= "<col class='content diffsplit left' /><col class='content diffsplit middle' /><col class='content diffsplit right' />";
2750
+ } else {
2751
+ $r .= "<col class='content' />";
2752
+ }
2753
+
2754
+ if ( $args['title'] || $args['title_left'] || $args['title_right'] )
2755
+ $r .= "<thead>";
2756
+ if ( $args['title'] )
2757
+ $r .= "<tr class='diff-title'><th colspan='4'>$args[title]</th></tr>\n";
2758
+ if ( $args['title_left'] || $args['title_right'] ) {
2759
+ $r .= "<tr class='diff-sub-title'>\n";
2760
+ $r .= "\t<td></td><th>$args[title_left]</th>\n";
2761
+ $r .= "\t<td></td><th>$args[title_right]</th>\n";
2762
+ $r .= "</tr>\n";
2763
+ }
2764
+ if ( $args['title'] || $args['title_left'] || $args['title_right'] )
2765
+ $r .= "</thead>\n";
2766
+
2767
+ $r .= "<tbody>\n$diff\n</tbody>\n";
2768
+ $r .= "</table>";
2769
+
2770
+ return $r;
2771
+ }
index.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Simple History
4
  Plugin URI: http://simple-history.com
5
  Description: Plugin that logs various things that occur in WordPress and then presents those events in a very nice GUI.
6
- Version: 2.0.28
7
  Author: Pär Thernström
8
  Author URI: http://simple-history.com/
9
  License: GPL2
@@ -42,7 +42,7 @@ if ( version_compare( phpversion(), "5.3", ">=") ) {
42
  */
43
  // register_activation_hook( trailingslashit(WP_PLUGIN_DIR) . trailingslashit( plugin_basename(__DIR__) ) . "index.php" , array("SimpleHistory", "on_plugin_activate" ) );
44
 
45
- define( 'SIMPLE_HISTORY_VERSION', '2.0.28' );
46
 
47
  define( 'SIMPLE_HISTORY_FILE', __FILE__ );
48
  define( 'SIMPLE_HISTORY_PATH', plugin_dir_path( SIMPLE_HISTORY_FILE ) );
3
  Plugin Name: Simple History
4
  Plugin URI: http://simple-history.com
5
  Description: Plugin that logs various things that occur in WordPress and then presents those events in a very nice GUI.
6
+ Version: 2.0.29
7
  Author: Pär Thernström
8
  Author URI: http://simple-history.com/
9
  License: GPL2
42
  */
43
  // register_activation_hook( trailingslashit(WP_PLUGIN_DIR) . trailingslashit( plugin_basename(__DIR__) ) . "index.php" , array("SimpleHistory", "on_plugin_activate" ) );
44
 
45
+ define( 'SIMPLE_HISTORY_VERSION', '2.0.29' );
46
 
47
  define( 'SIMPLE_HISTORY_FILE', __FILE__ );
48
  define( 'SIMPLE_HISTORY_PATH', plugin_dir_path( SIMPLE_HISTORY_FILE ) );
languages/simple-history-da_DK.mo CHANGED
Binary file
languages/simple-history-da_DK.po CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Simple History v2.0.12\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
5
- "POT-Creation-Date: 2015-01-26 15:41:57+00:00\n"
6
- "PO-Revision-Date: 2015-02-03 08:47+0100\n"
7
  "Last-Translator: Thomas Blomberg Hansen <thomas@blomberg.it>\n"
8
  "Language-Team: \n"
9
  "Language: da_DK\n"
@@ -20,332 +20,343 @@ msgstr ""
20
  "X-Poedit-SearchPath-0: .\n"
21
 
22
  # @ simple-history
23
- #: SimpleHistory.php:504 SimpleHistory.php:765
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  msgid "Settings"
25
  msgstr "Indstillinger"
26
 
27
  # @ simple-history
28
- #: SimpleHistory.php:515
29
  msgid "Log (debug)"
30
  msgstr "Log (debug)"
31
 
32
  # @ simple-history
33
- #: SimpleHistory.php:520
34
  msgid "Styles example (debug)"
35
  msgstr "Styles eksempel (debug)"
36
 
37
  # @ simple-history
38
  #. Plugin Name of the plugin/theme
39
- #: SimpleHistory.php:780
40
  msgid "Simple History"
41
  msgstr "Simpel historik"
42
 
43
  # @ simple-history
44
- #: SimpleHistory.php:856
45
  msgid "Remove all log items?"
46
  msgstr "Fjern alle log elementer?"
47
 
48
  # @ simple-history
49
- #: SimpleHistory.php:858
50
  msgid "Go to the first page"
51
  msgstr "Gå til den første side"
52
 
53
  # @ simple-history
54
- #: SimpleHistory.php:859
55
  msgid "Go to the previous page"
56
  msgstr "Gå til den forrige side"
57
 
58
  # @ simple-history
59
- #: SimpleHistory.php:860
60
  msgid "Go to the next page"
61
  msgstr "Gå til den næste side"
62
 
63
  # @ simple-history
64
- #: SimpleHistory.php:861
65
  msgid "Go to the last page"
66
  msgstr "Gå til den sidste side"
67
 
68
  # @ simple-history
69
- #: SimpleHistory.php:862
70
  msgid "Current page"
71
  msgstr "Nuværende side"
72
 
73
  # @ simple-history
74
- #: SimpleHistory.php:864
75
  msgid "Oups, the log could not be loaded right now."
76
  msgstr "Ups, loggen kunne ikke indlæses lige nu."
77
 
78
  # @ simple-history
79
- #: SimpleHistory.php:865
80
  msgid "Your search did not match any history events."
81
  msgstr "Din søgning gav ingen resultater."
82
 
83
  # @ simple-history
84
- #: SimpleHistory.php:1149 SimpleHistory.php:1250
85
  msgid "Simple History Settings"
86
  msgstr "Simpel Historik opsætning"
87
 
88
  # @ simple-history
89
- #: SimpleHistory.php:1183
90
  msgid "No valid callback found"
91
  msgstr "Ingen gyldig callback fundet "
92
 
93
  # @ simple-history
94
- #: SimpleHistory.php:1271
95
  msgid "Cleared database"
96
  msgstr "Nulstillet database"
97
 
98
  # @ simple-history
99
- #: SimpleHistory.php:1298
100
  msgid "Show history"
101
  msgstr "Vis historik"
102
 
103
  # @ simple-history
104
- #: SimpleHistory.php:1311
105
  msgid "Number of items per page"
106
  msgstr "Antal elementer pr. side"
107
 
108
  # @ simple-history
109
- #: SimpleHistory.php:1323
110
  msgid "Clear log"
111
  msgstr "Nulstil log"
112
 
113
  # @ simple-history
114
- #: SimpleHistory.php:1462
115
  msgid "on the dashboard"
116
  msgstr "på kontrolpanelet"
117
 
118
  # @ simple-history
119
- #: SimpleHistory.php:1467
120
  msgid "as a page under the dashboard menu"
121
  msgstr "som et undermenupunkt til Kontrolpanelet "
122
 
123
  # @ simple-history
124
- #: SimpleHistory.php:1483
125
  msgid "Items in the database are automatically removed after %1$s days."
126
  msgstr "Elementer i databasen fjernes automatisk efter %1$s dage."
127
 
128
  # @ simple-history
129
- #: SimpleHistory.php:1485
130
  msgid "Items in the database are kept forever."
131
  msgstr "Elementer i databasen gemmes for evigt."
132
 
133
  # @ simple-history
134
- #: SimpleHistory.php:1489
135
  msgid "Clear log now"
136
  msgstr "Nulstil log nu"
137
 
138
- #: SimpleHistory.php:1533
139
  msgid "The log for Simple History was cleared ({num_rows} rows were removed)."
140
  msgstr ""
141
  "Loggen for Simple Historik blev nulstillet ({num_rows} rækker blev fjernet)."
142
 
143
- #: SimpleHistory.php:1793
144
  msgid "+%1$s similar event"
145
  msgid_plural "+%1$s similar events"
146
  msgstr[0] "+%1$s tilsvarende event"
147
  msgstr[1] "+%1$s tilsvarende events"
148
 
149
  # @ simple-history
150
- #: SimpleHistory.php:1800
151
  msgid "Loading…"
152
  msgstr "Indlæser..."
153
 
154
  # @ simple-history
155
- #: SimpleHistory.php:1807
156
  msgid "Showing %1$s more"
157
  msgstr "%1$s flere vises"
158
 
159
  # @ simple-history
160
- #: SimpleHistory.php:1826
161
  msgid "Context data"
162
  msgstr "Kontekst data"
163
 
164
  # @ simple-history
165
- #: SimpleHistory.php:1827
166
  msgid "This is potentially useful meta data that a logger has saved."
167
  msgstr "Dette er potentielt brugbar meta data, som en logger har gemt."
168
 
169
  # @ simple-history
170
- #: SimpleHistory.php:2302
171
  msgid "No events today so far."
172
  msgstr "Endnu ingen events i dag."
173
 
174
- #: SimpleHistory.php:2321
175
  msgid "One event today from one user."
176
  msgstr "Et event i dag, fra én bruger."
177
 
178
- #: SimpleHistory.php:2327
179
  msgid "One event today from one source."
180
  msgstr "Et event i dag, fra én kilde"
181
 
182
  # @ simple-history
183
- #: SimpleHistory.php:2333
184
  msgid "%1$d events today from one user."
185
  msgstr "%1$d events i dag fra én bruger."
186
 
187
  # @ simple-history
188
- #: SimpleHistory.php:2339
189
  msgid "%1$d events today from %2$d users."
190
  msgstr "%1$d events i dag fra %2$d brugere."
191
 
192
- #: SimpleHistory.php:2345 SimpleHistory.php:2351
193
  msgid "%1$d events today from one user and one other source."
194
  msgstr "%1$d events i dag, fra én bruger og én kilde"
195
 
196
- #: SimpleHistory.php:2357
197
  msgid "%1$d events today from one user and %3$d other sources."
198
  msgstr "%1$d events i dag, fra én bruger og %3$d kilder."
199
 
200
- #: SimpleHistory.php:2363
201
  msgid "%1$s events today from %2$d users and %3$d other sources."
202
  msgstr "%1$s events i dag, fra %2$d brugere og %3$d kilder."
203
 
204
  # @ simple-history
205
- #: dropins/SimpleHistoryDonateDropin.php:36
206
- msgid "Donate"
207
- msgstr "Donér"
208
-
209
- # @ simple-history
210
- #: dropins/SimpleHistoryDonateDropin.php:72
211
- msgid ""
212
- "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
213
- "href=\"%2$s\">buy me something from my Amazon wish list</a>."
214
- msgstr ""
215
- "Hvis du synes Simpel Historik er brugbar, så kan du <a href=\"%1$s\">donére</"
216
- "a> eller <a href=\"%2$s\">købe noget til mig på min Amazon wish list</a>."
217
-
218
- # @ simple-history
219
- #: dropins/SimpleHistoryFilterDropin.php:44
220
- msgid "Filter history"
221
- msgstr "Filtrer historik"
222
-
223
- #: dropins/SimpleHistoryFilterDropin.php:48
224
- #: dropins/SimpleHistoryFilterDropin.php:159
225
- msgid "Search events"
226
- msgstr "Søg i events"
227
-
228
- # @ simple-history
229
- #: dropins/SimpleHistoryFilterDropin.php:56
230
- msgid "All log levels"
231
- msgstr "Alle log niveauer"
232
-
233
- # @ simple-history
234
- #: dropins/SimpleHistoryFilterDropin.php:70
235
- msgid "All messages"
236
- msgstr "Alle beskeder"
237
-
238
- # @ simple-history
239
- #: dropins/SimpleHistoryFilterDropin.php:124
240
- msgid "All users"
241
- msgstr "Alle brugere"
242
-
243
- # @ simple-history
244
- #: dropins/SimpleHistoryFilterDropin.php:145
245
- msgid "All dates"
246
- msgstr "Alle datoer"
247
-
248
- #: dropins/SimpleHistoryFilterDropin.php:168
249
- msgid "Search"
250
- msgstr "Søg"
251
-
252
- # @ simple-history
253
- #: dropins/SimpleHistoryNewRowsNotifier.php:80
254
- msgid "1 new row"
255
- msgid_plural "%d new rows"
256
- msgstr[0] "1 ny række"
257
- msgstr[1] "%d nye rækker"
258
-
259
- # @ simple-history
260
- #: dropins/SimpleHistoryRSSDropin.php:55
261
- msgid "Address"
262
- msgstr "Adresse"
263
-
264
- # @ simple-history
265
- #: dropins/SimpleHistoryRSSDropin.php:64
266
- msgid "Regenerate"
267
- msgstr "Regenerere"
268
-
269
- # @ simple-history
270
- #: dropins/SimpleHistoryRSSDropin.php:81
271
- msgid "Created new secret RSS address"
272
- msgstr "Oprettet ny RSS url"
273
-
274
- # @ simple-history
275
- #: dropins/SimpleHistoryRSSDropin.php:148
276
- #: dropins/SimpleHistoryRSSDropin.php:259
277
- msgid "History for %s"
278
- msgstr "Historik fra %s"
279
-
280
- # @ simple-history
281
- #: dropins/SimpleHistoryRSSDropin.php:149
282
- #: dropins/SimpleHistoryRSSDropin.php:260
283
- msgid "WordPress History for %s"
284
- msgstr "WordPress historik fra %s"
285
-
286
- # begivenhed er måske ikke det rigtige ord.
287
- #: dropins/SimpleHistoryRSSDropin.php:196
288
- msgid "+%1$s occasion"
289
- msgid_plural "+%1$s occasions"
290
- msgstr[0] "+%1$s begivenhed"
291
- msgstr[1] "+%1$s begivenheder"
292
-
293
- # @ simple-history
294
- #: dropins/SimpleHistoryRSSDropin.php:263
295
- msgid "Wrong RSS secret"
296
- msgstr "Forkert RSS nøgle"
297
-
298
- # @ simple-history
299
- #: dropins/SimpleHistoryRSSDropin.php:264
300
- msgid ""
301
- "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
302
- "settings for current link to the RSS feed."
303
- msgstr ""
304
- "Din RSS nøgle i Simpel Historik RSS feed'et er forkert. Du kan finde den "
305
- "rigtige url under Indstillinger -> Simpel Historik."
306
-
307
- # @ simple-history
308
- #: dropins/SimpleHistoryRSSDropin.php:315
309
- msgid ""
310
- "You can generate a new address for the RSS feed. This is useful if you think "
311
- "that the address has fallen into the wrong hands."
312
- msgstr ""
313
- "Du kan generere en ny RSS feed url. Dette kan være nyttigt, hvis du "
314
- "mistænker at url'en er faldet i de forkerte hænder."
315
-
316
- # @ simple-history
317
- #: dropins/SimpleHistoryRSSDropin.php:318
318
- msgid "Generate new address"
319
- msgstr "Generere ny url"
320
-
321
- # @ simple-history
322
- #: dropins/SimpleHistoryRSSDropin.php:346
323
- msgid ""
324
- "Simple History has a RSS feed which you can subscribe to and receive log "
325
- "updates. Make sure you only share the feed with people you trust, since it "
326
- "can contain sensitive or confidential information."
327
- msgstr ""
328
- "Simpel Historik har et RSS feed, som du kan abonnere på og modtage log "
329
- "opdateringer. Del kun dette feed med personer du stoler på, da det kan "
330
- "indeholde følsomme eller fortrolige informationer."
331
-
332
- # @ simple-history
333
- #: dropins/SimpleHistorySettingsLogtestDropin.php:20
334
- msgid "Test data (debug)"
335
- msgstr "Test data (debug)"
336
-
337
- # @ simple-history
338
- #: dropins/SimpleHistorySettingsStatsDropin.php:27
339
- msgid "Stats"
340
- msgstr "Statistik"
341
-
342
- # @ simple-history
343
- #: dropins/SimpleHistorySidebarDropin.php:159 loggers/SimpleLogger.php:296
344
- msgid "Just now"
345
- msgstr "Lige nu"
346
-
347
- # @ simple-history
348
- #: index.php:59
349
  msgid ""
350
  "Simple History is a great plugin, but to use it your server must have at "
351
  "least PHP 5.3 installed (you have version %s)."
@@ -355,216 +366,244 @@ msgstr ""
355
  "installeret)."
356
 
357
  # @ simple-history
358
- #: loggers/SimpleCommentsLogger.php:685
359
  msgid "Spam"
360
  msgstr "Spam"
361
 
362
  # @ simple-history
363
- #: loggers/SimpleCommentsLogger.php:687
364
  msgid "Approved"
365
  msgstr "Godkendt"
366
 
367
  # @ simple-history
368
- #: loggers/SimpleCommentsLogger.php:689
369
  msgid "Pending"
370
  msgstr "Afventer"
371
 
372
  # @ simple-history
373
- #: loggers/SimpleCommentsLogger.php:703
374
  msgid "Trackback"
375
  msgstr "Trackback"
376
 
377
  # @ simple-history
378
- #: loggers/SimpleCommentsLogger.php:705
379
  msgid "Pingback"
380
  msgstr "Pingback"
381
 
382
  # @ simple-history
383
- #: loggers/SimpleCommentsLogger.php:707
384
  msgid "Comment"
385
  msgstr "Kommentar"
386
 
387
- # @ simple-history
388
- #: loggers/SimpleCoreUpdatesLogger.php:29
389
- msgid "Updated WordPress from {prev_version} to {new_version}"
390
- msgstr "Opdaterede WordPress fra {prev_version} til {new_version}"
391
 
392
- # @ simple-history
393
- #: loggers/SimpleCoreUpdatesLogger.php:30
394
- msgid "WordPress auto-updated from {prev_version} to {new_version}"
395
- msgstr "WordPress auto-opdaterede fra {prev_version} til {new_version}"
396
 
397
  # @ simple-history
398
- #: loggers/SimpleExportLogger.php:23
399
  msgid "Created XML export"
400
  msgstr "Genereret XML eksport"
401
 
402
  # @ simple-history
403
- #: loggers/SimpleLegacyLogger.php:88
404
  msgid "By %s"
405
  msgstr "af %s"
406
 
407
  # @ simple-history
408
- #: loggers/SimpleLegacyLogger.php:93
409
  msgid "%d occasions"
410
  msgstr "%d begivenheder"
411
 
412
  # @ simple-history
413
- #: loggers/SimpleLogger.php:203
414
  msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
415
  msgstr "Slettet bruger (havde ID %1$s, E-mail %2$s, brugernavn %3$s)"
416
 
417
  # @ simple-history
418
- #: loggers/SimpleLogger.php:218
419
  msgid "Anonymous web user"
420
  msgstr "Anonym besøgende"
421
 
422
  # @ simple-history
423
- #: loggers/SimpleLogger.php:226
424
  msgid "Anonymous user from %1$s"
425
  msgstr "Anonym bruger fra %1$s"
426
 
427
  # @ simple-history
428
  #. translators: Date format for log row header, see http:php.net/date
429
- #: loggers/SimpleLogger.php:301
430
  msgid "M j, Y \\a\\t G:i"
431
  msgstr "j. F Y \\k\\l\\. H:i"
432
 
433
  # @ simple-history
434
  #. translators: 1: last modified date and time in human time diff-format
435
- #: loggers/SimpleLogger.php:309
436
  msgid "%1$s ago"
437
  msgstr "%1$s siden"
438
 
439
  # @ simple-history
440
- #: loggers/SimpleMediaLogger.php:23
441
  msgid "Created {post_type} \"{attachment_title}\""
442
  msgstr "Tilføjet {post_type} \"{attachment_title}\""
443
 
444
  # @ simple-history
445
- #: loggers/SimpleMediaLogger.php:24
446
  msgid "Edited {post_type} \"{attachment_title}\""
447
  msgstr "Redigeret {post_type} \"{attachment_title}\""
448
 
449
  # @ simple-history
450
- #: loggers/SimpleMediaLogger.php:25
451
  msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
452
  msgstr "Slettet {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
453
 
454
  # @ simple-history
455
- #: loggers/SimpleMediaLogger.php:81
456
  msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
457
  msgstr ""
458
  "Redigeret {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
459
 
460
  # @ simple-history
461
- #: loggers/SimpleMediaLogger.php:85
462
  msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
463
  msgstr ""
464
  "Uploadet {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
465
 
466
  # @ simple-history
467
- #: loggers/SimpleMediaLogger.php:197
468
  msgid "{attachment_thumb}"
469
  msgstr "{attachment_thumb}"
470
 
471
  # @ simple-history
472
- #: loggers/SimpleMediaLogger.php:206
473
  msgid "{attachment_size_format}"
474
  msgstr "{attachment_size_format}"
475
 
476
  # @ simple-history
477
- #: loggers/SimpleMediaLogger.php:207
478
  msgid "{attachment_filetype_extension}"
479
  msgstr "{attachment_filetype_extension}"
480
 
481
  # @ simple-history
482
- #: loggers/SimpleMediaLogger.php:209
483
  msgid "{full_image_width} × {full_image_height}"
484
  msgstr "{full_image_width} × {full_image_height}"
485
 
486
  # @ simple-history
487
- #: loggers/SimpleMenuLogger.php:23
488
  msgid "Created menu \"{menu_name}\""
489
  msgstr "Tilføjet menu \"{menu_name}\""
490
 
491
  # @ simple-history
492
- #: loggers/SimpleMenuLogger.php:24
493
  msgid "Edited menu \"{menu_name}\""
494
  msgstr "Redigeret menu \"{menu_name}\""
495
 
496
  # @ simple-history
497
- #: loggers/SimpleMenuLogger.php:25
498
  msgid "Deleted menu \"{menu_name}\""
499
  msgstr "Slettet menu \"{menu_name}\""
500
 
501
  # @ simple-history
502
- #: loggers/SimpleMenuLogger.php:26
503
  msgid "Edited a menu item"
504
  msgstr "Redigerede et menupunkt "
505
 
506
  # @ simple-history
507
- #: loggers/SimpleMenuLogger.php:27
508
  msgid "Updated menu locations"
509
  msgstr "Opdateret menu områder"
510
 
511
  # @ simple-history
512
- #: loggers/SimpleOptionsLogger.php:140
513
  msgid "Updated option \"{option}\""
514
  msgstr "Opdateret indstlling \"{option}\""
515
 
516
  # @ simple-history
517
- #: loggers/SimpleOptionsLogger.php:242 loggers/SimpleThemeLogger.php:570
518
  msgid "New value"
519
  msgstr "Ny værdi"
520
 
521
  # @ simple-history
522
- #: loggers/SimpleOptionsLogger.php:253 loggers/SimpleThemeLogger.php:582
523
  msgid "Old value"
524
  msgstr "Gammel værdi"
525
 
526
  # @ simple-history
527
- #: loggers/SimpleOptionsLogger.php:268 loggers/SimpleOptionsLogger.php:285
528
  msgid "Settings page"
529
  msgstr "Indstillinger side"
530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
  # @ simple-history
532
- #: loggers/SimplePostLogger.php:30
533
  msgid "Created {post_type} \"{post_title}\""
534
  msgstr "Tilføjet {post_type} \"{post_title}\""
535
 
536
  # @ simple-history
537
- #: loggers/SimplePostLogger.php:31
538
  msgid "Updated {post_type} \"{post_title}\""
539
  msgstr "Opdaterede {post_type} \"{post_title}\""
540
 
541
  # @ simple-history
542
- #: loggers/SimplePostLogger.php:32
543
  msgid "Restored {post_type} \"{post_title}\" from trash"
544
  msgstr "Gendannede {post_type} \"{post_title}\" fra papirkurven"
545
 
546
  # @ simple-history
547
- #: loggers/SimplePostLogger.php:33 loggers/SimplePostLogger.php:236
548
  msgid "Deleted {post_type} \"{post_title}\""
549
  msgstr "Slettede {post_type} \"{post_title}\""
550
 
551
  # @ simple-history
552
- #: loggers/SimplePostLogger.php:34
553
  msgid "Moved {post_type} \"{post_title}\" to the trash"
554
  msgstr "Flyttede {post_type} \"{post_title}\" til papirkurven"
555
 
556
  # @ simple-history
557
- #: loggers/SimplePostLogger.php:232
558
  msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
559
  msgstr "Opdaterede {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
560
 
561
  # @ simple-history
562
- #: loggers/SimplePostLogger.php:240
563
  msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
564
  msgstr "Tilføjede {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
565
 
566
  # @ simple-history
567
- #: loggers/SimplePostLogger.php:245
568
  msgid ""
569
  "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
570
  msgstr ""
@@ -572,48 +611,48 @@ msgstr ""
572
  "papirkurven"
573
 
574
  # @ simple-history
575
- #: loggers/SimpleThemeLogger.php:26
576
  msgid "Switched theme to \"{theme_name}\" from \"{prev_theme_name}\""
577
  msgstr "Skiftede tema til \"{theme_name}\" from \"{prev_theme_name}\""
578
 
579
  # @ simple-history
580
- #: loggers/SimpleThemeLogger.php:27
581
  msgid "Customized theme appearance \"{setting_id}\""
582
  msgstr "Tilpassede tema udseende \"{setting_id}\""
583
 
584
  # @ simple-history
585
- #: loggers/SimpleThemeLogger.php:28
586
  msgid "Removed widget \"{widget_id_base}\" from sidebar \"{sidebar_id}\""
587
  msgstr "Fjernede widget \"{widget_id_base}\" fra sidebar \"{sidebar_id}\""
588
 
589
  # @ simple-history
590
- #: loggers/SimpleThemeLogger.php:29
591
  msgid "Added widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
592
  msgstr "Tilføjede widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
593
 
594
  # @ simple-history
595
- #: loggers/SimpleThemeLogger.php:30
596
  msgid "Changed widget order \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
597
  msgstr ""
598
  "Ændrede widget rækkefølge \"{widget_id_base}\" i sidebar \"{sidebar_id}\""
599
 
600
  # @ simple-history
601
- #: loggers/SimpleThemeLogger.php:31
602
  msgid "Changed widget \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
603
  msgstr "Ændrede widget \"{widget_id_base}\" i sidebar \"{sidebar_id}\""
604
 
605
  # @ simple-history
606
- #: loggers/SimpleThemeLogger.php:32
607
  msgid "Changed settings for the theme custom background"
608
  msgstr "Ændrede tema baggrund"
609
 
610
  # @ simple-history
611
- #: loggers/SimpleThemeLogger.php:532
612
  msgid "Section"
613
  msgstr "Sektion"
614
 
615
  # @ simple-history
616
- #: loggers/SimpleUserLogger.php:22
617
  msgid ""
618
  "Failed to login to account with username \"{login_user_login}\" because an "
619
  "incorrect password was entered"
@@ -622,7 +661,7 @@ msgstr ""
622
  "forkerte kodeord blev brugt"
623
 
624
  # @ simple-history
625
- #: loggers/SimpleUserLogger.php:23
626
  msgid ""
627
  "Failed to login with username \"{failed_login_username}\" because no user "
628
  "with that username exists"
@@ -631,28 +670,28 @@ msgstr ""
631
  "brugernavnet ikke findes"
632
 
633
  # @ simple-history
634
- #: loggers/SimpleUserLogger.php:24
635
  msgid "Logged in"
636
  msgstr "Loggede ind"
637
 
638
  # @ simple-history
639
- #: loggers/SimpleUserLogger.php:25
640
  msgid "Unknown user logged in"
641
  msgstr "Ukendt bruger loggede ind"
642
 
643
  # @ simple-history
644
- #: loggers/SimpleUserLogger.php:26
645
  msgid "Logged out"
646
  msgstr "Loggede ud"
647
 
648
  # @ simple-history
649
- #: loggers/SimpleUserLogger.php:27
650
  msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
651
  msgstr ""
652
  "Redigerede brugerprofilen for {edited_user_login} ({edited_user_email})"
653
 
654
  # @ simple-history
655
- #: loggers/SimpleUserLogger.php:28
656
  msgid ""
657
  "Created user {created_user_login} ({created_user_email}) with role "
658
  "{created_user_role}"
@@ -661,27 +700,27 @@ msgstr ""
661
  "{created_user_role}"
662
 
663
  # @ simple-history
664
- #: loggers/SimpleUserLogger.php:29
665
  msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
666
  msgstr "Slettede bruger {deleted_user_login} ({deleted_user_email})"
667
 
668
  # @ simple-history
669
- #: loggers/SimpleUserLogger.php:227
670
  msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
671
  msgstr "Redigerede <a href=\"{edit_profile_link}\">din profil</a>"
672
 
673
  # @ simple-history
674
- #: loggers/SimpleUserLogger.php:231
675
  msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
676
  msgstr "Redigerede <a href=\"{edit_profile_link}\">deres profil</a>"
677
 
678
  # @ simple-history
679
- #: loggers/SimpleUserLogger.php:240
680
  msgid "Edited your profile"
681
  msgstr "Redigerede din profil"
682
 
683
  # @ simple-history
684
- #: loggers/SimpleUserLogger.php:251
685
  msgid ""
686
  "Edited the profile for user <a href="
687
  "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
@@ -691,282 +730,161 @@ msgstr ""
691
 
692
  #: node_modules/grunt-wp-i18n/test/fixtures/basic-theme/exclude/file.php:3
693
  #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/plugin-include.php:6
694
- msgid "Exclude"
695
- msgstr "Ekskludere"
696
-
697
- #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/include/file.php:2
698
- msgid "Include"
699
- msgstr "Inkludere"
700
-
701
- #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/add-domain.php:2
702
- #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:2
703
- #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:3
704
- msgid "String"
705
- msgstr "Streng"
706
-
707
- # @ simple-history
708
- #: templates/settings-statsIntro.php:19
709
- msgid "<b>%1$s rows</b> have been logged the last <b>%2$s days</b>"
710
- msgstr "<b>%1$s rows</b> er logget de sidste <b>%2$s dage</b>"
711
-
712
- # @ simple-history
713
- #: templates/settings-statsLogLevels.php:4
714
- msgid "Log levels"
715
- msgstr "Log niveauer"
716
-
717
- # @ simple-history
718
- #: templates/settings-statsLogLevels.php:6
719
- msgid "Number of rows logged for each log level."
720
- msgstr "Antal rækker logget for hver log niveau."
721
-
722
- # @ simple-history
723
- #: templates/settings-statsLoggers.php:4
724
- msgid "Loggers"
725
- msgstr "Log metoder"
726
-
727
- # @ simple-history
728
- #: templates/settings-statsRowsPerDay.php:4
729
- msgid "Rows per day"
730
- msgstr "Rækker pr. dag"
731
-
732
- # @ simple-history
733
- #: templates/settings-statsUsers.php:4
734
- msgid "Users"
735
- msgstr "Brugere"
736
-
737
- # @ simple-history
738
- #: templates/settings-statsUsers.php:6
739
- msgid "Number of logged items for the 5 users with most logged rows."
740
- msgstr "Antal logget events for de 5 brugere, med flest antal logget rækker."
741
-
742
- # @ simple-history
743
- #: templates/settings-statsUsers.php:7
744
- msgid "Deleted users are also included."
745
- msgstr "Slettet brugere er også inkluderet."
746
-
747
- #. Plugin URI of the plugin/theme
748
- msgid "http://simple-history.com"
749
- msgstr "http://simple-history.com"
750
-
751
- #. Description of the plugin/theme
752
- msgid ""
753
- "Plugin that logs various things that occur in WordPress and then presents "
754
- "those events in a very nice GUI."
755
- msgstr ""
756
- "Plugin der logger forskellige ting der sker i WordPress og præsentere dem i "
757
- "et lækkert GUI."
758
-
759
- #. Author of the plugin/theme
760
- msgid "Pär Thernström"
761
- msgstr "Pär Thernström"
762
-
763
- #. Author URI of the plugin/theme
764
- msgid "http://simple-history.com/"
765
- msgstr "http://simple-history.com/"
766
-
767
- # @ simple-history
768
- #: SimpleHistory.php:249
769
- msgctxt ""
770
- "Message visible while waiting for log to load from server the first time"
771
- msgid "Loading history..."
772
- msgstr "Indlæser historik..."
773
-
774
- # @ simple-history
775
- #: SimpleHistory.php:286
776
- msgctxt "page n of n"
777
- msgid "of"
778
- msgstr "af"
779
-
780
- # @ simple-history
781
- #: SimpleHistory.php:357
782
- msgctxt "API: not enought arguments passed"
783
- msgid "Not enough args specified"
784
- msgstr "Der er ikke specificeret argumenter nok"
785
-
786
- # @ simple-history
787
- #: SimpleHistory.php:1235
788
- msgctxt "dashboard menu name"
789
- msgid "Simple History"
790
- msgstr "Simpel Historik"
791
-
792
- # @ simple-history
793
- #: SimpleHistory.php:1359
794
- msgctxt "history page headline"
795
- msgid "Simple History"
796
- msgstr "Simpel Historik"
797
-
798
- #: SimpleHistory.php:1619
799
- msgctxt "simple-history"
800
- msgid "Simple History removed one event that were older than {days} days"
801
- msgid_plural ""
802
- "Simple History removed {num_rows} events that were older than {days} days"
803
- msgstr[0] "Simpel Historik fjernede et event, der var ældre end {days} dage"
804
- msgstr[1] ""
805
- "Simpel Historik fjernede {num_events} events, der var ældre end {days} dage"
806
-
807
- #: SimpleHistory.php:1963
808
- msgctxt "Log level in gui"
809
- msgid "emergency"
810
- msgstr "Nødstilfælde"
811
-
812
- #: SimpleHistory.php:1967
813
- msgctxt "Log level in gui"
814
- msgid "alert"
815
- msgstr "alarm"
816
 
817
- #: SimpleHistory.php:1971
818
- msgctxt "Log level in gui"
819
- msgid "critical"
820
- msgstr "kritisk"
821
 
822
- #: SimpleHistory.php:1975
823
- msgctxt "Log level in gui"
824
- msgid "error"
825
- msgstr "fejl"
 
826
 
827
- #: SimpleHistory.php:1979
828
- msgctxt "Log level in gui"
829
- msgid "warning"
830
- msgstr "advarsel"
831
 
832
- #: SimpleHistory.php:1983
833
- msgctxt "Log level in gui"
834
- msgid "notice"
835
- msgstr "meddelelse"
836
 
837
- #: SimpleHistory.php:1987
838
- msgctxt "Log level in gui"
839
- msgid "info"
840
- msgstr "info"
841
 
842
- #: SimpleHistory.php:1991
843
- msgctxt "Log level in gui"
844
- msgid "debug"
845
- msgstr "debug"
846
 
847
- #: SimpleHistory.php:1996
848
- msgctxt "Log level in gui"
849
- msgid "Emergency"
850
- msgstr "Nødstilfælde"
851
 
852
- #: SimpleHistory.php:2000
853
- msgctxt "Log level in gui"
854
- msgid "Alert"
855
- msgstr "Alarm"
856
 
857
- #: SimpleHistory.php:2004
858
- msgctxt "Log level in gui"
859
- msgid "Critical"
860
- msgstr "Kritisk"
861
 
862
- #: SimpleHistory.php:2008
863
- msgctxt "Log level in gui"
864
- msgid "Error"
865
- msgstr "Fejl"
866
 
867
- #: SimpleHistory.php:2012
868
- msgctxt "Log level in gui"
869
- msgid "Warning"
870
- msgstr "Advarsel"
871
 
872
- #: SimpleHistory.php:2016
873
- msgctxt "Log level in gui"
874
- msgid "Notice"
875
- msgstr "Meddelse"
 
 
 
876
 
877
- #: SimpleHistory.php:2020
878
- msgctxt "Log level in gui"
879
- msgid "Info"
880
- msgstr "Info"
881
 
882
- #: SimpleHistory.php:2024
883
- msgctxt "Log level in gui"
884
- msgid "Debug"
885
- msgstr "Debug"
886
 
887
  # @ simple-history
888
- #: dropins/SimpleHistoryDonateDropin.php:51
889
  msgctxt "donate settings headline"
890
  msgid "Donate"
891
  msgstr "Donér"
892
 
893
- #: dropins/SimpleHistoryFilterDropin.php:50
894
  msgctxt "Filter dropin: button to show more search options"
895
  msgid "Show options"
896
  msgstr "Vis flere muligheder"
897
 
898
- #: dropins/SimpleHistoryFilterDropin.php:160
899
  msgctxt "Filter dropin: button to hide more search options"
900
  msgid "Hide options"
901
  msgstr "Skjul muligheder"
902
 
903
  # @ simple-history
904
- #: dropins/SimpleHistoryIpInfoDropin.php:66
905
  msgctxt "IP Info Dropin"
906
  msgid "That IP address does not seem like a public one."
907
  msgstr "IP adressen lader ikke til, at være en offentlig(public) IP."
908
 
909
  # @ simple-history
910
- #: dropins/SimpleHistoryIpInfoDropin.php:85
911
  msgctxt "IP Info Dropin"
912
  msgid "IP address"
913
  msgstr "IP adresse"
914
 
915
  # @ simple-history
916
- #: dropins/SimpleHistoryIpInfoDropin.php:96
917
  msgctxt "IP Info Dropin"
918
  msgid "Hostname"
919
  msgstr "Værtsnavn(Hostname)"
920
 
921
  # @ simple-history
922
- #: dropins/SimpleHistoryIpInfoDropin.php:107
923
- #: dropins/SimpleHistoryIpInfoDropin.php:118
924
  msgctxt "IP Info Dropin"
925
  msgid "Network"
926
  msgstr "Netværk"
927
 
928
  # @ simple-history
929
- #: dropins/SimpleHistoryIpInfoDropin.php:129
930
  msgctxt "IP Info Dropin"
931
  msgid "City"
932
  msgstr "By"
933
 
934
  # @ simple-history
935
- #: dropins/SimpleHistoryIpInfoDropin.php:140
936
  msgctxt "IP Info Dropin"
937
  msgid "Region"
938
  msgstr "Region"
939
 
940
  # @ simple-history
941
- #: dropins/SimpleHistoryIpInfoDropin.php:151
942
  msgctxt "IP Info Dropin"
943
  msgid "Country"
944
  msgstr "Område/Land"
945
 
946
  # @ simple-history
947
- #: dropins/SimpleHistoryIpInfoDropin.php:162
948
  msgctxt "IP Info Dropin"
949
  msgid "IP info provided by %1$s ipinfo.io %2$s"
950
  msgstr "IP info leveret af %1$s ipinfo.io %2$s"
951
 
952
- # @ simple-history
953
- #: dropins/SimpleHistoryNewRowsNotifier.php:38
954
  msgctxt "New rows notifier: error while checking for new rows"
955
- msgid "An error occured while checking for new log rows"
956
- msgstr "Der forekom en fejl, mens der blev tjekket efter nye log rækker"
957
 
958
  # @ simple-history
959
- #: dropins/SimpleHistoryRSSDropin.php:47
960
  msgctxt "rss settings headline"
961
  msgid "RSS feed"
962
  msgstr "RSS feed"
963
 
964
- #: dropins/SimpleHistorySidebarDropin.php:31
965
  msgctxt "Sidebar box"
966
  msgid "Simple History is on GitHub"
967
  msgstr "Simpel Historik er på GitHub"
968
 
969
- #: dropins/SimpleHistorySidebarDropin.php:34
970
  msgctxt "Sidebar box"
971
  msgid ""
972
  "You can star, fork, or report issues with this plugin over at the <a href="
@@ -975,12 +893,12 @@ msgstr ""
975
  "Du kan star, fork eller rapportere issues på pluginets <a href=\"%1$s"
976
  "\">GitHub side</a>."
977
 
978
- #: dropins/SimpleHistorySidebarDropin.php:48
979
  msgctxt "Sidebar box"
980
  msgid "Donate to support development"
981
  msgstr "Donér for at støtte udviklingen"
982
 
983
- #: dropins/SimpleHistorySidebarDropin.php:51
984
  msgctxt "Sidebar box"
985
  msgid ""
986
  "If you like and use Simple History you should <a href=\"%1$s\">donate to "
@@ -989,12 +907,12 @@ msgstr ""
989
  "Hvis du synes om og bruger Simpel Historik, burde du <a href=\"%1$s"
990
  "\">donére</a>, for at bibeholde dette plugin gratis."
991
 
992
- #: dropins/SimpleHistorySidebarDropin.php:65
993
  msgctxt "Sidebar box"
994
  msgid "Review this plugin if you like it"
995
  msgstr "Bedøm gerne dette plugin"
996
 
997
- #: dropins/SimpleHistorySidebarDropin.php:68
998
  msgctxt "Sidebar box"
999
  msgid ""
1000
  "If you like Simple History then please <a href=\"%1$s\">give it a nice "
@@ -1003,7 +921,7 @@ msgstr ""
1003
  "Hvis du synes om Simpel Historik, så <a href=\"%1$s\">kan du anmelde det på "
1004
  "wordpress.org</a>."
1005
 
1006
- #: dropins/SimpleHistorySidebarDropin.php:72
1007
  msgctxt "Sidebar box"
1008
  msgid ""
1009
  "A good review will help new users find this plugin. And it will make the "
@@ -1013,21 +931,141 @@ msgstr ""
1013
  "også gøre plugin forfatteren meget glad :)"
1014
 
1015
  # @ simple-history
1016
- #: loggers/SimpleCommentsLogger.php:95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1017
  msgctxt "A comment was added to the database by a non-logged in internet user"
1018
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
1019
  msgstr ""
1020
  "Tilføjede en kommentar til {comment_post_type} \"{comment_post_title}\""
1021
 
1022
  # @ simple-history
1023
- #: loggers/SimpleCommentsLogger.php:101
1024
  msgctxt "A comment was added to the database by a logged in user"
1025
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
1026
  msgstr ""
1027
  "Tilføjede en kommentar til {comment_post_type} \"{comment_post_title}\""
1028
 
1029
  # @ simple-history
1030
- #: loggers/SimpleCommentsLogger.php:107
1031
  msgctxt "A comment was approved"
1032
  msgid ""
1033
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
@@ -1037,7 +1075,7 @@ msgstr ""
1037
  "({comment_author_email})"
1038
 
1039
  # @ simple-history
1040
- #: loggers/SimpleCommentsLogger.php:113
1041
  msgctxt "A comment was was unapproved"
1042
  msgid ""
1043
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
@@ -1047,13 +1085,13 @@ msgstr ""
1047
  "({comment_author_email})"
1048
 
1049
  # @ simple-history
1050
- #: loggers/SimpleCommentsLogger.php:119
1051
  msgctxt "A comment was marked as spam"
1052
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
1053
  msgstr "Markerede en kommentar til indlægget \"{comment_post_title}\" som spam"
1054
 
1055
  # @ simple-history
1056
- #: loggers/SimpleCommentsLogger.php:125
1057
  msgctxt "A comment was marked moved to the trash"
1058
  msgid ""
1059
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
@@ -1063,7 +1101,7 @@ msgstr ""
1063
  "({comment_author_email}) i papirkurven"
1064
 
1065
  # @ simple-history
1066
- #: loggers/SimpleCommentsLogger.php:131
1067
  msgctxt "A comment was restored from the trash"
1068
  msgid ""
1069
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
@@ -1073,7 +1111,7 @@ msgstr ""
1073
  "({comment_author_email}) fra papirkurven"
1074
 
1075
  # @ simple-history
1076
- #: loggers/SimpleCommentsLogger.php:137
1077
  msgctxt "A comment was deleted"
1078
  msgid ""
1079
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
@@ -1083,7 +1121,7 @@ msgstr ""
1083
  "({comment_author_email})"
1084
 
1085
  # @ simple-history
1086
- #: loggers/SimpleCommentsLogger.php:143
1087
  msgctxt "A comment was edited"
1088
  msgid ""
1089
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
@@ -1093,7 +1131,7 @@ msgstr ""
1093
  "({comment_author_email})"
1094
 
1095
  # @ simple-history
1096
- #: loggers/SimpleCommentsLogger.php:150
1097
  msgctxt ""
1098
  "A trackback was added to the database by a non-logged in internet user"
1099
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
@@ -1101,21 +1139,21 @@ msgstr ""
1101
  "Tilføjede en trackback til {comment_post_type} \"{comment_post_title}\""
1102
 
1103
  # @ simple-history
1104
- #: loggers/SimpleCommentsLogger.php:205
1105
  msgctxt ""
1106
  "A trackback was added to the database by a non-logged in internet user"
1107
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1108
  msgstr "Tilføjede en pingback til {comment_post_type} \"{comment_post_title}\""
1109
 
1110
  # @ simple-history
1111
- #: loggers/SimpleCommentsLogger.php:156
1112
  msgctxt "A trackback was added to the database by a logged in user"
1113
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
1114
  msgstr ""
1115
  "Tilføjede en trackback til {comment_post_type} \"{comment_post_title}\""
1116
 
1117
  # @ simple-history
1118
- #: loggers/SimpleCommentsLogger.php:162
1119
  msgctxt "A trackback was approved"
1120
  msgid ""
1121
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -1125,7 +1163,7 @@ msgstr ""
1125
  "({comment_author_email})"
1126
 
1127
  # @ simple-history
1128
- #: loggers/SimpleCommentsLogger.php:168
1129
  msgctxt "A trackback was was unapproved"
1130
  msgid ""
1131
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -1135,13 +1173,13 @@ msgstr ""
1135
  "({comment_author_email})"
1136
 
1137
  # @ simple-history
1138
- #: loggers/SimpleCommentsLogger.php:174
1139
  msgctxt "A trackback was marked as spam"
1140
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
1141
  msgstr "Markerede en trackback til indlægget \"{comment_post_title}\" som spam"
1142
 
1143
  # @ simple-history
1144
- #: loggers/SimpleCommentsLogger.php:180
1145
  msgctxt "A trackback was marked moved to the trash"
1146
  msgid ""
1147
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -1151,7 +1189,7 @@ msgstr ""
1151
  "({comment_author_email}) til papirkurven"
1152
 
1153
  # @ simple-history
1154
- #: loggers/SimpleCommentsLogger.php:186
1155
  msgctxt "A trackback was restored from the trash"
1156
  msgid ""
1157
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -1161,7 +1199,7 @@ msgstr ""
1161
  "({comment_author_email}) fra papirkurven"
1162
 
1163
  # @ simple-history
1164
- #: loggers/SimpleCommentsLogger.php:192
1165
  msgctxt "A trackback was deleted"
1166
  msgid ""
1167
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -1171,7 +1209,7 @@ msgstr ""
1171
  "({comment_author_email})"
1172
 
1173
  # @ simple-history
1174
- #: loggers/SimpleCommentsLogger.php:198
1175
  msgctxt "A trackback was edited"
1176
  msgid ""
1177
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
@@ -1181,13 +1219,13 @@ msgstr ""
1181
  "({comment_author_email})"
1182
 
1183
  # @ simple-history
1184
- #: loggers/SimpleCommentsLogger.php:211
1185
  msgctxt "A pingback was added to the database by a logged in user"
1186
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1187
  msgstr "Tilføjede en pingback til {comment_post_type} \"{comment_post_title}\""
1188
 
1189
  # @ simple-history
1190
- #: loggers/SimpleCommentsLogger.php:217
1191
  msgctxt "A pingback was approved"
1192
  msgid ""
1193
  "Approved a pingback to \"{comment_post_title}\" by "
@@ -1197,7 +1235,7 @@ msgstr ""
1197
  "\"{comment_author}\"\" ({comment_author_email})"
1198
 
1199
  # @ simple-history
1200
- #: loggers/SimpleCommentsLogger.php:223
1201
  msgctxt "A pingback was was unapproved"
1202
  msgid ""
1203
  "Unapproved a pingback to \"{comment_post_title}\" by "
@@ -1207,13 +1245,13 @@ msgstr ""
1207
  "\"{comment_author}\" ({comment_author_email})"
1208
 
1209
  # @ simple-history
1210
- #: loggers/SimpleCommentsLogger.php:229
1211
  msgctxt "A pingback was marked as spam"
1212
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
1213
  msgstr "Markerede en pingback til indlægget \"{comment_post_title}\" som spam"
1214
 
1215
  # @ simple-history
1216
- #: loggers/SimpleCommentsLogger.php:235
1217
  msgctxt "A pingback was marked moved to the trash"
1218
  msgid ""
1219
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -1223,7 +1261,7 @@ msgstr ""
1223
  "({comment_author_email}) til papirkurven"
1224
 
1225
  # @ simple-history
1226
- #: loggers/SimpleCommentsLogger.php:241
1227
  msgctxt "A pingback was restored from the trash"
1228
  msgid ""
1229
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -1233,7 +1271,7 @@ msgstr ""
1233
  "({comment_author_email}) fra papirkurven"
1234
 
1235
  # @ simple-history
1236
- #: loggers/SimpleCommentsLogger.php:247
1237
  msgctxt "A pingback was deleted"
1238
  msgid ""
1239
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -1243,7 +1281,7 @@ msgstr ""
1243
  "({comment_author_email})"
1244
 
1245
  # @ simple-history
1246
- #: loggers/SimpleCommentsLogger.php:253
1247
  msgctxt "A pingback was edited"
1248
  msgid ""
1249
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
@@ -1253,232 +1291,232 @@ msgstr ""
1253
  "({comment_author_email})"
1254
 
1255
  # @ simple-history
1256
- #: loggers/SimpleCommentsLogger.php:264
1257
  msgctxt "Comments logger: search"
1258
  msgid "Comments"
1259
  msgstr "Kommentarer"
1260
 
1261
  # @ simple-history
1262
- #: loggers/SimpleCommentsLogger.php:265
1263
  msgctxt "Comments logger: search"
1264
  msgid "All comments activity"
1265
  msgstr "Alt kommentar aktivitet"
1266
 
1267
  # @ simple-history
1268
- #: loggers/SimpleCommentsLogger.php:267
1269
  msgctxt "Comments logger: search"
1270
  msgid "Added comments"
1271
  msgstr "Tilføjet kommentarer"
1272
 
1273
  # @ simple-history
1274
- #: loggers/SimpleCommentsLogger.php:275
1275
  msgctxt "Comments logger: search"
1276
  msgid "Edited comments"
1277
  msgstr "Redigeret kommentarer"
1278
 
1279
  # @ simple-history
1280
- #: loggers/SimpleCommentsLogger.php:280
1281
  msgctxt "Comments logger: search"
1282
  msgid "Approved comments"
1283
  msgstr "Godkendte kommentarer"
1284
 
1285
  # @ simple-history
1286
- #: loggers/SimpleCommentsLogger.php:285
1287
  msgctxt "Comments logger: search"
1288
  msgid "Held comments"
1289
  msgstr "Afventer kommentarer"
1290
 
1291
  # @ simple-history
1292
- #: loggers/SimpleCommentsLogger.php:290
1293
  msgctxt "Comments logger: search"
1294
  msgid "Comments status changed to spam"
1295
  msgstr "Kommentarer status ændre til spam"
1296
 
1297
  # @ simple-history
1298
- #: loggers/SimpleCommentsLogger.php:295
1299
  msgctxt "Comments logger: search"
1300
  msgid "Trashed comments"
1301
  msgstr "Kommentarer flyttet til papirkurven"
1302
 
1303
  # @ simple-history
1304
- #: loggers/SimpleCommentsLogger.php:300
1305
  msgctxt "Comments logger: search"
1306
  msgid "Untrashed comments"
1307
  msgstr "Gendannet kommentarer"
1308
 
1309
  # @ simple-history
1310
- #: loggers/SimpleCommentsLogger.php:305
1311
  msgctxt "Comments logger: search"
1312
  msgid "Deleted comments"
1313
  msgstr "Slettet kommentarer"
1314
 
1315
  # @ simple-history
1316
- #: loggers/SimpleCommentsLogger.php:602 loggers/SimpleCommentsLogger.php:615
1317
- #: loggers/SimpleCommentsLogger.php:629
1318
  msgctxt "comments logger - detailed output comment status"
1319
  msgid "Status"
1320
  msgstr "Status"
1321
 
1322
  # @ simple-history
1323
- #: loggers/SimpleCommentsLogger.php:604 loggers/SimpleCommentsLogger.php:617
1324
- #: loggers/SimpleCommentsLogger.php:631
1325
  msgctxt "comments logger - detailed output author"
1326
  msgid "Name"
1327
  msgstr "Navn"
1328
 
1329
  # @ simple-history
1330
- #: loggers/SimpleCommentsLogger.php:605 loggers/SimpleCommentsLogger.php:618
1331
- #: loggers/SimpleCommentsLogger.php:632
1332
  msgctxt "comments logger - detailed output email"
1333
  msgid "Email"
1334
  msgstr "E-mail"
1335
 
1336
  # @ simple-history
1337
- #: loggers/SimpleCommentsLogger.php:606 loggers/SimpleCommentsLogger.php:619
1338
  msgctxt "comments logger - detailed output content"
1339
  msgid "Content"
1340
  msgstr "Indhold"
1341
 
1342
  # @ simple-history
1343
- #: loggers/SimpleCommentsLogger.php:633
1344
  msgctxt "comments logger - detailed output content"
1345
  msgid "Comment"
1346
  msgstr "Kommentar"
1347
 
1348
  # @ simple-history
1349
- #: loggers/SimpleCommentsLogger.php:759
1350
  msgctxt "comments logger - edit comment"
1351
  msgid "View/Edit"
1352
  msgstr "Vis/Rediger"
1353
 
1354
  # @ simple-history
1355
- #: loggers/SimpleCoreUpdatesLogger.php:34
1356
  msgctxt "User logger: search"
1357
  msgid "WordPress Core"
1358
  msgstr "WordPress Core"
1359
 
1360
  # @ simple-history
1361
- #: loggers/SimpleCoreUpdatesLogger.php:36
1362
  msgctxt "User logger: search"
1363
  msgid "WordPress core updates"
1364
  msgstr "WordPress Core opdateringer"
1365
 
1366
  # @ simple-history
1367
- #: loggers/SimpleUserLogger.php:54
1368
  msgctxt "User logger: search"
1369
  msgid "Users"
1370
  msgstr "Brugere"
1371
 
1372
  # @ simple-history
1373
- #: loggers/SimpleUserLogger.php:55
1374
  msgctxt "User logger: search"
1375
  msgid "All user activity"
1376
  msgstr "Alt bruger aktivitet"
1377
 
1378
  # @ simple-history
1379
- #: loggers/SimpleUserLogger.php:57
1380
  msgctxt "User logger: search"
1381
  msgid "Successful user logins"
1382
  msgstr "Succesfulde bruger log ind"
1383
 
1384
  # @ simple-history
1385
- #: loggers/SimpleUserLogger.php:61
1386
  msgctxt "User logger: search"
1387
  msgid "Failed user logins"
1388
  msgstr "Mislykket bruger log ind"
1389
 
1390
  # @ simple-history
1391
- #: loggers/SimpleUserLogger.php:65
1392
  msgctxt "User logger: search"
1393
  msgid "User logouts"
1394
  msgstr "Bruger log ud"
1395
 
1396
  # @ simple-history
1397
- #: loggers/SimpleUserLogger.php:68
1398
  msgctxt "User logger: search"
1399
  msgid "Created users"
1400
  msgstr "Tilføjet brugere"
1401
 
1402
  # @ simple-history
1403
- #: loggers/SimpleUserLogger.php:71
1404
  msgctxt "User logger: search"
1405
  msgid "User profile updates"
1406
  msgstr "Brugerprofil opdateringer"
1407
 
1408
  # @ simple-history
1409
- #: loggers/SimpleUserLogger.php:74
1410
  msgctxt "User logger: search"
1411
  msgid "User deletions"
1412
  msgstr "Slettet brugere"
1413
 
1414
  # @ simple-history
1415
- #: loggers/SimpleExportLogger.php:27
1416
  msgctxt "Export logger: search"
1417
  msgid "Export"
1418
  msgstr "Eksport"
1419
 
1420
  # @ simple-history
1421
- #: loggers/SimpleExportLogger.php:29
1422
  msgctxt "Export logger: search"
1423
  msgid "Created exports"
1424
  msgstr "Genereret eksporteringer"
1425
 
1426
  # @ simple-history
1427
- #: loggers/SimpleLogger.php:190
1428
  msgctxt "header output when initiator is the currently logged in user"
1429
  msgid "You"
1430
  msgstr "Dig"
1431
 
1432
  # @ simple-history
1433
- #: loggers/SimpleMediaLogger.php:29
1434
  msgctxt "Media logger: search"
1435
  msgid "Media"
1436
  msgstr "Medier"
1437
 
1438
  # @ simple-history
1439
- #: loggers/SimpleMediaLogger.php:31
1440
  msgctxt "Media logger: search"
1441
  msgid "Added media"
1442
  msgstr "Tilføjet medier"
1443
 
1444
  # @ simple-history
1445
- #: loggers/SimpleMediaLogger.php:34
1446
  msgctxt "Media logger: search"
1447
  msgid "Updated media"
1448
  msgstr "Opdateret medier"
1449
 
1450
  # @ simple-history
1451
- #: loggers/SimpleMediaLogger.php:37
1452
  msgctxt "Media logger: search"
1453
  msgid "Deleted media"
1454
  msgstr "Slettet medier"
1455
 
1456
  # @ simple-history
1457
- #: loggers/SimpleMenuLogger.php:31
1458
  msgctxt "Menu logger: search"
1459
  msgid "Menus"
1460
  msgstr "Menuer"
1461
 
1462
  # @ simple-history
1463
- #: loggers/SimpleMenuLogger.php:33
1464
  msgctxt "Menu updates logger: search"
1465
  msgid "Created menus"
1466
  msgstr "Tilføjet menuer"
1467
 
1468
  # @ simple-history
1469
- #: loggers/SimpleMenuLogger.php:36
1470
  msgctxt "Menu updates logger: search"
1471
  msgid "Edited menus"
1472
  msgstr "Redigeret menuer"
1473
 
1474
  # @ simple-history
1475
- #: loggers/SimpleMenuLogger.php:41
1476
  msgctxt "Menu updates logger: search"
1477
  msgid "Deleted menus"
1478
  msgstr "Slettet menuer"
1479
 
1480
  # @ simple-history
1481
- #: loggers/SimpleMenuLogger.php:326
1482
  msgctxt "menu logger"
1483
  msgid "%1$s menu item added"
1484
  msgid_plural "%1$s menu items added"
@@ -1486,7 +1524,7 @@ msgstr[0] "%1$s menupunkt tilføjet"
1486
  msgstr[1] "%1$s menupunkter tilføjet"
1487
 
1488
  # @ simple-history
1489
- #: loggers/SimpleMenuLogger.php:333
1490
  msgctxt "menu logger"
1491
  msgid "%1$s menu item removed"
1492
  msgid_plural "%1$s menu items removed"
@@ -1494,43 +1532,43 @@ msgstr[0] "%1$s menupunkt fjernet"
1494
  msgstr[1] "%1$s menupunkter fjernet"
1495
 
1496
  # @ simple-history
1497
- #: loggers/SimpleOptionsLogger.php:153
1498
  msgctxt "Options logger: search"
1499
  msgid "Options"
1500
  msgstr "Indstillinger"
1501
 
1502
  # @ simple-history
1503
- #: loggers/SimpleOptionsLogger.php:155
1504
  msgctxt "Options logger: search"
1505
  msgid "Changed options"
1506
  msgstr "Ændret indstillinger"
1507
 
1508
  # @ simple-history
1509
- #: loggers/SimplePluginLogger.php:51
1510
  msgctxt "Plugin was non-silently activated by a user"
1511
  msgid "Activated plugin \"{plugin_name}\""
1512
  msgstr "Aktiverede pluginet \"{plugin_name}\""
1513
 
1514
  # @ simple-history
1515
- #: loggers/SimplePluginLogger.php:57
1516
  msgctxt "Plugin was non-silently deactivated by a user"
1517
  msgid "Deactivated plugin \"{plugin_name}\""
1518
  msgstr "Deaktiverede pluginet \"{plugin_name}\""
1519
 
1520
  # @ simple-history
1521
- #: loggers/SimplePluginLogger.php:63
1522
  msgctxt "Plugin was installed"
1523
  msgid "Installed plugin \"{plugin_name}\""
1524
  msgstr "Installerede pluginet \"{plugin_name}\""
1525
 
1526
  # @ simple-history
1527
- #: loggers/SimplePluginLogger.php:69
1528
  msgctxt "Plugin failed to install"
1529
  msgid "Failed to install plugin \"{plugin_name}\""
1530
  msgstr "Mislykkede i at installere pluginet \"{plugin_name}\""
1531
 
1532
  # @ simple-history
1533
- #: loggers/SimplePluginLogger.php:75
1534
  msgctxt "Plugin was updated"
1535
  msgid ""
1536
  "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
@@ -1540,25 +1578,25 @@ msgstr ""
1540
  "{plugin_prev_version}"
1541
 
1542
  # @ simple-history
1543
- #: loggers/SimplePluginLogger.php:81
1544
  msgctxt "Plugin update failed"
1545
  msgid "Updated plugin \"{plugin_name}\""
1546
  msgstr "Opdaterede pluginet \"{plugin_name}\""
1547
 
1548
  # @ simple-history
1549
- #: loggers/SimplePluginLogger.php:87
1550
  msgctxt "Plugin file edited"
1551
  msgid "Edited plugin file \"{plugin_edited_file}\""
1552
  msgstr "Redigerede plugin filen \"{plugin_edited_file}\""
1553
 
1554
  # @ simple-history
1555
- #: loggers/SimplePluginLogger.php:93
1556
  msgctxt "Plugin files was deleted"
1557
  msgid "Deleted plugin \"{plugin_name}\""
1558
  msgstr "Slettede pluginet \"{plugin_name}\""
1559
 
1560
  # @ simple-history
1561
- #: loggers/SimplePluginLogger.php:100
1562
  msgctxt "Plugin was updated in bulk"
1563
  msgid ""
1564
  "Updated plugin \"{plugin_name}\" to {plugin_version} from "
@@ -1568,215 +1606,247 @@ msgstr ""
1568
  "{plugin_prev_version}"
1569
 
1570
  # @ simple-history
1571
- #: loggers/SimplePluginLogger.php:108
1572
  msgctxt "Plugin logger: search"
1573
  msgid "Plugins"
1574
  msgstr "Plugins"
1575
 
1576
  # @ simple-history
1577
- #: loggers/SimplePluginLogger.php:110
1578
  msgctxt "Plugin logger: search"
1579
  msgid "Activated plugins"
1580
  msgstr "Aktiveret plugins"
1581
 
1582
  # @ simple-history
1583
- #: loggers/SimplePluginLogger.php:113
1584
  msgctxt "Plugin logger: search"
1585
  msgid "Deactivated plugins"
1586
  msgstr "Deaktiveret plugins"
1587
 
1588
  # @ simple-history
1589
- #: loggers/SimplePluginLogger.php:116
1590
  msgctxt "Plugin logger: search"
1591
  msgid "Installed plugins"
1592
  msgstr "Installeret plugins"
1593
 
1594
  # @ simple-history
1595
- #: loggers/SimplePluginLogger.php:119
1596
  msgctxt "Plugin logger: search"
1597
  msgid "Failed plugin installs"
1598
  msgstr "Mislykket plugin installeringer"
1599
 
1600
  # @ simple-history
1601
- #: loggers/SimplePluginLogger.php:122
1602
  msgctxt "Plugin logger: search"
1603
  msgid "Updated plugins"
1604
  msgstr "Opdateret plugins"
1605
 
1606
  # @ simple-history
1607
- #: loggers/SimplePluginLogger.php:126
1608
  msgctxt "Plugin logger: search"
1609
  msgid "Failed plugin updates"
1610
  msgstr "Mislykket plugin opdateringer"
1611
 
1612
  # @ simple-history
1613
- #: loggers/SimplePluginLogger.php:129
1614
  msgctxt "Plugin logger: search"
1615
  msgid "Edited plugin files"
1616
  msgstr "Redigeret plugin filer"
1617
 
1618
  # @ simple-history
1619
- #: loggers/SimplePluginLogger.php:132
1620
  msgctxt "Plugin logger: search"
1621
  msgid "Deleted plugins"
1622
  msgstr "Slettet plugins"
1623
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1624
  # @ simple-history
1625
- #: loggers/SimplePluginLogger.php:887
1626
  msgctxt "plugin logger - detailed output version"
1627
  msgid "Version"
1628
  msgstr "Version"
1629
 
1630
  # @ simple-history
1631
- #: loggers/SimplePluginLogger.php:889
1632
  msgctxt "plugin logger - detailed output author"
1633
  msgid "Author"
1634
  msgstr "Forfatter"
1635
 
1636
  # @ simple-history
1637
- #: loggers/SimplePluginLogger.php:891
1638
- msgctxt "plugin logger - detailed output author"
1639
- msgid "Requires"
1640
- msgstr "Kræver"
1641
-
1642
- # @ simple-history
1643
- #: loggers/SimplePluginLogger.php:890
1644
  msgctxt "plugin logger - detailed output url"
1645
  msgid "URL"
1646
  msgstr "URL"
1647
 
1648
  # @ simple-history
1649
- #: loggers/SimplePluginLogger.php:892
1650
- msgctxt "plugin logger - detailed output compatible"
1651
- msgid "Compatible up to"
1652
- msgstr "Kompatible op til"
1653
-
1654
- # @ simple-history
1655
- #: loggers/SimplePluginLogger.php:893
1656
- msgctxt "plugin logger - detailed output downloaded"
1657
- msgid "Downloads"
1658
- msgstr "Downloads"
1659
-
1660
- # @ simple-history
1661
- #: loggers/SimplePluginLogger.php:953
1662
  msgctxt "plugin logger: plugin info thickbox title view all info"
1663
  msgid "View plugin info"
1664
  msgstr "Vis plugin info"
1665
 
1666
  # @ simple-history
1667
- #: loggers/SimplePluginLogger.php:968
1668
  msgctxt "plugin logger: plugin info thickbox title"
1669
  msgid "View plugin info"
1670
  msgstr "Vis plugin info"
1671
 
1672
  # @ simple-history
1673
- #: loggers/SimplePluginLogger.php:972
1674
  msgctxt "plugin logger: plugin info thickbox title"
1675
  msgid "View changelog"
1676
  msgstr "Vis changelog"
1677
 
1678
  # @ simple-history
1679
- #: loggers/SimplePostLogger.php:38
1680
  msgctxt "Post logger: search"
1681
  msgid "Posts & Pages"
1682
  msgstr "Indlæg & Sider"
1683
 
1684
  # @ simple-history
1685
- #: loggers/SimplePostLogger.php:40
1686
  msgctxt "Post logger: search"
1687
  msgid "Posts created"
1688
  msgstr "Indlæg tilføjet"
1689
 
1690
  # @ simple-history
1691
- #: loggers/SimplePostLogger.php:43
1692
  msgctxt "Post logger: search"
1693
  msgid "Posts updated"
1694
  msgstr "Indlæg opdateret"
1695
 
1696
  # @ simple-history
1697
- #: loggers/SimplePostLogger.php:46
1698
  msgctxt "Post logger: search"
1699
  msgid "Posts trashed"
1700
  msgstr "Indlæg flyttet til papirkurven"
1701
 
1702
  # @ simple-history
1703
- #: loggers/SimplePostLogger.php:49
1704
  msgctxt "Post logger: search"
1705
  msgid "Posts deleted"
1706
  msgstr "Indlæg slettet"
1707
 
1708
  # @ simple-history
1709
- #: loggers/SimplePostLogger.php:52
1710
  msgctxt "Post logger: search"
1711
  msgid "Posts restored"
1712
  msgstr "Indlæg gendannet"
1713
 
1714
  # @ simple-history
1715
- #: loggers/SimpleThemeLogger.php:36
1716
  msgctxt "Theme logger: search"
1717
  msgid "Themes & Widgets"
1718
  msgstr "Tema & Widgets"
1719
 
1720
  # @ simple-history
1721
- #: loggers/SimpleThemeLogger.php:38
1722
  msgctxt "Theme logger: search"
1723
  msgid "Switched themes"
1724
  msgstr "Skiftet temaer"
1725
 
1726
  # @ simple-history
1727
- #: loggers/SimpleThemeLogger.php:41
1728
  msgctxt "Theme logger: search"
1729
  msgid "Changed appearance of themes"
1730
  msgstr "Skiftet udseende på temaer"
1731
 
1732
  # @ simple-history
1733
- #: loggers/SimpleThemeLogger.php:44
1734
  msgctxt "Theme logger: search"
1735
  msgid "Added widgets"
1736
  msgstr "Tilføjet widgets"
1737
 
1738
  # @ simple-history
1739
- #: loggers/SimpleThemeLogger.php:47
1740
  msgctxt "Theme logger: search"
1741
  msgid "Removed widgets"
1742
  msgstr "Fjernet widgets"
1743
 
1744
  # @ simple-history
1745
- #: loggers/SimpleThemeLogger.php:50
1746
  msgctxt "Theme logger: search"
1747
  msgid "Changed widgets order"
1748
  msgstr "Ændret widget rækkefølge"
1749
 
1750
  # @ simple-history
1751
- #: loggers/SimpleThemeLogger.php:53
1752
  msgctxt "Theme logger: search"
1753
  msgid "Edited widgets"
1754
  msgstr "Ændret widgets"
1755
 
1756
  # @ simple-history
1757
- #: loggers/SimpleThemeLogger.php:56
1758
  msgctxt "Theme logger: search"
1759
  msgid "Background of themes changed"
1760
  msgstr "Baggrund og tema ændret"
1761
 
1762
  # @ simple-history
1763
- #: loggers/SimpleUserLogger.php:36
1764
  msgctxt "User destroys other login sessions for themself"
1765
  msgid "Logged out from all other sessions"
1766
  msgstr "Loggede ud fra alle andre sessioner"
1767
 
1768
  # @ simple-history
1769
- #: loggers/SimpleUserLogger.php:45
1770
  msgctxt "User destroys all login sessions for a user"
1771
  msgid "Logged out \"{user_display_name}\" from all sessions"
1772
  msgstr "Loggede ud \"{user_display_name}\" fra alle sessioner"
1773
 
1774
  # @ simple-history
1775
- #: templates/settings-statsRowsPerDay.php:36
1776
  msgctxt "stats: date in rows per day chart"
1777
  msgid "M j"
1778
  msgstr "j. F"
1779
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1780
  # @ simple-history
1781
  #~ msgid "+%1$s more"
1782
  #~ msgstr "+%1$s more"
2
  msgstr ""
3
  "Project-Id-Version: Simple History v2.0.12\n"
4
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/Simple-History\n"
5
+ "POT-Creation-Date: 2015-04-01 14:16:45+00:00\n"
6
+ "PO-Revision-Date: 2015-04-13 12:20+0100\n"
7
  "Last-Translator: Thomas Blomberg Hansen <thomas@blomberg.it>\n"
8
  "Language-Team: \n"
9
  "Language: da_DK\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
 
22
  # @ simple-history
23
+ #: dropins/SimpleHistoryDonateDropin.php:38
24
+ msgid "Donate"
25
+ msgstr "Donér"
26
+
27
+ # @ simple-history
28
+ #: dropins/SimpleHistoryDonateDropin.php:74
29
+ msgid ""
30
+ "If you find Simple History useful please <a href=\"%1$s\">donate</a> or <a "
31
+ "href=\"%2$s\">buy me something from my Amazon wish list</a>."
32
+ msgstr ""
33
+ "Hvis du synes Simpel Historik er brugbar, så kan du <a href=\"%1$s\">donére</"
34
+ "a> eller <a href=\"%2$s\">købe noget til mig på min Amazon wish list</a>."
35
+
36
+ # @ simple-history
37
+ #: dropins/SimpleHistoryFilterDropin.php:46
38
+ msgid "Filter history"
39
+ msgstr "Filtrer historik"
40
+
41
+ #: dropins/SimpleHistoryFilterDropin.php:50
42
+ #: dropins/SimpleHistoryFilterDropin.php:161
43
+ msgid "Search events"
44
+ msgstr "Søg i events"
45
+
46
+ # @ simple-history
47
+ #: dropins/SimpleHistoryFilterDropin.php:58
48
+ msgid "All log levels"
49
+ msgstr "Alle log niveauer"
50
+
51
+ # @ simple-history
52
+ #: dropins/SimpleHistoryFilterDropin.php:72
53
+ msgid "All messages"
54
+ msgstr "Alle beskeder"
55
+
56
+ # @ simple-history
57
+ #: dropins/SimpleHistoryFilterDropin.php:126
58
+ msgid "All users"
59
+ msgstr "Alle brugere"
60
+
61
+ # @ simple-history
62
+ #: dropins/SimpleHistoryFilterDropin.php:147
63
+ msgid "All dates"
64
+ msgstr "Alle datoer"
65
+
66
+ #: dropins/SimpleHistoryFilterDropin.php:170
67
+ msgid "Search"
68
+ msgstr "Søg"
69
+
70
+ #: dropins/SimpleHistoryNewRowsNotifier.php:82
71
+ msgid "1 new event"
72
+ msgid_plural "%d new events"
73
+ msgstr[0] "1 nyt event"
74
+ msgstr[1] "%d nye events"
75
+
76
+ # @ simple-history
77
+ #: dropins/SimpleHistoryRSSDropin.php:57
78
+ msgid "Address"
79
+ msgstr "Adresse"
80
+
81
+ # @ simple-history
82
+ #: dropins/SimpleHistoryRSSDropin.php:66
83
+ msgid "Regenerate"
84
+ msgstr "Regenerere"
85
+
86
+ # @ simple-history
87
+ #: dropins/SimpleHistoryRSSDropin.php:83
88
+ msgid "Created new secret RSS address"
89
+ msgstr "Oprettet ny RSS url"
90
+
91
+ # @ simple-history
92
+ #: dropins/SimpleHistoryRSSDropin.php:150
93
+ #: dropins/SimpleHistoryRSSDropin.php:277
94
+ msgid "History for %s"
95
+ msgstr "Historik fra %s"
96
+
97
+ # @ simple-history
98
+ #: dropins/SimpleHistoryRSSDropin.php:151
99
+ #: dropins/SimpleHistoryRSSDropin.php:278
100
+ msgid "WordPress History for %s"
101
+ msgstr "WordPress historik fra %s"
102
+
103
+ #: dropins/SimpleHistoryRSSDropin.php:201
104
+ msgid "Severity level: %1$s"
105
+ msgstr "Alvorlighedsniveau: %1$s"
106
+
107
+ # begivenhed er måske ikke det rigtige ord.
108
+ #: dropins/SimpleHistoryRSSDropin.php:214
109
+ msgid "+%1$s occasion"
110
+ msgid_plural "+%1$s occasions"
111
+ msgstr[0] "+%1$s begivenhed"
112
+ msgstr[1] "+%1$s begivenheder"
113
+
114
+ # @ simple-history
115
+ #: dropins/SimpleHistoryRSSDropin.php:281
116
+ msgid "Wrong RSS secret"
117
+ msgstr "Forkert RSS nøgle"
118
+
119
+ # @ simple-history
120
+ #: dropins/SimpleHistoryRSSDropin.php:282
121
+ msgid ""
122
+ "Your RSS secret for Simple History RSS feed is wrong. Please see WordPress "
123
+ "settings for current link to the RSS feed."
124
+ msgstr ""
125
+ "Din RSS nøgle i Simpel Historik RSS feed'et er forkert. Du kan finde den "
126
+ "rigtige url under Indstillinger -> Simpel Historik."
127
+
128
+ # @ simple-history
129
+ #: dropins/SimpleHistoryRSSDropin.php:333
130
+ msgid ""
131
+ "You can generate a new address for the RSS feed. This is useful if you think "
132
+ "that the address has fallen into the wrong hands."
133
+ msgstr ""
134
+ "Du kan generere en ny RSS feed url. Dette kan være nyttigt, hvis du "
135
+ "mistænker at url'en er faldet i de forkerte hænder."
136
+
137
+ # @ simple-history
138
+ #: dropins/SimpleHistoryRSSDropin.php:336
139
+ msgid "Generate new address"
140
+ msgstr "Generere ny url"
141
+
142
+ # @ simple-history
143
+ #: dropins/SimpleHistoryRSSDropin.php:364
144
+ msgid ""
145
+ "Simple History has a RSS feed which you can subscribe to and receive log "
146
+ "updates. Make sure you only share the feed with people you trust, since it "
147
+ "can contain sensitive or confidential information."
148
+ msgstr ""
149
+ "Simpel Historik har et RSS feed, som du kan abonnere på og modtage log "
150
+ "opdateringer. Del kun dette feed med personer du stoler på, da det kan "
151
+ "indeholde følsomme eller fortrolige informationer."
152
+
153
+ # @ simple-history
154
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:22
155
+ msgid "Test data (debug)"
156
+ msgstr "Test data (debug)"
157
+
158
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:227
159
+ msgid "Plugin"
160
+ msgstr "Plugin"
161
+
162
+ #: dropins/SimpleHistorySettingsLogtestDropin.php:228
163
+ msgid "Enter title of new page"
164
+ msgstr "Indtast titlen på ny side"
165
+
166
+ # @ simple-history
167
+ #: dropins/SimpleHistorySettingsStatsDropin.php:29
168
+ msgid "Stats"
169
+ msgstr "Statistik"
170
+
171
+ # @ simple-history
172
+ #: dropins/SimpleHistorySidebarDropin.php:162 loggers/SimpleLogger.php:305
173
+ msgid "Just now"
174
+ msgstr "Lige nu"
175
+
176
+ # @ simple-history
177
+ #: inc/SimpleHistory.php:538 inc/SimpleHistory.php:821
178
  msgid "Settings"
179
  msgstr "Indstillinger"
180
 
181
  # @ simple-history
182
+ #: inc/SimpleHistory.php:549
183
  msgid "Log (debug)"
184
  msgstr "Log (debug)"
185
 
186
  # @ simple-history
187
+ #: inc/SimpleHistory.php:554
188
  msgid "Styles example (debug)"
189
  msgstr "Styles eksempel (debug)"
190
 
191
  # @ simple-history
192
  #. Plugin Name of the plugin/theme
193
+ #: inc/SimpleHistory.php:846
194
  msgid "Simple History"
195
  msgstr "Simpel historik"
196
 
197
  # @ simple-history
198
+ #: inc/SimpleHistory.php:924
199
  msgid "Remove all log items?"
200
  msgstr "Fjern alle log elementer?"
201
 
202
  # @ simple-history
203
+ #: inc/SimpleHistory.php:926
204
  msgid "Go to the first page"
205
  msgstr "Gå til den første side"
206
 
207
  # @ simple-history
208
+ #: inc/SimpleHistory.php:927
209
  msgid "Go to the previous page"
210
  msgstr "Gå til den forrige side"
211
 
212
  # @ simple-history
213
+ #: inc/SimpleHistory.php:928
214
  msgid "Go to the next page"
215
  msgstr "Gå til den næste side"
216
 
217
  # @ simple-history
218
+ #: inc/SimpleHistory.php:929
219
  msgid "Go to the last page"
220
  msgstr "Gå til den sidste side"
221
 
222
  # @ simple-history
223
+ #: inc/SimpleHistory.php:930
224
  msgid "Current page"
225
  msgstr "Nuværende side"
226
 
227
  # @ simple-history
228
+ #: inc/SimpleHistory.php:932
229
  msgid "Oups, the log could not be loaded right now."
230
  msgstr "Ups, loggen kunne ikke indlæses lige nu."
231
 
232
  # @ simple-history
233
+ #: inc/SimpleHistory.php:933
234
  msgid "Your search did not match any history events."
235
  msgstr "Din søgning gav ingen resultater."
236
 
237
  # @ simple-history
238
+ #: inc/SimpleHistory.php:1217 inc/SimpleHistory.php:1332
239
  msgid "Simple History Settings"
240
  msgstr "Simpel Historik opsætning"
241
 
242
  # @ simple-history
243
+ #: inc/SimpleHistory.php:1251
244
  msgid "No valid callback found"
245
  msgstr "Ingen gyldig callback fundet "
246
 
247
  # @ simple-history
248
+ #: inc/SimpleHistory.php:1353
249
  msgid "Cleared database"
250
  msgstr "Nulstillet database"
251
 
252
  # @ simple-history
253
+ #: inc/SimpleHistory.php:1380
254
  msgid "Show history"
255
  msgstr "Vis historik"
256
 
257
  # @ simple-history
258
+ #: inc/SimpleHistory.php:1393
259
  msgid "Number of items per page"
260
  msgstr "Antal elementer pr. side"
261
 
262
  # @ simple-history
263
+ #: inc/SimpleHistory.php:1405
264
  msgid "Clear log"
265
  msgstr "Nulstil log"
266
 
267
  # @ simple-history
268
+ #: inc/SimpleHistory.php:1544
269
  msgid "on the dashboard"
270
  msgstr "på kontrolpanelet"
271
 
272
  # @ simple-history
273
+ #: inc/SimpleHistory.php:1549
274
  msgid "as a page under the dashboard menu"
275
  msgstr "som et undermenupunkt til Kontrolpanelet "
276
 
277
  # @ simple-history
278
+ #: inc/SimpleHistory.php:1565
279
  msgid "Items in the database are automatically removed after %1$s days."
280
  msgstr "Elementer i databasen fjernes automatisk efter %1$s dage."
281
 
282
  # @ simple-history
283
+ #: inc/SimpleHistory.php:1567
284
  msgid "Items in the database are kept forever."
285
  msgstr "Elementer i databasen gemmes for evigt."
286
 
287
  # @ simple-history
288
+ #: inc/SimpleHistory.php:1571
289
  msgid "Clear log now"
290
  msgstr "Nulstil log nu"
291
 
292
+ #: inc/SimpleHistory.php:1621
293
  msgid "The log for Simple History was cleared ({num_rows} rows were removed)."
294
  msgstr ""
295
  "Loggen for Simple Historik blev nulstillet ({num_rows} rækker blev fjernet)."
296
 
297
+ #: inc/SimpleHistory.php:1885
298
  msgid "+%1$s similar event"
299
  msgid_plural "+%1$s similar events"
300
  msgstr[0] "+%1$s tilsvarende event"
301
  msgstr[1] "+%1$s tilsvarende events"
302
 
303
  # @ simple-history
304
+ #: inc/SimpleHistory.php:1892
305
  msgid "Loading…"
306
  msgstr "Indlæser..."
307
 
308
  # @ simple-history
309
+ #: inc/SimpleHistory.php:1899
310
  msgid "Showing %1$s more"
311
  msgstr "%1$s flere vises"
312
 
313
  # @ simple-history
314
+ #: inc/SimpleHistory.php:1927
315
  msgid "Context data"
316
  msgstr "Kontekst data"
317
 
318
  # @ simple-history
319
+ #: inc/SimpleHistory.php:1928
320
  msgid "This is potentially useful meta data that a logger has saved."
321
  msgstr "Dette er potentielt brugbar meta data, som en logger har gemt."
322
 
323
  # @ simple-history
324
+ #: inc/SimpleHistory.php:2448
325
  msgid "No events today so far."
326
  msgstr "Endnu ingen events i dag."
327
 
328
+ #: inc/SimpleHistory.php:2467
329
  msgid "One event today from one user."
330
  msgstr "Et event i dag, fra én bruger."
331
 
332
+ #: inc/SimpleHistory.php:2473
333
  msgid "One event today from one source."
334
  msgstr "Et event i dag, fra én kilde"
335
 
336
  # @ simple-history
337
+ #: inc/SimpleHistory.php:2479
338
  msgid "%1$d events today from one user."
339
  msgstr "%1$d events i dag fra én bruger."
340
 
341
  # @ simple-history
342
+ #: inc/SimpleHistory.php:2485
343
  msgid "%1$d events today from %2$d users."
344
  msgstr "%1$d events i dag fra %2$d brugere."
345
 
346
+ #: inc/SimpleHistory.php:2491 inc/SimpleHistory.php:2497
347
  msgid "%1$d events today from one user and one other source."
348
  msgstr "%1$d events i dag, fra én bruger og én kilde"
349
 
350
+ #: inc/SimpleHistory.php:2503
351
  msgid "%1$d events today from one user and %3$d other sources."
352
  msgstr "%1$d events i dag, fra én bruger og %3$d kilder."
353
 
354
+ #: inc/SimpleHistory.php:2509
355
  msgid "%1$s events today from %2$d users and %3$d other sources."
356
  msgstr "%1$s events i dag, fra %2$d brugere og %3$d kilder."
357
 
358
  # @ simple-history
359
+ #: index.php:74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  msgid ""
361
  "Simple History is a great plugin, but to use it your server must have at "
362
  "least PHP 5.3 installed (you have version %s)."
366
  "installeret)."
367
 
368
  # @ simple-history
369
+ #: loggers/SimpleCommentsLogger.php:689
370
  msgid "Spam"
371
  msgstr "Spam"
372
 
373
  # @ simple-history
374
+ #: loggers/SimpleCommentsLogger.php:691
375
  msgid "Approved"
376
  msgstr "Godkendt"
377
 
378
  # @ simple-history
379
+ #: loggers/SimpleCommentsLogger.php:693
380
  msgid "Pending"
381
  msgstr "Afventer"
382
 
383
  # @ simple-history
384
+ #: loggers/SimpleCommentsLogger.php:707
385
  msgid "Trackback"
386
  msgstr "Trackback"
387
 
388
  # @ simple-history
389
+ #: loggers/SimpleCommentsLogger.php:709
390
  msgid "Pingback"
391
  msgstr "Pingback"
392
 
393
  # @ simple-history
394
+ #: loggers/SimpleCommentsLogger.php:711
395
  msgid "Comment"
396
  msgstr "Kommentar"
397
 
398
+ #: loggers/SimpleCoreUpdatesLogger.php:31
399
+ msgid "Updated WordPress to {new_version} from {prev_version}"
400
+ msgstr "Opdaterede WordPress til {new_version} fra {prev_version}"
 
401
 
402
+ #: loggers/SimpleCoreUpdatesLogger.php:32
403
+ msgid "WordPress auto-updated to {new_version} from {prev_version}"
404
+ msgstr "WordPress auto-opdaterede til {new_version} fra {prev_version}"
 
405
 
406
  # @ simple-history
407
+ #: loggers/SimpleExportLogger.php:25
408
  msgid "Created XML export"
409
  msgstr "Genereret XML eksport"
410
 
411
  # @ simple-history
412
+ #: loggers/SimpleLegacyLogger.php:90
413
  msgid "By %s"
414
  msgstr "af %s"
415
 
416
  # @ simple-history
417
+ #: loggers/SimpleLegacyLogger.php:95
418
  msgid "%d occasions"
419
  msgstr "%d begivenheder"
420
 
421
  # @ simple-history
422
+ #: loggers/SimpleLogger.php:212
423
  msgid "Deleted user (had id %1$s, email %2$s, login %3$s)"
424
  msgstr "Slettet bruger (havde ID %1$s, E-mail %2$s, brugernavn %3$s)"
425
 
426
  # @ simple-history
427
+ #: loggers/SimpleLogger.php:227
428
  msgid "Anonymous web user"
429
  msgstr "Anonym besøgende"
430
 
431
  # @ simple-history
432
+ #: loggers/SimpleLogger.php:235
433
  msgid "Anonymous user from %1$s"
434
  msgstr "Anonym bruger fra %1$s"
435
 
436
  # @ simple-history
437
  #. translators: Date format for log row header, see http:php.net/date
438
+ #: loggers/SimpleLogger.php:310
439
  msgid "M j, Y \\a\\t G:i"
440
  msgstr "j. F Y \\k\\l\\. H:i"
441
 
442
  # @ simple-history
443
  #. translators: 1: last modified date and time in human time diff-format
444
+ #: loggers/SimpleLogger.php:318
445
  msgid "%1$s ago"
446
  msgstr "%1$s siden"
447
 
448
  # @ simple-history
449
+ #: loggers/SimpleMediaLogger.php:25
450
  msgid "Created {post_type} \"{attachment_title}\""
451
  msgstr "Tilføjet {post_type} \"{attachment_title}\""
452
 
453
  # @ simple-history
454
+ #: loggers/SimpleMediaLogger.php:26
455
  msgid "Edited {post_type} \"{attachment_title}\""
456
  msgstr "Redigeret {post_type} \"{attachment_title}\""
457
 
458
  # @ simple-history
459
+ #: loggers/SimpleMediaLogger.php:27
460
  msgid "Deleted {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
461
  msgstr "Slettet {post_type} \"{attachment_title}\" (\"{attachment_filename}\")"
462
 
463
  # @ simple-history
464
+ #: loggers/SimpleMediaLogger.php:121
465
  msgid "Edited {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
466
  msgstr ""
467
  "Redigeret {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
468
 
469
  # @ simple-history
470
+ #: loggers/SimpleMediaLogger.php:125
471
  msgid "Uploaded {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
472
  msgstr ""
473
  "Uploadet {post_type} <a href=\"{edit_link}\">\"{attachment_title}\"</a>"
474
 
475
  # @ simple-history
476
+ #: loggers/SimpleMediaLogger.php:237
477
  msgid "{attachment_thumb}"
478
  msgstr "{attachment_thumb}"
479
 
480
  # @ simple-history
481
+ #: loggers/SimpleMediaLogger.php:246
482
  msgid "{attachment_size_format}"
483
  msgstr "{attachment_size_format}"
484
 
485
  # @ simple-history
486
+ #: loggers/SimpleMediaLogger.php:247
487
  msgid "{attachment_filetype_extension}"
488
  msgstr "{attachment_filetype_extension}"
489
 
490
  # @ simple-history
491
+ #: loggers/SimpleMediaLogger.php:249
492
  msgid "{full_image_width} × {full_image_height}"
493
  msgstr "{full_image_width} × {full_image_height}"
494
 
495
  # @ simple-history
496
+ #: loggers/SimpleMenuLogger.php:25
497
  msgid "Created menu \"{menu_name}\""
498
  msgstr "Tilføjet menu \"{menu_name}\""
499
 
500
  # @ simple-history
501
+ #: loggers/SimpleMenuLogger.php:26
502
  msgid "Edited menu \"{menu_name}\""
503
  msgstr "Redigeret menu \"{menu_name}\""
504
 
505
  # @ simple-history
506
+ #: loggers/SimpleMenuLogger.php:27
507
  msgid "Deleted menu \"{menu_name}\""
508
  msgstr "Slettet menu \"{menu_name}\""
509
 
510
  # @ simple-history
511
+ #: loggers/SimpleMenuLogger.php:28
512
  msgid "Edited a menu item"
513
  msgstr "Redigerede et menupunkt "
514
 
515
  # @ simple-history
516
+ #: loggers/SimpleMenuLogger.php:29
517
  msgid "Updated menu locations"
518
  msgstr "Opdateret menu områder"
519
 
520
  # @ simple-history
521
+ #: loggers/SimpleOptionsLogger.php:142
522
  msgid "Updated option \"{option}\""
523
  msgstr "Opdateret indstlling \"{option}\""
524
 
525
  # @ simple-history
526
+ #: loggers/SimpleOptionsLogger.php:244 loggers/SimpleThemeLogger.php:571
527
  msgid "New value"
528
  msgstr "Ny værdi"
529
 
530
  # @ simple-history
531
+ #: loggers/SimpleOptionsLogger.php:255 loggers/SimpleThemeLogger.php:583
532
  msgid "Old value"
533
  msgstr "Gammel værdi"
534
 
535
  # @ simple-history
536
+ #: loggers/SimpleOptionsLogger.php:270 loggers/SimpleOptionsLogger.php:287
537
  msgid "Settings page"
538
  msgstr "Indstillinger side"
539
 
540
+ #: loggers/SimplePluginLogger.php:177
541
+ msgid "You don't have access to this page."
542
+ msgstr "Du har ikke adgang til denne side."
543
+
544
+ #: loggers/SimplePluginLogger.php:183 loggers/SimplePluginLogger.php:188
545
+ msgid "Could not find GitHub repository."
546
+ msgstr "Kunne ikke finde GitHub repository."
547
+
548
+ #: loggers/SimplePluginLogger.php:208
549
+ #, fuzzy
550
+ msgid ""
551
+ "<p>Viewing <code>readme</code> from repository <code><a target=\"_blank\" "
552
+ "href=\"%1$s\">%2$s</a></code>.</p>"
553
+ msgstr ""
554
+ "<p>Læser <code>readme</code> fra repository <code><a target=\"_blank\" href="
555
+ "\"%1$s\">%2$s</a></code>.</p>"
556
+
557
+ #: loggers/SimplePluginLogger.php:281
558
+ msgid "You do not have sufficient permissions to delete plugins for this site."
559
+ msgstr ""
560
+ "Du har ikke de nødvendige tilladelser til, at slette plugins på denne side."
561
+
562
+ #: loggers/SimplePluginLogger.php:1129
563
+ msgid "WordPress Plugin Repository"
564
+ msgstr "WordPress Plugin Repository"
565
+
566
+ #: loggers/SimplePluginLogger.php:1132
567
+ msgid "Uploaded ZIP archive"
568
+ msgstr "Uploaded ZIP fil"
569
+
570
  # @ simple-history
571
+ #: loggers/SimplePostLogger.php:184
572
  msgid "Created {post_type} \"{post_title}\""
573
  msgstr "Tilføjet {post_type} \"{post_title}\""
574
 
575
  # @ simple-history
576
+ #: loggers/SimplePostLogger.php:185
577
  msgid "Updated {post_type} \"{post_title}\""
578
  msgstr "Opdaterede {post_type} \"{post_title}\""
579
 
580
  # @ simple-history
581
+ #: loggers/SimplePostLogger.php:186
582
  msgid "Restored {post_type} \"{post_title}\" from trash"
583
  msgstr "Gendannede {post_type} \"{post_title}\" fra papirkurven"
584
 
585
  # @ simple-history
586
+ #: loggers/SimplePostLogger.php:187 loggers/SimplePostLogger.php:456
587
  msgid "Deleted {post_type} \"{post_title}\""
588
  msgstr "Slettede {post_type} \"{post_title}\""
589
 
590
  # @ simple-history
591
+ #: loggers/SimplePostLogger.php:188
592
  msgid "Moved {post_type} \"{post_title}\" to the trash"
593
  msgstr "Flyttede {post_type} \"{post_title}\" til papirkurven"
594
 
595
  # @ simple-history
596
+ #: loggers/SimplePostLogger.php:452
597
  msgid "Updated {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
598
  msgstr "Opdaterede {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
599
 
600
  # @ simple-history
601
+ #: loggers/SimplePostLogger.php:460
602
  msgid "Created {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
603
  msgstr "Tilføjede {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a>"
604
 
605
  # @ simple-history
606
+ #: loggers/SimplePostLogger.php:465
607
  msgid ""
608
  "Moved {post_type} <a href=\"{edit_link}\">\"{post_title}\"</a> to the trash"
609
  msgstr ""
611
  "papirkurven"
612
 
613
  # @ simple-history
614
+ #: loggers/SimpleThemeLogger.php:27
615
  msgid "Switched theme to \"{theme_name}\" from \"{prev_theme_name}\""
616
  msgstr "Skiftede tema til \"{theme_name}\" from \"{prev_theme_name}\""
617
 
618
  # @ simple-history
619
+ #: loggers/SimpleThemeLogger.php:28
620
  msgid "Customized theme appearance \"{setting_id}\""
621
  msgstr "Tilpassede tema udseende \"{setting_id}\""
622
 
623
  # @ simple-history
624
+ #: loggers/SimpleThemeLogger.php:29
625
  msgid "Removed widget \"{widget_id_base}\" from sidebar \"{sidebar_id}\""
626
  msgstr "Fjernede widget \"{widget_id_base}\" fra sidebar \"{sidebar_id}\""
627
 
628
  # @ simple-history
629
+ #: loggers/SimpleThemeLogger.php:30
630
  msgid "Added widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
631
  msgstr "Tilføjede widget \"{widget_id_base}\" to sidebar \"{sidebar_id}\""
632
 
633
  # @ simple-history
634
+ #: loggers/SimpleThemeLogger.php:31
635
  msgid "Changed widget order \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
636
  msgstr ""
637
  "Ændrede widget rækkefølge \"{widget_id_base}\" i sidebar \"{sidebar_id}\""
638
 
639
  # @ simple-history
640
+ #: loggers/SimpleThemeLogger.php:32
641
  msgid "Changed widget \"{widget_id_base}\" in sidebar \"{sidebar_id}\""
642
  msgstr "Ændrede widget \"{widget_id_base}\" i sidebar \"{sidebar_id}\""
643
 
644
  # @ simple-history
645
+ #: loggers/SimpleThemeLogger.php:33
646
  msgid "Changed settings for the theme custom background"
647
  msgstr "Ændrede tema baggrund"
648
 
649
  # @ simple-history
650
+ #: loggers/SimpleThemeLogger.php:533
651
  msgid "Section"
652
  msgstr "Sektion"
653
 
654
  # @ simple-history
655
+ #: loggers/SimpleUserLogger.php:24
656
  msgid ""
657
  "Failed to login to account with username \"{login_user_login}\" because an "
658
  "incorrect password was entered"
661
  "forkerte kodeord blev brugt"
662
 
663
  # @ simple-history
664
+ #: loggers/SimpleUserLogger.php:25
665
  msgid ""
666
  "Failed to login with username \"{failed_login_username}\" because no user "
667
  "with that username exists"
670
  "brugernavnet ikke findes"
671
 
672
  # @ simple-history
673
+ #: loggers/SimpleUserLogger.php:26
674
  msgid "Logged in"
675
  msgstr "Loggede ind"
676
 
677
  # @ simple-history
678
+ #: loggers/SimpleUserLogger.php:27
679
  msgid "Unknown user logged in"
680
  msgstr "Ukendt bruger loggede ind"
681
 
682
  # @ simple-history
683
+ #: loggers/SimpleUserLogger.php:28
684
  msgid "Logged out"
685
  msgstr "Loggede ud"
686
 
687
  # @ simple-history
688
+ #: loggers/SimpleUserLogger.php:29
689
  msgid "Edited the profile for user {edited_user_login} ({edited_user_email})"
690
  msgstr ""
691
  "Redigerede brugerprofilen for {edited_user_login} ({edited_user_email})"
692
 
693
  # @ simple-history
694
+ #: loggers/SimpleUserLogger.php:30
695
  msgid ""
696
  "Created user {created_user_login} ({created_user_email}) with role "
697
  "{created_user_role}"
700
  "{created_user_role}"
701
 
702
  # @ simple-history
703
+ #: loggers/SimpleUserLogger.php:31
704
  msgid "Deleted user {deleted_user_login} ({deleted_user_email})"
705
  msgstr "Slettede bruger {deleted_user_login} ({deleted_user_email})"
706
 
707
  # @ simple-history
708
+ #: loggers/SimpleUserLogger.php:229
709
  msgid "Edited <a href=\"{edit_profile_link}\">your profile</a>"
710
  msgstr "Redigerede <a href=\"{edit_profile_link}\">din profil</a>"
711
 
712
  # @ simple-history
713
+ #: loggers/SimpleUserLogger.php:233
714
  msgid "Edited <a href=\"{edit_profile_link}\">their profile</a>"
715
  msgstr "Redigerede <a href=\"{edit_profile_link}\">deres profil</a>"
716
 
717
  # @ simple-history
718
+ #: loggers/SimpleUserLogger.php:242
719
  msgid "Edited your profile"
720
  msgstr "Redigerede din profil"
721
 
722
  # @ simple-history
723
+ #: loggers/SimpleUserLogger.php:253
724
  msgid ""
725
  "Edited the profile for user <a href="
726
  "\"{edit_profile_link}\">{edited_user_login} ({edited_user_email})</a>"
730
 
731
  #: node_modules/grunt-wp-i18n/test/fixtures/basic-theme/exclude/file.php:3
732
  #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/plugin-include.php:6
733
+ msgid "Exclude"
734
+ msgstr "Ekskludere"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
735
 
736
+ #: node_modules/grunt-wp-i18n/test/fixtures/plugin-include/include/file.php:2
737
+ msgid "Include"
738
+ msgstr "Inkludere"
 
739
 
740
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/add-domain.php:2
741
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:2
742
+ #: node_modules/grunt-wp-i18n/test/fixtures/text-domains/update-domains.php:3
743
+ msgid "String"
744
+ msgstr "Streng"
745
 
746
+ # @ simple-history
747
+ #: templates/settings-statsIntro.php:21
748
+ msgid "<b>%1$s rows</b> have been logged the last <b>%2$s days</b>"
749
+ msgstr "<b>%1$s rows</b> er logget de sidste <b>%2$s dage</b>"
750
 
751
+ # @ simple-history
752
+ #: templates/settings-statsLogLevels.php:6
753
+ msgid "Log levels"
754
+ msgstr "Log niveauer"
755
 
756
+ # @ simple-history
757
+ #: templates/settings-statsLogLevels.php:8
758
+ msgid "Number of rows logged for each log level."
759
+ msgstr "Antal rækker logget for hver log niveau."
760
 
761
+ # @ simple-history
762
+ #: templates/settings-statsLoggers.php:5
763
+ msgid "Loggers"
764
+ msgstr "Log metoder"
765
 
766
+ # @ simple-history
767
+ #: templates/settings-statsRowsPerDay.php:6
768
+ msgid "Rows per day"
769
+ msgstr "Rækker pr. dag"
770
 
771
+ # @ simple-history
772
+ #: templates/settings-statsUsers.php:7
773
+ msgid "Users"
774
+ msgstr "Brugere"
775
 
776
+ # @ simple-history
777
+ #: templates/settings-statsUsers.php:9
778
+ msgid "Number of logged items for the 5 users with most logged rows."
779
+ msgstr "Antal logget events for de 5 brugere, med flest antal logget rækker."
780
 
781
+ # @ simple-history
782
+ #: templates/settings-statsUsers.php:10
783
+ msgid "Deleted users are also included."
784
+ msgstr "Slettet brugere er også inkluderet."
785
 
786
+ #. Plugin URI of the plugin/theme
787
+ msgid "http://simple-history.com"
788
+ msgstr "http://simple-history.com"
 
789
 
790
+ #. Description of the plugin/theme
791
+ msgid ""
792
+ "Plugin that logs various things that occur in WordPress and then presents "
793
+ "those events in a very nice GUI."
794
+ msgstr ""
795
+ "Plugin der logger forskellige ting der sker i WordPress og præsentere dem i "
796
+ "et lækkert GUI."
797
 
798
+ #. Author of the plugin/theme
799
+ msgid "Pär Thernström"
800
+ msgstr "Pär Thernström"
 
801
 
802
+ #. Author URI of the plugin/theme
803
+ msgid "http://simple-history.com/"
804
+ msgstr "http://simple-history.com/"
 
805
 
806
  # @ simple-history
807
+ #: dropins/SimpleHistoryDonateDropin.php:53
808
  msgctxt "donate settings headline"
809
  msgid "Donate"
810
  msgstr "Donér"
811
 
812
+ #: dropins/SimpleHistoryFilterDropin.php:52
813
  msgctxt "Filter dropin: button to show more search options"
814
  msgid "Show options"
815
  msgstr "Vis flere muligheder"
816
 
817
+ #: dropins/SimpleHistoryFilterDropin.php:162
818
  msgctxt "Filter dropin: button to hide more search options"
819
  msgid "Hide options"
820
  msgstr "Skjul muligheder"
821
 
822
  # @ simple-history
823
+ #: dropins/SimpleHistoryIpInfoDropin.php:68
824
  msgctxt "IP Info Dropin"
825
  msgid "That IP address does not seem like a public one."
826
  msgstr "IP adressen lader ikke til, at være en offentlig(public) IP."
827
 
828
  # @ simple-history
829
+ #: dropins/SimpleHistoryIpInfoDropin.php:87
830
  msgctxt "IP Info Dropin"
831
  msgid "IP address"
832
  msgstr "IP adresse"
833
 
834
  # @ simple-history
835
+ #: dropins/SimpleHistoryIpInfoDropin.php:98
836
  msgctxt "IP Info Dropin"
837
  msgid "Hostname"
838
  msgstr "Værtsnavn(Hostname)"
839
 
840
  # @ simple-history
841
+ #: dropins/SimpleHistoryIpInfoDropin.php:109
842
+ #: dropins/SimpleHistoryIpInfoDropin.php:120
843
  msgctxt "IP Info Dropin"
844
  msgid "Network"
845
  msgstr "Netværk"
846
 
847
  # @ simple-history
848
+ #: dropins/SimpleHistoryIpInfoDropin.php:131
849
  msgctxt "IP Info Dropin"
850
  msgid "City"
851
  msgstr "By"
852
 
853
  # @ simple-history
854
+ #: dropins/SimpleHistoryIpInfoDropin.php:142
855
  msgctxt "IP Info Dropin"
856
  msgid "Region"
857
  msgstr "Region"
858
 
859
  # @ simple-history
860
+ #: dropins/SimpleHistoryIpInfoDropin.php:153
861
  msgctxt "IP Info Dropin"
862
  msgid "Country"
863
  msgstr "Område/Land"
864
 
865
  # @ simple-history
866
+ #: dropins/SimpleHistoryIpInfoDropin.php:164
867
  msgctxt "IP Info Dropin"
868
  msgid "IP info provided by %1$s ipinfo.io %2$s"
869
  msgstr "IP info leveret af %1$s ipinfo.io %2$s"
870
 
871
+ #: dropins/SimpleHistoryNewRowsNotifier.php:40
 
872
  msgctxt "New rows notifier: error while checking for new rows"
873
+ msgid "An error occured while checking for new events"
874
+ msgstr "En fejl skete under check for nye events"
875
 
876
  # @ simple-history
877
+ #: dropins/SimpleHistoryRSSDropin.php:49
878
  msgctxt "rss settings headline"
879
  msgid "RSS feed"
880
  msgstr "RSS feed"
881
 
882
+ #: dropins/SimpleHistorySidebarDropin.php:34
883
  msgctxt "Sidebar box"
884
  msgid "Simple History is on GitHub"
885
  msgstr "Simpel Historik er på GitHub"
886
 
887
+ #: dropins/SimpleHistorySidebarDropin.php:37
888
  msgctxt "Sidebar box"
889
  msgid ""
890
  "You can star, fork, or report issues with this plugin over at the <a href="
893
  "Du kan star, fork eller rapportere issues på pluginets <a href=\"%1$s"
894
  "\">GitHub side</a>."
895
 
896
+ #: dropins/SimpleHistorySidebarDropin.php:51
897
  msgctxt "Sidebar box"
898
  msgid "Donate to support development"
899
  msgstr "Donér for at støtte udviklingen"
900
 
901
+ #: dropins/SimpleHistorySidebarDropin.php:54
902
  msgctxt "Sidebar box"
903
  msgid ""
904
  "If you like and use Simple History you should <a href=\"%1$s\">donate to "
907
  "Hvis du synes om og bruger Simpel Historik, burde du <a href=\"%1$s"
908
  "\">donére</a>, for at bibeholde dette plugin gratis."
909
 
910
+ #: dropins/SimpleHistorySidebarDropin.php:68
911
  msgctxt "Sidebar box"
912
  msgid "Review this plugin if you like it"
913
  msgstr "Bedøm gerne dette plugin"
914
 
915
+ #: dropins/SimpleHistorySidebarDropin.php:71
916
  msgctxt "Sidebar box"
917
  msgid ""
918
  "If you like Simple History then please <a href=\"%1$s\">give it a nice "
921
  "Hvis du synes om Simpel Historik, så <a href=\"%1$s\">kan du anmelde det på "
922
  "wordpress.org</a>."
923
 
924
+ #: dropins/SimpleHistorySidebarDropin.php:75
925
  msgctxt "Sidebar box"
926
  msgid ""
927
  "A good review will help new users find this plugin. And it will make the "
931
  "også gøre plugin forfatteren meget glad :)"
932
 
933
  # @ simple-history
934
+ #: inc/SimpleHistory.php:282
935
+ msgctxt ""
936
+ "Message visible while waiting for log to load from server the first time"
937
+ msgid "Loading history..."
938
+ msgstr "Indlæser historik..."
939
+
940
+ # @ simple-history
941
+ #: inc/SimpleHistory.php:319
942
+ msgctxt "page n of n"
943
+ msgid "of"
944
+ msgstr "af"
945
+
946
+ # @ simple-history
947
+ #: inc/SimpleHistory.php:390
948
+ msgctxt "API: not enought arguments passed"
949
+ msgid "Not enough args specified"
950
+ msgstr "Der er ikke specificeret argumenter nok"
951
+
952
+ # @ simple-history
953
+ #: inc/SimpleHistory.php:1314
954
+ msgctxt "dashboard menu name"
955
+ msgid "Simple History"
956
+ msgstr "Simpel Historik"
957
+
958
+ # @ simple-history
959
+ #: inc/SimpleHistory.php:1441
960
+ msgctxt "history page headline"
961
+ msgid "Simple History"
962
+ msgstr "Simpel Historik"
963
+
964
+ #: inc/SimpleHistory.php:1709
965
+ msgctxt "simple-history"
966
+ msgid "Simple History removed one event that were older than {days} days"
967
+ msgid_plural ""
968
+ "Simple History removed {num_rows} events that were older than {days} days"
969
+ msgstr[0] "Simpel Historik fjernede et event, der var ældre end {days} dage"
970
+ msgstr[1] ""
971
+ "Simpel Historik fjernede {num_events} events, der var ældre end {days} dage"
972
+
973
+ #: inc/SimpleHistory.php:2064
974
+ msgctxt "Log level in gui"
975
+ msgid "emergency"
976
+ msgstr "Nødstilfælde"
977
+
978
+ #: inc/SimpleHistory.php:2068
979
+ msgctxt "Log level in gui"
980
+ msgid "alert"
981
+ msgstr "alarm"
982
+
983
+ #: inc/SimpleHistory.php:2072
984
+ msgctxt "Log level in gui"
985
+ msgid "critical"
986
+ msgstr "kritisk"
987
+
988
+ #: inc/SimpleHistory.php:2076
989
+ msgctxt "Log level in gui"
990
+ msgid "error"
991
+ msgstr "fejl"
992
+
993
+ #: inc/SimpleHistory.php:2080
994
+ msgctxt "Log level in gui"
995
+ msgid "warning"
996
+ msgstr "advarsel"
997
+
998
+ #: inc/SimpleHistory.php:2084
999
+ msgctxt "Log level in gui"
1000
+ msgid "notice"
1001
+ msgstr "meddelelse"
1002
+
1003
+ #: inc/SimpleHistory.php:2088
1004
+ msgctxt "Log level in gui"
1005
+ msgid "info"
1006
+ msgstr "info"
1007
+
1008
+ #: inc/SimpleHistory.php:2092
1009
+ msgctxt "Log level in gui"
1010
+ msgid "debug"
1011
+ msgstr "debug"
1012
+
1013
+ #: inc/SimpleHistory.php:2097
1014
+ msgctxt "Log level in gui"
1015
+ msgid "Emergency"
1016
+ msgstr "Nødstilfælde"
1017
+
1018
+ #: inc/SimpleHistory.php:2101
1019
+ msgctxt "Log level in gui"
1020
+ msgid "Alert"
1021
+ msgstr "Alarm"
1022
+
1023
+ #: inc/SimpleHistory.php:2105
1024
+ msgctxt "Log level in gui"
1025
+ msgid "Critical"
1026
+ msgstr "Kritisk"
1027
+
1028
+ #: inc/SimpleHistory.php:2109
1029
+ msgctxt "Log level in gui"
1030
+ msgid "Error"
1031
+ msgstr "Fejl"
1032
+
1033
+ #: inc/SimpleHistory.php:2113
1034
+ msgctxt "Log level in gui"
1035
+ msgid "Warning"
1036
+ msgstr "Advarsel"
1037
+
1038
+ #: inc/SimpleHistory.php:2117
1039
+ msgctxt "Log level in gui"
1040
+ msgid "Notice"
1041
+ msgstr "Meddelse"
1042
+
1043
+ #: inc/SimpleHistory.php:2121
1044
+ msgctxt "Log level in gui"
1045
+ msgid "Info"
1046
+ msgstr "Info"
1047
+
1048
+ #: inc/SimpleHistory.php:2125
1049
+ msgctxt "Log level in gui"
1050
+ msgid "Debug"
1051
+ msgstr "Debug"
1052
+
1053
+ # @ simple-history
1054
+ #: loggers/SimpleCommentsLogger.php:97
1055
  msgctxt "A comment was added to the database by a non-logged in internet user"
1056
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
1057
  msgstr ""
1058
  "Tilføjede en kommentar til {comment_post_type} \"{comment_post_title}\""
1059
 
1060
  # @ simple-history
1061
+ #: loggers/SimpleCommentsLogger.php:103
1062
  msgctxt "A comment was added to the database by a logged in user"
1063
  msgid "Added a comment to {comment_post_type} \"{comment_post_title}\""
1064
  msgstr ""
1065
  "Tilføjede en kommentar til {comment_post_type} \"{comment_post_title}\""
1066
 
1067
  # @ simple-history
1068
+ #: loggers/SimpleCommentsLogger.php:109
1069
  msgctxt "A comment was approved"
1070
  msgid ""
1071
  "Approved a comment to \"{comment_post_title}\" by {comment_author} "
1075
  "({comment_author_email})"
1076
 
1077
  # @ simple-history
1078
+ #: loggers/SimpleCommentsLogger.php:115
1079
  msgctxt "A comment was was unapproved"
1080
  msgid ""
1081
  "Unapproved a comment to \"{comment_post_title}\" by {comment_author} "
1085
  "({comment_author_email})"
1086
 
1087
  # @ simple-history
1088
+ #: loggers/SimpleCommentsLogger.php:121
1089
  msgctxt "A comment was marked as spam"
1090
  msgid "Marked a comment to post \"{comment_post_title}\" as spam"
1091
  msgstr "Markerede en kommentar til indlægget \"{comment_post_title}\" som spam"
1092
 
1093
  # @ simple-history
1094
+ #: loggers/SimpleCommentsLogger.php:127
1095
  msgctxt "A comment was marked moved to the trash"
1096
  msgid ""
1097
  "Trashed a comment to \"{comment_post_title}\" by {comment_author} "
1101
  "({comment_author_email}) i papirkurven"
1102
 
1103
  # @ simple-history
1104
+ #: loggers/SimpleCommentsLogger.php:133
1105
  msgctxt "A comment was restored from the trash"
1106
  msgid ""
1107
  "Restored a comment to \"{comment_post_title}\" by {comment_author} "
1111
  "({comment_author_email}) fra papirkurven"
1112
 
1113
  # @ simple-history
1114
+ #: loggers/SimpleCommentsLogger.php:139
1115
  msgctxt "A comment was deleted"
1116
  msgid ""
1117
  "Deleted a comment to \"{comment_post_title}\" by {comment_author} "
1121
  "({comment_author_email})"
1122
 
1123
  # @ simple-history
1124
+ #: loggers/SimpleCommentsLogger.php:145
1125
  msgctxt "A comment was edited"
1126
  msgid ""
1127
  "Edited a comment to \"{comment_post_title}\" by {comment_author} "
1131
  "({comment_author_email})"
1132
 
1133
  # @ simple-history
1134
+ #: loggers/SimpleCommentsLogger.php:152
1135
  msgctxt ""
1136
  "A trackback was added to the database by a non-logged in internet user"
1137
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
1139
  "Tilføjede en trackback til {comment_post_type} \"{comment_post_title}\""
1140
 
1141
  # @ simple-history
1142
+ #: loggers/SimpleCommentsLogger.php:207
1143
  msgctxt ""
1144
  "A trackback was added to the database by a non-logged in internet user"
1145
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1146
  msgstr "Tilføjede en pingback til {comment_post_type} \"{comment_post_title}\""
1147
 
1148
  # @ simple-history
1149
+ #: loggers/SimpleCommentsLogger.php:158
1150
  msgctxt "A trackback was added to the database by a logged in user"
1151
  msgid "Added a trackback to {comment_post_type} \"{comment_post_title}\""
1152
  msgstr ""
1153
  "Tilføjede en trackback til {comment_post_type} \"{comment_post_title}\""
1154
 
1155
  # @ simple-history
1156
+ #: loggers/SimpleCommentsLogger.php:164
1157
  msgctxt "A trackback was approved"
1158
  msgid ""
1159
  "Approved a trackback to \"{comment_post_title}\" by {comment_author} "
1163
  "({comment_author_email})"
1164
 
1165
  # @ simple-history
1166
+ #: loggers/SimpleCommentsLogger.php:170
1167
  msgctxt "A trackback was was unapproved"
1168
  msgid ""
1169
  "Unapproved a trackback to \"{comment_post_title}\" by {comment_author} "
1173
  "({comment_author_email})"
1174
 
1175
  # @ simple-history
1176
+ #: loggers/SimpleCommentsLogger.php:176
1177
  msgctxt "A trackback was marked as spam"
1178
  msgid "Marked a trackback to post \"{comment_post_title}\" as spam"
1179
  msgstr "Markerede en trackback til indlægget \"{comment_post_title}\" som spam"
1180
 
1181
  # @ simple-history
1182
+ #: loggers/SimpleCommentsLogger.php:182
1183
  msgctxt "A trackback was marked moved to the trash"
1184
  msgid ""
1185
  "Trashed a trackback to \"{comment_post_title}\" by {comment_author} "
1189
  "({comment_author_email}) til papirkurven"
1190
 
1191
  # @ simple-history
1192
+ #: loggers/SimpleCommentsLogger.php:188
1193
  msgctxt "A trackback was restored from the trash"
1194
  msgid ""
1195
  "Restored a trackback to \"{comment_post_title}\" by {comment_author} "
1199
  "({comment_author_email}) fra papirkurven"
1200
 
1201
  # @ simple-history
1202
+ #: loggers/SimpleCommentsLogger.php:194
1203
  msgctxt "A trackback was deleted"
1204
  msgid ""
1205
  "Deleted a trackback to \"{comment_post_title}\" by {comment_author} "
1209
  "({comment_author_email})"
1210
 
1211
  # @ simple-history
1212
+ #: loggers/SimpleCommentsLogger.php:200
1213
  msgctxt "A trackback was edited"
1214
  msgid ""
1215
  "Edited a trackback to \"{comment_post_title}\" by {comment_author} "
1219
  "({comment_author_email})"
1220
 
1221
  # @ simple-history
1222
+ #: loggers/SimpleCommentsLogger.php:213
1223
  msgctxt "A pingback was added to the database by a logged in user"
1224
  msgid "Added a pingback to {comment_post_type} \"{comment_post_title}\""
1225
  msgstr "Tilføjede en pingback til {comment_post_type} \"{comment_post_title}\""
1226
 
1227
  # @ simple-history
1228
+ #: loggers/SimpleCommentsLogger.php:219
1229
  msgctxt "A pingback was approved"
1230
  msgid ""
1231
  "Approved a pingback to \"{comment_post_title}\" by "
1235
  "\"{comment_author}\"\" ({comment_author_email})"
1236
 
1237
  # @ simple-history
1238
+ #: loggers/SimpleCommentsLogger.php:225
1239
  msgctxt "A pingback was was unapproved"
1240
  msgid ""
1241
  "Unapproved a pingback to \"{comment_post_title}\" by "
1245
  "\"{comment_author}\" ({comment_author_email})"
1246
 
1247
  # @ simple-history
1248
+ #: loggers/SimpleCommentsLogger.php:231
1249
  msgctxt "A pingback was marked as spam"
1250
  msgid "Marked a pingback to post \"{comment_post_title}\" as spam"
1251
  msgstr "Markerede en pingback til indlægget \"{comment_post_title}\" som spam"
1252
 
1253
  # @ simple-history
1254
+ #: loggers/SimpleCommentsLogger.php:237
1255
  msgctxt "A pingback was marked moved to the trash"
1256
  msgid ""
1257
  "Trashed a pingback to \"{comment_post_title}\" by {comment_author} "
1261
  "({comment_author_email}) til papirkurven"
1262
 
1263
  # @ simple-history
1264
+ #: loggers/SimpleCommentsLogger.php:243
1265
  msgctxt "A pingback was restored from the trash"
1266
  msgid ""
1267
  "Restored a pingback to \"{comment_post_title}\" by {comment_author} "
1271
  "({comment_author_email}) fra papirkurven"
1272
 
1273
  # @ simple-history
1274
+ #: loggers/SimpleCommentsLogger.php:249
1275
  msgctxt "A pingback was deleted"
1276
  msgid ""
1277
  "Deleted a pingback to \"{comment_post_title}\" by {comment_author} "
1281
  "({comment_author_email})"
1282
 
1283
  # @ simple-history
1284
+ #: loggers/SimpleCommentsLogger.php:255
1285
  msgctxt "A pingback was edited"
1286
  msgid ""
1287
  "Edited a pingback to \"{comment_post_title}\" by {comment_author} "
1291
  "({comment_author_email})"
1292
 
1293
  # @ simple-history
1294
+ #: loggers/SimpleCommentsLogger.php:266
1295
  msgctxt "Comments logger: search"
1296
  msgid "Comments"
1297
  msgstr "Kommentarer"
1298
 
1299
  # @ simple-history
1300
+ #: loggers/SimpleCommentsLogger.php:267
1301
  msgctxt "Comments logger: search"
1302
  msgid "All comments activity"
1303
  msgstr "Alt kommentar aktivitet"
1304
 
1305
  # @ simple-history
1306
+ #: loggers/SimpleCommentsLogger.php:269
1307
  msgctxt "Comments logger: search"
1308
  msgid "Added comments"
1309
  msgstr "Tilføjet kommentarer"
1310
 
1311
  # @ simple-history
1312
+ #: loggers/SimpleCommentsLogger.php:277
1313
  msgctxt "Comments logger: search"
1314
  msgid "Edited comments"
1315
  msgstr "Redigeret kommentarer"
1316
 
1317
  # @ simple-history
1318
+ #: loggers/SimpleCommentsLogger.php:282
1319
  msgctxt "Comments logger: search"
1320
  msgid "Approved comments"
1321
  msgstr "Godkendte kommentarer"
1322
 
1323
  # @ simple-history
1324
+ #: loggers/SimpleCommentsLogger.php:287
1325
  msgctxt "Comments logger: search"
1326
  msgid "Held comments"
1327
  msgstr "Afventer kommentarer"
1328
 
1329
  # @ simple-history
1330
+ #: loggers/SimpleCommentsLogger.php:292
1331
  msgctxt "Comments logger: search"
1332
  msgid "Comments status changed to spam"
1333
  msgstr "Kommentarer status ændre til spam"
1334
 
1335
  # @ simple-history
1336
+ #: loggers/SimpleCommentsLogger.php:297
1337
  msgctxt "Comments logger: search"
1338
  msgid "Trashed comments"
1339
  msgstr "Kommentarer flyttet til papirkurven"
1340
 
1341
  # @ simple-history
1342
+ #: loggers/SimpleCommentsLogger.php:302
1343
  msgctxt "Comments logger: search"
1344
  msgid "Untrashed comments"
1345
  msgstr "Gendannet kommentarer"
1346
 
1347
  # @ simple-history
1348
+ #: loggers/SimpleCommentsLogger.php:307
1349
  msgctxt "Comments logger: search"
1350
  msgid "Deleted comments"
1351
  msgstr "Slettet kommentarer"
1352
 
1353
  # @ simple-history
1354
+ #: loggers/SimpleCommentsLogger.php:604 loggers/SimpleCommentsLogger.php:617
1355
+ #: loggers/SimpleCommentsLogger.php:631
1356
  msgctxt "comments logger - detailed output comment status"
1357
  msgid "Status"
1358
  msgstr "Status"
1359
 
1360
  # @ simple-history
1361
+ #: loggers/SimpleCommentsLogger.php:606 loggers/SimpleCommentsLogger.php:619
1362
+ #: loggers/SimpleCommentsLogger.php:633
1363
  msgctxt "comments logger - detailed output author"
1364
  msgid "Name"
1365
  msgstr "Navn"
1366
 
1367
  # @ simple-history
1368
+ #: loggers/SimpleCommentsLogger.php:607 loggers/SimpleCommentsLogger.php:620
1369
+ #: loggers/SimpleCommentsLogger.php:634
1370
  msgctxt "comments logger - detailed output email"
1371
  msgid "Email"
1372
  msgstr "E-mail"
1373
 
1374
  # @ simple-history
1375
+ #: loggers/SimpleCommentsLogger.php:608 loggers/SimpleCommentsLogger.php:621
1376
  msgctxt "comments logger - detailed output content"
1377
  msgid "Content"
1378
  msgstr "Indhold"
1379
 
1380
  # @ simple-history
1381
+ #: loggers/SimpleCommentsLogger.php:635
1382
  msgctxt "comments logger - detailed output content"
1383
  msgid "Comment"
1384
  msgstr "Kommentar"
1385
 
1386
  # @ simple-history
1387
+ #: loggers/SimpleCommentsLogger.php:771
1388
  msgctxt "comments logger - edit comment"
1389
  msgid "View/Edit"
1390
  msgstr "Vis/Rediger"
1391
 
1392
  # @ simple-history
1393
+ #: loggers/SimpleCoreUpdatesLogger.php:36
1394
  msgctxt "User logger: search"
1395
  msgid "WordPress Core"
1396
  msgstr "WordPress Core"
1397
 
1398
  # @ simple-history
1399
+ #: loggers/SimpleCoreUpdatesLogger.php:38
1400
  msgctxt "User logger: search"
1401
  msgid "WordPress core updates"
1402
  msgstr "WordPress Core opdateringer"
1403
 
1404
  # @ simple-history
1405
+ #: loggers/SimpleUserLogger.php:56
1406
  msgctxt "User logger: search"
1407
  msgid "Users"
1408
  msgstr "Brugere"
1409
 
1410
  # @ simple-history
1411
+ #: loggers/SimpleUserLogger.php:57
1412
  msgctxt "User logger: search"
1413
  msgid "All user activity"
1414
  msgstr "Alt bruger aktivitet"
1415
 
1416
  # @ simple-history
1417
+ #: loggers/SimpleUserLogger.php:59
1418
  msgctxt "User logger: search"
1419
  msgid "Successful user logins"
1420
  msgstr "Succesfulde bruger log ind"
1421
 
1422
  # @ simple-history
1423
+ #: loggers/SimpleUserLogger.php:63
1424
  msgctxt "User logger: search"
1425
  msgid "Failed user logins"
1426
  msgstr "Mislykket bruger log ind"
1427
 
1428
  # @ simple-history
1429
+ #: loggers/SimpleUserLogger.php:67
1430
  msgctxt "User logger: search"
1431
  msgid "User logouts"
1432
  msgstr "Bruger log ud"
1433
 
1434
  # @ simple-history
1435
+ #: loggers/SimpleUserLogger.php:70
1436
  msgctxt "User logger: search"
1437
  msgid "Created users"
1438
  msgstr "Tilføjet brugere"
1439
 
1440
  # @ simple-history
1441
+ #: loggers/SimpleUserLogger.php:73
1442
  msgctxt "User logger: search"
1443
  msgid "User profile updates"
1444
  msgstr "Brugerprofil opdateringer"
1445
 
1446
  # @ simple-history
1447
+ #: loggers/SimpleUserLogger.php:76
1448
  msgctxt "User logger: search"
1449
  msgid "User deletions"
1450
  msgstr "Slettet brugere"
1451
 
1452
  # @ simple-history
1453
+ #: loggers/SimpleExportLogger.php:29
1454
  msgctxt "Export logger: search"
1455
  msgid "Export"
1456
  msgstr "Eksport"
1457
 
1458
  # @ simple-history
1459
+ #: loggers/SimpleExportLogger.php:31
1460
  msgctxt "Export logger: search"
1461
  msgid "Created exports"
1462
  msgstr "Genereret eksporteringer"
1463
 
1464
  # @ simple-history
1465
+ #: loggers/SimpleLogger.php:199
1466
  msgctxt "header output when initiator is the currently logged in user"
1467
  msgid "You"
1468
  msgstr "Dig"
1469
 
1470
  # @ simple-history
1471
+ #: loggers/SimpleMediaLogger.php:31
1472
  msgctxt "Media logger: search"
1473
  msgid "Media"
1474
  msgstr "Medier"
1475
 
1476
  # @ simple-history
1477
+ #: loggers/SimpleMediaLogger.php:33
1478
  msgctxt "Media logger: search"
1479
  msgid "Added media"
1480
  msgstr "Tilføjet medier"
1481
 
1482
  # @ simple-history
1483
+ #: loggers/SimpleMediaLogger.php:36
1484
  msgctxt "Media logger: search"
1485
  msgid "Updated media"
1486
  msgstr "Opdateret medier"
1487
 
1488
  # @ simple-history
1489
+ #: loggers/SimpleMediaLogger.php:39
1490
  msgctxt "Media logger: search"
1491
  msgid "Deleted media"
1492
  msgstr "Slettet medier"
1493
 
1494
  # @ simple-history
1495
+ #: loggers/SimpleMenuLogger.php:33
1496
  msgctxt "Menu logger: search"
1497
  msgid "Menus"
1498
  msgstr "Menuer"
1499
 
1500
  # @ simple-history
1501
+ #: loggers/SimpleMenuLogger.php:35
1502
  msgctxt "Menu updates logger: search"
1503
  msgid "Created menus"
1504
  msgstr "Tilføjet menuer"
1505
 
1506
  # @ simple-history
1507
+ #: loggers/SimpleMenuLogger.php:38
1508
  msgctxt "Menu updates logger: search"
1509
  msgid "Edited menus"
1510
  msgstr "Redigeret menuer"
1511
 
1512
  # @ simple-history
1513
+ #: loggers/SimpleMenuLogger.php:43
1514
  msgctxt "Menu updates logger: search"
1515
  msgid "Deleted menus"
1516
  msgstr "Slettet menuer"
1517
 
1518
  # @ simple-history
1519
+ #: loggers/SimpleMenuLogger.php:328
1520
  msgctxt "menu logger"
1521
  msgid "%1$s menu item added"
1522
  msgid_plural "%1$s menu items added"
1524
  msgstr[1] "%1$s menupunkter tilføjet"
1525
 
1526
  # @ simple-history
1527
+ #: loggers/SimpleMenuLogger.php:335
1528
  msgctxt "menu logger"
1529
  msgid "%1$s menu item removed"
1530
  msgid_plural "%1$s menu items removed"
1532
  msgstr[1] "%1$s menupunkter fjernet"
1533
 
1534
  # @ simple-history
1535
+ #: loggers/SimpleOptionsLogger.php:155
1536
  msgctxt "Options logger: search"
1537
  msgid "Options"
1538
  msgstr "Indstillinger"
1539
 
1540
  # @ simple-history
1541
+ #: loggers/SimpleOptionsLogger.php:157
1542
  msgctxt "Options logger: search"
1543
  msgid "Changed options"
1544
  msgstr "Ændret indstillinger"
1545
 
1546
  # @ simple-history
1547
+ #: loggers/SimplePluginLogger.php:27
1548
  msgctxt "Plugin was non-silently activated by a user"
1549
  msgid "Activated plugin \"{plugin_name}\""
1550
  msgstr "Aktiverede pluginet \"{plugin_name}\""
1551
 
1552
  # @ simple-history
1553
+ #: loggers/SimplePluginLogger.php:33
1554
  msgctxt "Plugin was non-silently deactivated by a user"
1555
  msgid "Deactivated plugin \"{plugin_name}\""
1556
  msgstr "Deaktiverede pluginet \"{plugin_name}\""
1557
 
1558
  # @ simple-history
1559
+ #: loggers/SimplePluginLogger.php:39
1560
  msgctxt "Plugin was installed"
1561
  msgid "Installed plugin \"{plugin_name}\""
1562
  msgstr "Installerede pluginet \"{plugin_name}\""
1563
 
1564
  # @ simple-history
1565
+ #: loggers/SimplePluginLogger.php:45
1566
  msgctxt "Plugin failed to install"
1567
  msgid "Failed to install plugin \"{plugin_name}\""
1568
  msgstr "Mislykkede i at installere pluginet \"{plugin_name}\""
1569
 
1570
  # @ simple-history
1571
+ #: loggers/SimplePluginLogger.php:51
1572
  msgctxt "Plugin was updated"
1573
  msgid ""
1574
  "Updated plugin \"{plugin_name}\" to version {plugin_version} from "
1578
  "{plugin_prev_version}"
1579
 
1580
  # @ simple-history
1581
+ #: loggers/SimplePluginLogger.php:57
1582
  msgctxt "Plugin update failed"
1583
  msgid "Updated plugin \"{plugin_name}\""
1584
  msgstr "Opdaterede pluginet \"{plugin_name}\""
1585
 
1586
  # @ simple-history
1587
+ #: loggers/SimplePluginLogger.php:63
1588
  msgctxt "Plugin file edited"
1589
  msgid "Edited plugin file \"{plugin_edited_file}\""
1590
  msgstr "Redigerede plugin filen \"{plugin_edited_file}\""
1591
 
1592
  # @ simple-history
1593
+ #: loggers/SimplePluginLogger.php:69
1594
  msgctxt "Plugin files was deleted"
1595
  msgid "Deleted plugin \"{plugin_name}\""
1596
  msgstr "Slettede pluginet \"{plugin_name}\""
1597
 
1598
  # @ simple-history
1599
+ #: loggers/SimplePluginLogger.php:76
1600
  msgctxt "Plugin was updated in bulk"
1601
  msgid ""
1602
  "Updated plugin \"{plugin_name}\" to {plugin_version} from "
1606
  "{plugin_prev_version}"
1607
 
1608
  # @ simple-history
1609
+ #: loggers/SimplePluginLogger.php:84
1610
  msgctxt "Plugin logger: search"
1611
  msgid "Plugins"
1612
  msgstr "Plugins"
1613
 
1614
  # @ simple-history
1615
+ #: loggers/SimplePluginLogger.php:86
1616
  msgctxt "Plugin logger: search"
1617
  msgid "Activated plugins"
1618
  msgstr "Aktiveret plugins"
1619
 
1620
  # @ simple-history
1621
+ #: loggers/SimplePluginLogger.php:89
1622
  msgctxt "Plugin logger: search"
1623
  msgid "Deactivated plugins"
1624
  msgstr "Deaktiveret plugins"
1625
 
1626
  # @ simple-history
1627
+ #: loggers/SimplePluginLogger.php:92
1628
  msgctxt "Plugin logger: search"
1629
  msgid "Installed plugins"
1630
  msgstr "Installeret plugins"
1631
 
1632
  # @ simple-history
1633
+ #: loggers/SimplePluginLogger.php:95
1634
  msgctxt "Plugin logger: search"
1635
  msgid "Failed plugin installs"
1636
  msgstr "Mislykket plugin installeringer"
1637
 
1638
  # @ simple-history
1639
+ #: loggers/SimplePluginLogger.php:98
1640
  msgctxt "Plugin logger: search"
1641
  msgid "Updated plugins"
1642
  msgstr "Opdateret plugins"
1643
 
1644
  # @ simple-history
1645
+ #: loggers/SimplePluginLogger.php:102
1646
  msgctxt "Plugin logger: search"
1647
  msgid "Failed plugin updates"
1648
  msgstr "Mislykket plugin opdateringer"
1649
 
1650
  # @ simple-history
1651
+ #: loggers/SimplePluginLogger.php:105
1652
  msgctxt "Plugin logger: search"
1653
  msgid "Edited plugin files"
1654
  msgstr "Redigeret plugin filer"
1655
 
1656
  # @ simple-history
1657
+ #: loggers/SimplePluginLogger.php:108
1658
  msgctxt "Plugin logger: search"
1659
  msgid "Deleted plugins"
1660
  msgstr "Slettet plugins"
1661
 
1662
+ #: loggers/SimplePluginLogger.php:1081
1663
+ msgctxt "plugin logger - detailed output"
1664
+ msgid "Description"
1665
+ msgstr "Beskrivelse"
1666
+
1667
+ #: loggers/SimplePluginLogger.php:1082
1668
+ msgctxt "plugin logger - detailed output install source"
1669
+ msgid "Source"
1670
+ msgstr "Kilde"
1671
+
1672
+ #: loggers/SimplePluginLogger.php:1083
1673
+ msgctxt "plugin logger - detailed output install source"
1674
+ msgid "Source file name"
1675
+ msgstr "Kilde filnavn"
1676
+
1677
  # @ simple-history
1678
+ #: loggers/SimplePluginLogger.php:1084
1679
  msgctxt "plugin logger - detailed output version"
1680
  msgid "Version"
1681
  msgstr "Version"
1682
 
1683
  # @ simple-history
1684
+ #: loggers/SimplePluginLogger.php:1085
1685
  msgctxt "plugin logger - detailed output author"
1686
  msgid "Author"
1687
  msgstr "Forfatter"
1688
 
1689
  # @ simple-history
1690
+ #: loggers/SimplePluginLogger.php:1086
 
 
 
 
 
 
1691
  msgctxt "plugin logger - detailed output url"
1692
  msgid "URL"
1693
  msgstr "URL"
1694
 
1695
  # @ simple-history
1696
+ #: loggers/SimplePluginLogger.php:1194 loggers/SimplePluginLogger.php:1213
1697
+ #: loggers/SimplePluginLogger.php:1252
 
 
 
 
 
 
 
 
 
 
 
1698
  msgctxt "plugin logger: plugin info thickbox title view all info"
1699
  msgid "View plugin info"
1700
  msgstr "Vis plugin info"
1701
 
1702
  # @ simple-history
1703
+ #: loggers/SimplePluginLogger.php:1228
1704
  msgctxt "plugin logger: plugin info thickbox title"
1705
  msgid "View plugin info"
1706
  msgstr "Vis plugin info"
1707
 
1708
  # @ simple-history
1709
+ #: loggers/SimplePluginLogger.php:1232
1710
  msgctxt "plugin logger: plugin info thickbox title"
1711
  msgid "View changelog"
1712
  msgstr "Vis changelog"
1713
 
1714
  # @ simple-history
1715
+ #: loggers/SimplePostLogger.php:192
1716
  msgctxt "Post logger: search"
1717
  msgid "Posts & Pages"
1718
  msgstr "Indlæg & Sider"
1719
 
1720
  # @ simple-history
1721
+ #: loggers/SimplePostLogger.php:194
1722
  msgctxt "Post logger: search"
1723
  msgid "Posts created"
1724
  msgstr "Indlæg tilføjet"
1725
 
1726
  # @ simple-history
1727
+ #: loggers/SimplePostLogger.php:197
1728
  msgctxt "Post logger: search"
1729
  msgid "Posts updated"
1730
  msgstr "Indlæg opdateret"
1731
 
1732
  # @ simple-history
1733
+ #: loggers/SimplePostLogger.php:200
1734
  msgctxt "Post logger: search"
1735
  msgid "Posts trashed"
1736
  msgstr "Indlæg flyttet til papirkurven"
1737
 
1738
  # @ simple-history
1739
+ #: loggers/SimplePostLogger.php:203
1740
  msgctxt "Post logger: search"
1741
  msgid "Posts deleted"
1742
  msgstr "Indlæg slettet"
1743
 
1744
  # @ simple-history
1745
+ #: loggers/SimplePostLogger.php:206
1746
  msgctxt "Post logger: search"
1747
  msgid "Posts restored"
1748
  msgstr "Indlæg gendannet"
1749
 
1750
  # @ simple-history
1751
+ #: loggers/SimpleThemeLogger.php:37
1752
  msgctxt "Theme logger: search"
1753
  msgid "Themes & Widgets"
1754
  msgstr "Tema & Widgets"
1755
 
1756
  # @ simple-history
1757
+ #: loggers/SimpleThemeLogger.php:39
1758
  msgctxt "Theme logger: search"
1759
  msgid "Switched themes"
1760
  msgstr "Skiftet temaer"
1761
 
1762
  # @ simple-history
1763
+ #: loggers/SimpleThemeLogger.php:42
1764
  msgctxt "Theme logger: search"
1765
  msgid "Changed appearance of themes"
1766
  msgstr "Skiftet udseende på temaer"
1767
 
1768
  # @ simple-history
1769
+ #: loggers/SimpleThemeLogger.php:45
1770
  msgctxt "Theme logger: search"
1771
  msgid "Added widgets"
1772
  msgstr "Tilføjet widgets"
1773
 
1774
  # @ simple-history
1775
+ #: loggers/SimpleThemeLogger.php:48
1776
  msgctxt "Theme logger: search"
1777
  msgid "Removed widgets"
1778
  msgstr "Fjernet widgets"
1779
 
1780
  # @ simple-history
1781
+ #: loggers/SimpleThemeLogger.php:51
1782
  msgctxt "Theme logger: search"
1783
  msgid "Changed widgets order"
1784
  msgstr "Ændret widget rækkefølge"
1785
 
1786
  # @ simple-history
1787
+ #: loggers/SimpleThemeLogger.php:54
1788
  msgctxt "Theme logger: search"
1789
  msgid "Edited widgets"
1790
  msgstr "Ændret widgets"
1791
 
1792
  # @ simple-history
1793
+ #: loggers/SimpleThemeLogger.php:57
1794
  msgctxt "Theme logger: search"
1795
  msgid "Background of themes changed"
1796
  msgstr "Baggrund og tema ændret"
1797
 
1798
  # @ simple-history
1799
+ #: loggers/SimpleUserLogger.php:38
1800
  msgctxt "User destroys other login sessions for themself"
1801
  msgid "Logged out from all other sessions"
1802
  msgstr "Loggede ud fra alle andre sessioner"
1803
 
1804
  # @ simple-history
1805
+ #: loggers/SimpleUserLogger.php:47
1806
  msgctxt "User destroys all login sessions for a user"
1807
  msgid "Logged out \"{user_display_name}\" from all sessions"
1808
  msgstr "Loggede ud \"{user_display_name}\" fra alle sessioner"
1809
 
1810
  # @ simple-history
1811
+ #: templates/settings-statsRowsPerDay.php:38
1812
  msgctxt "stats: date in rows per day chart"
1813
  msgid "M j"
1814
  msgstr "j. F"
1815
 
1816
+ # @ simple-history
1817
+ #~ msgid "1 new row"
1818
+ #~ msgid_plural "%d new rows"
1819
+ #~ msgstr[0] "1 ny række"
1820
+ #~ msgstr[1] "%d nye rækker"
1821
+
1822
+ # @ simple-history
1823
+ #~ msgid "Updated WordPress from {prev_version} to {new_version}"
1824
+ #~ msgstr "Opdaterede WordPress fra {prev_version} til {new_version}"
1825
+
1826
+ # @ simple-history
1827
+ #~ msgid "WordPress auto-updated from {prev_version} to {new_version}"
1828
+ #~ msgstr "WordPress auto-opdaterede fra {prev_version} til {new_version}"
1829
+
1830
+ # @ simple-history
1831
+ #~ msgctxt "New rows notifier: error while checking for new rows"
1832
+ #~ msgid "An error occured while checking for new log rows"
1833
+ #~ msgstr "Der forekom en fejl, mens der blev tjekket efter nye log rækker"
1834
+
1835
+ # @ simple-history
1836
+ #~ msgctxt "plugin logger - detailed output author"
1837
+ #~ msgid "Requires"
1838
+ #~ msgstr "Kræver"
1839
+
1840
+ # @ simple-history
1841
+ #~ msgctxt "plugin logger - detailed output compatible"
1842
+ #~ msgid "Compatible up to"
1843
+ #~ msgstr "Kompatible op til"
1844
+
1845
+ # @ simple-history
1846
+ #~ msgctxt "plugin logger - detailed output downloaded"
1847
+ #~ msgid "Downloads"
1848
+ #~ msgstr "Downloads"
1849
+
1850
  # @ simple-history
1851
  #~ msgid "+%1$s more"
1852
  #~ msgstr "+%1$s more"
loggers/SimpleLogger.php CHANGED
@@ -222,19 +222,58 @@ class SimpleLogger {
222
 
223
  case "web_user":
224
 
225
- if (empty($context["_server_remote_addr"])) {
 
 
 
 
 
 
 
 
 
 
 
226
 
227
  $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided'>" . __("Anonymous web user", "simple-history") . "</strong> ";
228
 
229
  } else {
230
 
231
- $iplookup_link = sprintf('https://ipinfo.io/%1$s', esc_attr($context["_server_remote_addr"]));
232
-
233
  $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided SimpleHistoryLogitem__anonUserWithIp'>";
234
- $initiator_html .= sprintf(
235
- __('Anonymous user from %1$s', "simple-history"),
236
- "<a target='_blank' href={$iplookup_link} class='SimpleHistoryLogitem__anonUserWithIp__theIp'>" . esc_attr($context["_server_remote_addr"]) . "</a>"
237
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  $initiator_html .= "</strong> ";
239
 
240
  // $initiator_html .= "<strong>" . __("<br><br>Unknown user from {$context["_server_remote_addr"]}") . "</strong>";
@@ -878,7 +917,7 @@ class SimpleLogger {
878
 
879
  // No occasions id specified, create one bases on the data array
880
  $occasions_data = $data + $context;
881
-
882
  // Don't include date in context data
883
  unset($occasions_data["date"]);
884
 
@@ -1024,7 +1063,7 @@ class SimpleLogger {
1024
 
1025
  // If web server is behind a load balancer then the ip address will always be the same
1026
  // See bug report: https://wordpress.org/support/topic/use-x-forwarded-for-http-header-when-logging-remote_addr?replies=1#post-6422981
1027
- // Note that the x-forwarded-for header can contain multiple ips
1028
  // Also note that the header can be faked
1029
  // Ref: http://stackoverflow.com/questions/753645/how-do-i-get-the-correct-ip-from-http-x-forwarded-for-if-it-contains-multiple-ip
1030
  // Ref: http://blackbe.lt/advanced-method-to-obtain-the-client-ip-in-php/
@@ -1032,7 +1071,7 @@ class SimpleLogger {
1032
  // Check for IP in lots of headers
1033
  // Based on code found here:
1034
  // http://blackbe.lt/advanced-method-to-obtain-the-client-ip-in-php/
1035
- $ip_keys = array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED');
1036
 
1037
  foreach ($ip_keys as $key) {
1038
 
@@ -1070,6 +1109,17 @@ class SimpleLogger {
1070
  $context["_server_http_referer"] = $_SERVER["HTTP_REFERER"];
1071
  }
1072
 
 
 
 
 
 
 
 
 
 
 
 
1073
  // Insert all context values into db
1074
  foreach ($context as $key => $value) {
1075
 
@@ -1094,6 +1144,58 @@ class SimpleLogger {
1094
 
1095
  } // log
1096
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1097
  /**
1098
  * Ensures an ip address is both a valid IP and does not fall within
1099
  * a private network range.
222
 
223
  case "web_user":
224
 
225
+ /*
226
+ Note: server_remote_addr may not show visiting/attacking ip, if server is behind...stuff..
227
+ Can be behind varnish cashe, or browser can for example use compression in chrome mobile
228
+ then the real ip is behind _server_http_x_forwarded_for_0 or similar
229
+ _server_remote_addr 66.249.81.222
230
+ _server_http_x_forwarded_for_0 5.35.187.212
231
+ */
232
+
233
+ // Check if additional IP addresses are stored, from http_x_forwarded_for and so on
234
+ $arr_found_additional_ip_headers = $this->get_event_ip_number_headers($row);
235
+
236
+ if ( empty( $context["_server_remote_addr"] ) ) {
237
 
238
  $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided'>" . __("Anonymous web user", "simple-history") . "</strong> ";
239
 
240
  } else {
241
 
 
 
242
  $initiator_html .= "<strong class='SimpleHistoryLogitem__inlineDivided SimpleHistoryLogitem__anonUserWithIp'>";
243
+
244
+ #if ( sizeof( $arr_found_additional_ip_headers ) ) {
245
+
246
+
247
+ #$iplookup_link = sprintf('https://ipinfo.io/%1$s', esc_attr($context["_server_remote_addr"]));
248
+
249
+ #$ip_numbers_joined = wp_sprintf_l('%l', array("_server_remote_addr" => $context["_server_remote_addr"]) + $arr_found_additional_ip_headers);
250
+
251
+ /*$initiator_html .= sprintf(
252
+ __('Anonymous user with multiple IP addresses detected: %1$s', "simple-history"),
253
+ "<a target='_blank' href={$iplookup_link} class='SimpleHistoryLogitem__anonUserWithIp__theIp'>" . esc_html( $ip_numbers_joined ) . "</a>"
254
+ );*/
255
+
256
+ /*
257
+ print_r($arr_found_additional_ip_headers);
258
+ Array
259
+ (
260
+ [_server_http_x_forwarded_for_0] => 5.35.187.212
261
+ [_server_http_x_forwarded_for_1] => 83.251.97.21
262
+ )
263
+ */
264
+
265
+ #} else {
266
+
267
+ // single ip address
268
+ $iplookup_link = sprintf('https://ipinfo.io/%1$s', esc_attr($context["_server_remote_addr"]));
269
+
270
+ $initiator_html .= sprintf(
271
+ __('Anonymous user from %1$s', "simple-history"),
272
+ "<a target='_blank' href={$iplookup_link} class='SimpleHistoryLogitem__anonUserWithIp__theIp'>" . esc_html($context["_server_remote_addr"]) . "</a>"
273
+ );
274
+
275
+ #} // multiple ip
276
+
277
  $initiator_html .= "</strong> ";
278
 
279
  // $initiator_html .= "<strong>" . __("<br><br>Unknown user from {$context["_server_remote_addr"]}") . "</strong>";
917
 
918
  // No occasions id specified, create one bases on the data array
919
  $occasions_data = $data + $context;
920
+ // error_log(simpleHistory::json_encode($occasions_data));
921
  // Don't include date in context data
922
  unset($occasions_data["date"]);
923
 
1063
 
1064
  // If web server is behind a load balancer then the ip address will always be the same
1065
  // See bug report: https://wordpress.org/support/topic/use-x-forwarded-for-http-header-when-logging-remote_addr?replies=1#post-6422981
1066
+ // Note that the x-forwarded-for header can contain multiple ips, comma separated
1067
  // Also note that the header can be faked
1068
  // Ref: http://stackoverflow.com/questions/753645/how-do-i-get-the-correct-ip-from-http-x-forwarded-for-if-it-contains-multiple-ip
1069
  // Ref: http://blackbe.lt/advanced-method-to-obtain-the-client-ip-in-php/
1071
  // Check for IP in lots of headers
1072
  // Based on code found here:
1073
  // http://blackbe.lt/advanced-method-to-obtain-the-client-ip-in-php/
1074
+ $ip_keys = $this->get_ip_number_header_keys();
1075
 
1076
  foreach ($ip_keys as $key) {
1077
 
1109
  $context["_server_http_referer"] = $_SERVER["HTTP_REFERER"];
1110
  }
1111
 
1112
+
1113
+ /**
1114
+ * Filter the context to store for this event/row
1115
+ *
1116
+ * @since 2.0.29
1117
+ *
1118
+ * @param array $context Array with all context data to store. Modify and return this.
1119
+ * @param array $data Array with data used for parent row.
1120
+ */
1121
+ $context = apply_filters("simple_history/log_insert_context", $context, $data);
1122
+
1123
  // Insert all context values into db
1124
  foreach ($context as $key => $value) {
1125
 
1144
 
1145
  } // log
1146
 
1147
+ /**
1148
+ * Returns array with headers that may contain user IP
1149
+ *
1150
+ * @since 2.0.29
1151
+ */
1152
+ public function get_ip_number_header_keys() {
1153
+
1154
+ $arr = array(
1155
+ 'HTTP_CLIENT_IP',
1156
+ 'HTTP_X_FORWARDED_FOR',
1157
+ 'HTTP_X_FORWARDED',
1158
+ 'HTTP_X_CLUSTER_CLIENT_IP',
1159
+ 'HTTP_FORWARDED_FOR',
1160
+ 'HTTP_FORWARDED'
1161
+ );
1162
+
1163
+ return $arr;
1164
+
1165
+ }
1166
+
1167
+ /**
1168
+ * Returns additional headers with ip number from context
1169
+ *
1170
+ * @since 2.0.29
1171
+ */
1172
+ function get_event_ip_number_headers($row) {
1173
+
1174
+ $ip_keys = $this->get_ip_number_header_keys();
1175
+ $arr_found_additional_ip_headers = array();
1176
+ $context = $row->context;
1177
+
1178
+ foreach ( $ip_keys as $one_ip_header_key ) {
1179
+
1180
+ $one_ip_header_key_lower = strtolower($one_ip_header_key);
1181
+
1182
+ foreach ( $context as $context_key => $context_val ) {
1183
+
1184
+ #$key_check_for = "_server_" . strtolower($one_ip_header_key) . "_0";
1185
+
1186
+ $match = preg_match("/^_server_{$one_ip_header_key_lower}_[\d+]/", $context_key, $matches);
1187
+ if ( $match ) {
1188
+ $arr_found_additional_ip_headers[ $context_key ] = $context_val;
1189
+ }
1190
+
1191
+ } // foreach context key for this ip header key
1192
+
1193
+ } // foreach ip header key
1194
+
1195
+ return $arr_found_additional_ip_headers;
1196
+
1197
+ }
1198
+
1199
  /**
1200
  * Ensures an ip address is both a valid IP and does not fall within
1201
  * a private network range.
loggers/SimpleMediaLogger.php CHANGED
@@ -338,7 +338,7 @@ class SimpleMediaLogger extends SimpleLogger
338
  }
339
 
340
  /**
341
- * Modify RSS links to they go directly to the correct media in wp admin
342
  *
343
  * @since 2.0.23
344
  * @param string $link
338
  }
339
 
340
  /**
341
+ * Modify RSS links so they go directly to the correct media in wp admin
342
  *
343
  * @since 2.0.23
344
  * @param string $link
loggers/SimplePluginLogger.php CHANGED
@@ -183,7 +183,7 @@ class SimplePluginLogger extends SimpleLogger
183
  wp_die( __("Could not find GitHub repository.", "simple-history" ));
184
  }
185
 
186
- $repo_parts = explode("/", $repo);
187
  if ( count($repo_parts) !== 5 ) {
188
  wp_die( __("Could not find GitHub repository.", "simple-history" ));
189
  }
@@ -210,12 +210,8 @@ class SimplePluginLogger extends SimpleLogger
210
  esc_html( $repo )
211
  );
212
 
213
- ob_start();
214
- ?>
215
- @font-face{font-family:octicons-anchor;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format('woff')}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:"Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body a{background:0 0}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body strong{font-weight:700}.markdown-body h1{margin:.67em 0}.markdown-body img{border:0}.markdown-body hr{box-sizing:content-box}.markdown-body input{color:inherit;margin:0}.markdown-body html input[disabled]{cursor:default}.markdown-body input{line-height:normal}.markdown-body input[type=checkbox]{box-sizing:border-box;padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0}.markdown-body td,.markdown-body th{padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"}.markdown-body a{color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{text-decoration:underline}.markdown-body hr{overflow:hidden;background:0 0}.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{display:table;clear:both;content:""}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}.markdown-body pre{font:12px Consolas,"Liberation Mono",Menlo,Courier,monospace}.markdown-body .octicon{font:normal normal normal 16px/1 octicons-anchor;display:inline-block;text-decoration:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-body .octicon-link:before{content:'\f05c'}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not(:link):not(:visited){color:inherit;text-decoration:none}.markdown-body .anchor{position:absolute;top:0;left:0;display:block;padding-right:6px;padding-left:30px;margin-left:-30px}.markdown-body .anchor:focus{outline:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{display:none;color:#000;vertical-align:middle}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{padding-left:8px;margin-left:-30px;text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{display:inline-block}.markdown-body h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom:1px solid #eee}.markdown-body h1 .anchor{line-height:1}.markdown-body h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom:1px solid #eee}.markdown-body h2 .anchor{line-height:1}.markdown-body h3{font-size:1.5em;line-height:1.43}.markdown-body h3 .anchor{line-height:1.2}.markdown-body h4{font-size:1.25em}.markdown-body h4 .anchor{line-height:1.2}.markdown-body h5{font-size:1em}.markdown-body h5 .anchor{line-height:1.1}.markdown-body h6{font-size:1em;color:#777}.markdown-body h6 .anchor{line-height:1.1}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:4px;padding:0;margin:16px 0;background-color:#e7e7e7;border:0}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body blockquote{padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:border-box}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:"\00a0"}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:0 0;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body pre{word-wrap:normal}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body .pl-c{color:#969896}.markdown-body .pl-c1,.markdown-body .pl-mdh,.markdown-body .pl-mm,.markdown-body .pl-mp,.markdown-body .pl-mr,.markdown-body .pl-s1 .pl-v,.markdown-body .pl-s3,.markdown-body .pl-sc,.markdown-body .pl-sv{color:#0086b3}.markdown-body .pl-e,.markdown-body .pl-en{color:#795da3}.markdown-body .pl-s1 .pl-s2,.markdown-body .pl-smi,.markdown-body .pl-smp,.markdown-body .pl-stj,.markdown-body .pl-vo,.markdown-body .pl-vpf{color:#333}.markdown-body .pl-ent{color:#63a35c}.markdown-body .pl-k,.markdown-body .pl-s,.markdown-body .pl-st{color:#a71d5d}.markdown-body .pl-pds,.markdown-body .pl-s1,.markdown-body .pl-s1 .pl-pse .pl-s2,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre,.markdown-body .pl-src{color:#183691}.markdown-body .pl-v{color:#ed6a43}.markdown-body .pl-id{color:#b52a1d}.markdown-body .pl-ii{background-color:#b52a1d;color:#f8f8f8}.markdown-body .pl-sr .pl-cce{color:#63a35c;font-weight:700}.markdown-body .pl-ml{color:#693a17}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#1d3e81;font-weight:700}.markdown-body .pl-mq{color:teal}.markdown-body .pl-mi{color:#333;font-style:italic}.markdown-body .pl-mb{color:#333;font-weight:700}.markdown-body .pl-md,.markdown-body .pl-mdhf{background-color:#ffecec;color:#bd2c00}.markdown-body .pl-mdht,.markdown-body .pl-mi1{background-color:#eaffea;color:#55a532}.markdown-body .pl-mdr{color:#795da3;font-weight:700}.markdown-body .pl-mo{color:#1d3e81}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .35em .25em -1.6em;vertical-align:middle}.markdown-body :checked+.radio-label{z-index:1;position:relative;border-color:#4183c4}
216
- <?php
217
- $github_markdown_css = ob_get_clean();
218
-
219
  printf(
220
  '
221
  <!doctype html>
@@ -239,15 +235,11 @@ class SimplePluginLogger extends SimpleLogger
239
  padding: 30px;
240
  }
241
 
242
- /*
243
- github-markdown-css from https://github.com/sindresorhus/github-markdown-css
244
- License: MIT © Sindre Sorhus
245
- Compressed using http://cssminifier.com/
246
- */
247
- %3$s
248
 
249
  </style>
250
- <!-- <base href="%4$s/blob/master/"> -->
 
251
 
252
  <header class="repo-info">
253
  %1$s
@@ -259,7 +251,7 @@ class SimplePluginLogger extends SimpleLogger
259
  ',
260
  $repo_info,
261
  $response_body,
262
- $github_markdown_css,
263
  esc_url( $repo ) // 4
264
  );
265
 
@@ -456,7 +448,7 @@ class SimplePluginLogger extends SimpleLogger
456
 
457
  // Generate a diff of changes
458
  if ( ! class_exists( 'WP_Text_Diff_Renderer_Table' ) ) {
459
- require( ABSPATH . WPINC . '/wp-diff.php' );
460
  }
461
 
462
  $original_file_contents = file_get_contents( WP_PLUGIN_DIR . "/" . $file );
183
  wp_die( __("Could not find GitHub repository.", "simple-history" ));
184
  }
185
 
186
+ $repo_parts = explode("/", rtrim($repo, "/"));
187
  if ( count($repo_parts) !== 5 ) {
188
  wp_die( __("Could not find GitHub repository.", "simple-history" ));
189
  }
210
  esc_html( $repo )
211
  );
212
 
213
+ $github_markdown_css_path = SIMPLE_HISTORY_PATH . "/css/github-markdown.css";
214
+
 
 
 
 
215
  printf(
216
  '
217
  <!doctype html>
235
  padding: 30px;
236
  }
237
 
238
+ @import url("%3$s");
 
 
 
 
 
239
 
240
  </style>
241
+
242
+ <base href="%4$s/raw/master/">
243
 
244
  <header class="repo-info">
245
  %1$s
251
  ',
252
  $repo_info,
253
  $response_body,
254
+ $github_markdown_css_path,
255
  esc_url( $repo ) // 4
256
  );
257
 
448
 
449
  // Generate a diff of changes
450
  if ( ! class_exists( 'WP_Text_Diff_Renderer_Table' ) ) {
451
+ require_once( ABSPATH . WPINC . '/wp-diff.php' );
452
  }
453
 
454
  $original_file_contents = file_get_contents( WP_PLUGIN_DIR . "/" . $file );
loggers/SimplePostLogger.php CHANGED
@@ -2,74 +2,6 @@
2
 
3
  defined( 'ABSPATH' ) or die();
4
 
5
- /*
6
- - vid start av app: login, körs titt som tätt
7
- - XMLRPC_REQUEST": true
8
- do_action( 'xmlrpc_call', 'wp.editPost' );
9
-
10
- * All built-in XML-RPC methods use the action xmlrpc_call, with a parameter
11
- * equal to the method's name, e.g., wp.getUsersBlogs, wp.newPost, etc.
12
- do_action( 'xmlrpc_call', 'wp.getUsersBlogs' );
13
- */
14
-
15
-
16
-
17
- /**
18
- * Fires after a new category has been successfully created via XML-RPC.
19
- *
20
- * @since 3.4.0
21
- *
22
- * @param int $cat_id ID of the new category.
23
- * @param array $args An array of new category arguments.
24
- */
25
- # do_action( 'xmlrpc_call_success_wp_newCategory', $cat_id, $args );
26
-
27
-
28
- /**
29
- * Fires after a category has been successfully deleted via XML-RPC.
30
- *
31
- * @since 3.4.0
32
- *
33
- * @param int $category_id ID of the deleted category.
34
- * @param array $args An array of arguments to delete the category.
35
- */
36
- # do_action( 'xmlrpc_call_success_wp_deleteCategory', $category_id, $args );
37
-
38
-
39
- /**
40
- * Fires after a comment has been successfully deleted via XML-RPC.
41
- *
42
- * @since 3.4.0
43
- *
44
- * @param int $comment_ID ID of the deleted comment.
45
- * @param array $args An array of arguments to delete the comment.
46
- */
47
- # do_action( 'xmlrpc_call_success_wp_deleteComment', $comment_ID, $args );
48
-
49
-
50
- /**
51
- * Fires after a comment has been successfully updated via XML-RPC.
52
- *
53
- * @since 3.4.0
54
- *
55
- * @param int $comment_ID ID of the updated comment.
56
- * @param array $args An array of arguments to update the comment.
57
- */
58
- # do_action( 'xmlrpc_call_success_wp_editComment', $comment_ID, $args );
59
-
60
-
61
- /**
62
- * Fires after a new comment has been successfully created via XML-RPC.
63
- *
64
- * @since 3.4.0
65
- *
66
- * @param int $comment_ID ID of the new comment.
67
- * @param array $args An array of new comment arguments.
68
- */
69
- # do_action( 'xmlrpc_call_success_wp_newComment', $comment_ID, $args );
70
-
71
-
72
-
73
 
74
  /**
75
  * Logs changes to posts and pages, including custom post types
@@ -80,6 +12,9 @@ class SimplePostLogger extends SimpleLogger
80
  // The logger slug. Defaulting to the class name is nice and logical I think
81
  public $slug = __CLASS__;
82
 
 
 
 
83
  public function loaded() {
84
 
85
  add_action("admin_init", array($this, "on_admin_init"));
@@ -218,12 +153,44 @@ class SimplePostLogger extends SimpleLogger
218
 
219
  function on_admin_init() {
220
 
 
 
221
  add_action("transition_post_status", array($this, "on_transition_post_status"), 10, 3);
222
  add_action("delete_post", array($this, "on_delete_post"));
223
  add_action("untrash_post", array($this, "on_untrash_post"));
224
 
225
  }
226
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  /**
228
  * Fires after a post has been successfully deleted via the XML-RPC Blogger API.
229
  *
@@ -379,26 +346,23 @@ class SimplePostLogger extends SimpleLogger
379
  From something to publish = post published
380
  if not from & to = same, then user has changed something
381
  */
382
-
383
  $context = array(
384
  "post_id" => $post->ID,
385
  "post_type" => get_post_type($post),
386
- "post_title" => get_the_title($post),
387
- "post_new_status" => $new_status,
388
- "post_old_status" => $old_status
389
  );
390
 
391
- if ($old_status == "auto-draft" && ($new_status != "auto-draft" && $new_status != "inherit")) {
392
 
393
  // Post created
394
  $this->infoMessage( "post_created", $context );
395
 
396
- } elseif ($new_status == "auto-draft" || ($old_status == "new" && $new_status == "inherit")) {
397
 
398
  // Post was automagically saved by WordPress
399
  return;
400
 
401
- } elseif ($new_status == "trash") {
402
 
403
  // Post trashed
404
  $this->infoMessage( "post_trashed", $context );
@@ -406,19 +370,284 @@ class SimplePostLogger extends SimpleLogger
406
  } else {
407
 
408
  // Post updated
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  $this->infoMessage( "post_updated", $context );
410
 
411
  }
412
 
413
  }
414
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
  /**
416
  * Modify plain output to inlcude link to post
417
  */
418
  public function getLogRowPlainTextOutput($row) {
419
 
420
  $context = $row->context;
421
- $post_id = $context["post_id"];
422
 
423
  // Default to original log message
424
  $message = $row->message;
@@ -435,7 +664,8 @@ class SimplePostLogger extends SimpleLogger
435
  $message_key = isset($context["_message_key"]) ? $context["_message_key"] : null;
436
 
437
  // Try to get singular name
438
- $post_type_obj = get_post_type_object( $context["post_type"] );
 
439
  if ( ! is_null( $post_type_obj ) ) {
440
 
441
  if ( ! empty ($post_type_obj->labels->singular_name) ) {
@@ -468,14 +698,271 @@ class SimplePostLogger extends SimpleLogger
468
 
469
  } // post still available
470
 
471
- $context["post_type"] = esc_html( $context["post_type"] );
472
- $context["post_title"] = esc_html( $context["post_title"] );
473
  $context["edit_link"] = get_edit_post_link( $post_id );
474
 
475
  return $this->interpolate($message, $context);
476
 
477
  }
478
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
479
  /**
480
  * Modify RSS links to they go directly to the correct post in wp admin
481
  *
@@ -503,4 +990,30 @@ class SimplePostLogger extends SimpleLogger
503
 
504
  }
505
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
506
  }
2
 
3
  defined( 'ABSPATH' ) or die();
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
  /**
7
  * Logs changes to posts and pages, including custom post types
12
  // The logger slug. Defaulting to the class name is nice and logical I think
13
  public $slug = __CLASS__;
14
 
15
+ // Array that will contain previous post data, before data is updated
16
+ private $old_post_data = array();
17
+
18
  public function loaded() {
19
 
20
  add_action("admin_init", array($this, "on_admin_init"));
153
 
154
  function on_admin_init() {
155
 
156
+ add_action("admin_action_editpost", array($this, "on_admin_action_editpost"));
157
+
158
  add_action("transition_post_status", array($this, "on_transition_post_status"), 10, 3);
159
  add_action("delete_post", array($this, "on_delete_post"));
160
  add_action("untrash_post", array($this, "on_untrash_post"));
161
 
162
  }
163
 
164
+ /**
165
+ * Get and store old info about a post that is being edited.
166
+ * Needed to later compare old data with new data, to detect differences.
167
+ * This function is called on edit screen, but before post edits are saved
168
+ *
169
+ * Can't use the regular filters like "pre_post_update" because custom fields are already written by then.
170
+ *
171
+ * @since 2.0.29
172
+ */
173
+ function on_admin_action_editpost() {
174
+
175
+ $post_ID = isset( $_POST["post_ID"] ) ? (int) $_POST["post_ID"] : 0;
176
+
177
+ if ( ! $post_ID ) {
178
+ return;
179
+ }
180
+
181
+ if ( ! current_user_can( 'edit_post', $post_ID ) ) {
182
+ return;
183
+ };
184
+
185
+ $prev_post_data = get_post( $post_ID );
186
+
187
+ $this->old_post_data[$post_ID] = array(
188
+ "post_data" => $prev_post_data,
189
+ "post_meta" => get_post_custom( $post_ID )
190
+ );
191
+
192
+ }
193
+
194
  /**
195
  * Fires after a post has been successfully deleted via the XML-RPC Blogger API.
196
  *
346
  From something to publish = post published
347
  if not from & to = same, then user has changed something
348
  */
 
349
  $context = array(
350
  "post_id" => $post->ID,
351
  "post_type" => get_post_type($post),
352
+ "post_title" => get_the_title($post)
 
 
353
  );
354
 
355
+ if ( $old_status == "auto-draft" && ($new_status != "auto-draft" && $new_status != "inherit") ) {
356
 
357
  // Post created
358
  $this->infoMessage( "post_created", $context );
359
 
360
+ } elseif ( $new_status == "auto-draft" || ($old_status == "new" && $new_status == "inherit") ) {
361
 
362
  // Post was automagically saved by WordPress
363
  return;
364
 
365
+ } elseif ( $new_status == "trash" ) {
366
 
367
  // Post trashed
368
  $this->infoMessage( "post_trashed", $context );
370
  } else {
371
 
372
  // Post updated
373
+ // Also add diff between previod saved data and new data
374
+ if ( isset( $this->old_post_data[$post->ID] ) ) {
375
+
376
+ $old_post_data = $this->old_post_data[$post->ID];
377
+
378
+ $new_post_data = array(
379
+ "post_data" => $post,
380
+ "post_meta" => get_post_custom($post->ID)
381
+ );
382
+
383
+ // Now we have both old and new post data, including custom fields, in the same format
384
+ // So let's compare!
385
+ $context = $this->add_post_data_diff_to_context($context, $old_post_data, $new_post_data);
386
+
387
+ }
388
+
389
+ $context["_occasionsID"] = __CLASS__ . '/' . __FUNCTION__ . "/post_updated/{$post->ID}";
390
+
391
  $this->infoMessage( "post_updated", $context );
392
 
393
  }
394
 
395
  }
396
 
397
+ /*
398
+ * Adds diff data to the context array. Is called just before the event is logged.
399
+ *
400
+ * Since 2.0.29
401
+
402
+ To detect
403
+ - post thumb (part of custom fields)
404
+ - categories
405
+ - tags
406
+ * @return array $context with diff data added
407
+ */
408
+ function add_post_data_diff_to_context($context, $old_post_data, $new_post_data) {
409
+
410
+ $old_data = $old_post_data["post_data"];
411
+ $new_data = $new_post_data["post_data"];
412
+
413
+ // Will contain the differences
414
+ $post_data_diff = array();
415
+
416
+ $arr_keys_to_diff = array(
417
+ "post_title",
418
+ "post_name",
419
+ "post_content",
420
+ "post_status",
421
+ "menu_order",
422
+ "post_date",
423
+ "post_date_gmt",
424
+ "post_excerpt",
425
+ "comment_status",
426
+ "ping_status",
427
+ "post_parent", // only id, need to get context for that, like name of parent at least?
428
+ "post_author" // only id, need to get context for that, like name, login, email at least?
429
+ );
430
+
431
+ foreach ( $arr_keys_to_diff as $key ) {
432
+
433
+ if ( isset( $old_data->$key ) && isset( $new_data->$key ) ) {
434
+ $post_data_diff = $this->add_diff($post_data_diff, $key, $old_data->$key, $new_data->$key);
435
+ }
436
+
437
+ }
438
+
439
+ // If changes where detected
440
+ if ( $post_data_diff ) {
441
+
442
+ // $context["_post_data_diff"] = $this->simpleHistory->json_encode( $post_data_diff );
443
+ // Save at least 2 values for each detected value change, i.e. the old value and the new value
444
+ foreach ( $post_data_diff as $diff_key => $diff_values ) {
445
+
446
+ $context["post_prev_{$diff_key}"] = $diff_values["old"];
447
+ $context["post_new_{$diff_key}"] = $diff_values["new"];
448
+
449
+ // If post_author then get more author info
450
+ // Because just a user ID does not get us far
451
+ if ( "post_author" == $diff_key ) {
452
+
453
+ $old_author_user = get_userdata( (int) $diff_values["old"] );
454
+ $new_author_user = get_userdata( (int) $diff_values["new"] );
455
+
456
+ if ( is_a( $old_author_user, "WP_User" ) && is_a( $new_author_user, "WP_User" ) ) {
457
+
458
+ $context["post_prev_{$diff_key}/user_login"] = $old_author_user->user_login;
459
+ $context["post_prev_{$diff_key}/user_email"] = $old_author_user->user_email;
460
+ $context["post_prev_{$diff_key}/display_name"] = $old_author_user->display_name;
461
+
462
+ $context["post_new_{$diff_key}/user_login"] = $new_author_user->user_login;
463
+ $context["post_new_{$diff_key}/user_email"] = $new_author_user->user_email;
464
+ $context["post_new_{$diff_key}/display_name"] = $new_author_user->display_name;
465
+
466
+ }
467
+
468
+ }
469
+
470
+ // If post parent changed then
471
+ // store info about old and new parent
472
+ /*
473
+ sf_d($post_data_diff);exit;
474
+ post_parent] => Array
475
+ (
476
+ [old] => 0
477
+ [new] => 25556
478
+ )
479
+ */
480
+
481
+
482
+
483
+ }
484
+
485
+ } // post_data_diff
486
+
487
+
488
+ // Compare custom fields
489
+
490
+ // Array with custom field keys to ignore because changed everytime or very internal
491
+ $arr_meta_keys_to_ignore = array(
492
+ "_edit_lock",
493
+ "_edit_last",
494
+ "_post_restored_from",
495
+ "_wp_page_template"
496
+ );
497
+
498
+ $meta_changes = array(
499
+ "added" => array(),
500
+ "removed" => array(),
501
+ "changed" => array()
502
+ );
503
+
504
+ $old_meta = $old_post_data["post_meta"];
505
+ $new_meta = $new_post_data["post_meta"];
506
+
507
+ // @todo: post thumb is stored in _thumbnail_id
508
+
509
+ // page template is stored in _wp_page_template
510
+ if ( isset( $old_meta["_wp_page_template"][0] ) && isset( $new_meta["_wp_page_template"][0] ) ) {
511
+
512
+ /*
513
+ Var is string with length 7: default
514
+ Var is string with length 20: template-builder.php
515
+ */
516
+
517
+ if ( $old_meta["_wp_page_template"][0] != $new_meta["_wp_page_template"][0] ) {
518
+
519
+ // prev page template is different from new page template
520
+
521
+ // store template php file name
522
+ $context["post_prev_page_template"] = $old_meta["_wp_page_template"][0];
523
+ $context["post_new_page_template"] = $new_meta["_wp_page_template"][0];
524
+
525
+ $theme_templates = (array) $this->get_theme_templates();
526
+ /*
527
+ print_r($theme_templates);
528
+
529
+ Array
530
+ (
531
+ [showcase.php] => Showcase Template
532
+ [sidebar-page.php] => Sidebar Template
533
+ )
534
+ */
535
+ if ( isset( $theme_templates[ $context["post_prev_page_template"] ] ) ) {
536
+ $context["post_prev_page_template_name"] = $theme_templates[$context["post_prev_page_template"]];
537
+ }
538
+
539
+ if ( isset( $theme_templates[ $context["post_new_page_template"] ] ) ) {
540
+ $context["post_new_page_template_name"] = $theme_templates[$context["post_new_page_template"]];
541
+ }
542
+
543
+ }
544
+
545
+ }
546
+
547
+ // Remove fields that we have checked already and other that should be ignored
548
+ foreach ($arr_meta_keys_to_ignore as $key_to_ignore) {
549
+ unset( $old_meta[ $key_to_ignore ] );
550
+ unset( $new_meta[ $key_to_ignore ] );
551
+ }
552
+
553
+ // Look for added custom fields
554
+ foreach ( $new_meta as $meta_key => $meta_value ) {
555
+
556
+ if ( ! isset( $old_meta[ $meta_key ] ) ) {
557
+ $meta_changes["added"][ $meta_key ] = true;
558
+ }
559
+
560
+ }
561
+
562
+ // Look for removed meta
563
+ // Does not work, if user clicks "delete" in edit screen then meta is removed using ajax
564
+ /*
565
+ foreach ( $old_meta as $meta_key => $meta_value ) {
566
+
567
+ if ( ! isset($new_meta[ $meta_key ] ) ) {
568
+ $meta_changes["removed"][ $meta_key ] = true;
569
+ }
570
+
571
+ }
572
+ */
573
+
574
+ // Look for changed meta
575
+ foreach ( $old_meta as $meta_key => $meta_value ) {
576
+
577
+ if ( isset( $new_meta[ $meta_key ] ) ) {
578
+
579
+ if ( json_encode( $old_meta[ $meta_key ] ) != json_encode( $new_meta[ $meta_key ] ) ) {
580
+ $meta_changes["changed"][ $meta_key ] = true;
581
+ }
582
+ }
583
+
584
+ }
585
+
586
+ if ( $meta_changes["added"] ) {
587
+ $context["post_meta_added"] = sizeof($meta_changes["added"]);
588
+ }
589
+
590
+ if ( $meta_changes["removed"] ) {
591
+ $context["post_meta_removed"] = sizeof($meta_changes["removed"]);
592
+ }
593
+
594
+ if ( $meta_changes["changed"] ) {
595
+ $context["post_meta_changed"] = sizeof($meta_changes["changed"]);
596
+ }
597
+
598
+ return $context;
599
+
600
+ }
601
+
602
+ /**
603
+ * Return the current theme templates.
604
+ * Template will return untranslated.
605
+ * Uses the same approach as in class-wp-theme.php to get templates.
606
+ *
607
+ * @since 2.0.29
608
+ */
609
+ function get_theme_templates() {
610
+
611
+ $theme = wp_get_theme();
612
+ $page_templates = array();
613
+
614
+ $files = (array) $theme->get_files( 'php', 1 );
615
+
616
+ foreach ( $files as $file => $full_path ) {
617
+ if ( ! preg_match( '|Template Name:(.*)$|mi', file_get_contents( $full_path ), $header ) )
618
+ continue;
619
+ $page_templates[ $file ] = _cleanup_header_comment( $header[1] );
620
+ }
621
+
622
+ return $page_templates;
623
+
624
+ }
625
+
626
+ /**
627
+ * Since 2.0.29
628
+ */
629
+ function add_diff($post_data_diff, $key, $old_value, $new_value) {
630
+
631
+ if ( $old_value != $new_value ) {
632
+
633
+ $post_data_diff[$key] = array(
634
+ "old" => $old_value,
635
+ "new" => $new_value
636
+ );
637
+
638
+ }
639
+
640
+ return $post_data_diff;
641
+
642
+ }
643
+
644
  /**
645
  * Modify plain output to inlcude link to post
646
  */
647
  public function getLogRowPlainTextOutput($row) {
648
 
649
  $context = $row->context;
650
+ $post_id = isset($context["post_id"]) ? $context["post_id"] : 0;
651
 
652
  // Default to original log message
653
  $message = $row->message;
664
  $message_key = isset($context["_message_key"]) ? $context["_message_key"] : null;
665
 
666
  // Try to get singular name
667
+ $post_type = isset($context["post_type"]) ? $context["post_type"] : "";
668
+ $post_type_obj = get_post_type_object( $post_type );
669
  if ( ! is_null( $post_type_obj ) ) {
670
 
671
  if ( ! empty ($post_type_obj->labels->singular_name) ) {
698
 
699
  } // post still available
700
 
701
+ $context["post_type"] = isset( $context["post_type"] ) ? esc_html( $context["post_type"] ) : "";
702
+ $context["post_title"] = isset( $context["post_title"] ) ? esc_html( $context["post_title"] ) : "";
703
  $context["edit_link"] = get_edit_post_link( $post_id );
704
 
705
  return $this->interpolate($message, $context);
706
 
707
  }
708
 
709
+ public function getLogRowDetailsOutput($row) {
710
+
711
+ $context = $row->context;
712
+ $message_key = $context["_message_key"];
713
+ $post_id = isset($context["post_id"]) ? $context["post_id"] : 0;
714
+
715
+ $out = "";
716
+
717
+ if ( "post_updated" == $message_key) {
718
+
719
+ // Check for keys like "post_prev_post_title" and "post_new_post_title"
720
+ $diff_table_output = "";
721
+ $has_diff_values = false;
722
+
723
+ // @TODO: this is silly. why loop if we know what we're looking for?
724
+ foreach ( $context as $key => $val ) {
725
+
726
+ if ( strpos($key, "post_prev_") !== false ) {
727
+
728
+ // Old value exists, new value must also exist for diff to be calculates
729
+ $key_to_diff = substr($key, strlen("post_prev_"));
730
+
731
+ $key_for_new_val = "post_new_{$key_to_diff}";
732
+
733
+ if ( isset( $context[ $key_for_new_val ] ) ) {
734
+
735
+ $post_old_value = $context[$key];
736
+ $post_new_value = $context[$key_for_new_val];
737
+
738
+ if ( $post_old_value != $post_new_value ) {
739
+
740
+ // Different diffs for different keys
741
+ if ( "post_title" == $key_to_diff ) {
742
+
743
+ $has_diff_values = true;
744
+
745
+ $diff_table_output .= sprintf(
746
+ '<tr><td>%1$s</td><td>%2$s</td></tr>',
747
+ __("Title", "simple-history"),
748
+ simple_history_text_diff($post_old_value, $post_new_value)
749
+ );
750
+
751
+ } else if ( "post_content" == $key_to_diff ) {
752
+
753
+ // Problem: to much text/content
754
+ // Risks to fill the visual output
755
+ // Maybe solution: use own diff function, that uses none or few context lines
756
+
757
+ $has_diff_values = true;
758
+
759
+ $diff_table_output .= sprintf(
760
+ '<tr><td>%1$s</td><td>%2$s</td></tr>',
761
+ __("Content", "simple-history"),
762
+ simple_history_text_diff($post_old_value, $post_new_value)
763
+ );
764
+
765
+
766
+ } else if ( "post_status" == $key_to_diff ) {
767
+
768
+ $has_diff_values = true;
769
+
770
+ $diff_table_output .= sprintf(
771
+ '<tr>
772
+ <td>%1$s</td>
773
+ <td>Changed from %2$s to %3$s</td>
774
+ </tr>',
775
+ __("Status", "simple-history"),
776
+ esc_html($post_old_value),
777
+ esc_html($post_new_value)
778
+
779
+ );
780
+
781
+ } else if ( "post_date" == $key_to_diff ) {
782
+
783
+ $has_diff_values = true;
784
+
785
+ #$diff = new FineDiff($post_old_value, $post_new_value, FineDiff::$wordGranularity);
786
+ $diff_table_output .= sprintf(
787
+ '<tr>
788
+ <td>%1$s</td>
789
+ <td>Changed from %2$s to %3$s</td>
790
+ </tr>',
791
+ __("Publish date", "simple-history"),
792
+ esc_html($post_old_value),
793
+ esc_html($post_new_value)
794
+ );
795
+
796
+ } else if ( "post_name" == $key_to_diff ) {
797
+
798
+ $has_diff_values = true;
799
+
800
+ #$diff = new FineDiff($post_old_value, $post_new_value, FineDiff::$wordGranularity);
801
+ $diff_table_output .= sprintf(
802
+ '<tr>
803
+ <td>%1$s</td>
804
+ <td>%2$s</td>
805
+ </tr>',
806
+ __("Permalink", "simple-history"),
807
+ simple_history_text_diff($post_old_value, $post_new_value)
808
+ );
809
+
810
+ } else if ( "comment_status" == $key_to_diff ) {
811
+
812
+ $has_diff_values = true;
813
+
814
+ #$diff = new FineDiff($post_old_value, $post_new_value, FineDiff::$wordGranularity);
815
+ $diff_table_output .= sprintf(
816
+ '<tr>
817
+ <td>%1$s</td>
818
+ <td>Changed from %2$s to %3$s</td>
819
+ </tr>',
820
+ __("Comment status", "simple-history"),
821
+ esc_html($post_old_value),
822
+ esc_html($post_new_value)
823
+ );
824
+
825
+ } else if ( "post_author" == $key_to_diff ) {
826
+
827
+ $has_diff_values = true;
828
+
829
+ // wp post edit screen uses display_name so we should use it too
830
+ if ( isset( $context["post_prev_post_author/display_name"] ) && isset( $context["post_new_post_author/display_name"] ) ) {
831
+
832
+ $prev_user_display_name = $context["post_prev_post_author/display_name"];
833
+ $new_user_display_name = $context["post_new_post_author/display_name"];
834
+
835
+ $prev_user_user_email = $context["post_prev_post_author/user_email"];
836
+ $new_user_user_email = $context["post_new_post_author/user_email"];
837
+
838
+ $diff_table_output .= sprintf(
839
+ '<tr>
840
+ <td>%1$s</td>
841
+ <td>%2$s</td>
842
+ </tr>',
843
+ __("Author", "simple-history"),
844
+ $this->interpolate(
845
+ __('Changed from {prev_user_display_name} ({prev_user_email}) to {new_user_display_name} ({new_user_email})', "simple-history"),
846
+ array(
847
+ "prev_user_display_name" => esc_html( $prev_user_display_name ),
848
+ "prev_user_email" => esc_html( $prev_user_user_email ),
849
+ "new_user_display_name" => esc_html( $new_user_display_name ),
850
+ "new_user_email" => esc_html( $new_user_user_email )
851
+ )
852
+ )
853
+ );
854
+
855
+
856
+ }
857
+
858
+ } else if ( "page_template" == $key_to_diff ) {
859
+
860
+ // page template filename
861
+ $prev_page_template = $context["post_prev_page_template"];
862
+ $new_page_template = $context["post_new_page_template"];
863
+
864
+ // page template name, should exist, but I guess someone could have deleted a template
865
+ // and after that change the template for a post
866
+ $prev_page_template_name = isset( $context["post_prev_page_template_name"] ) ? $context["post_prev_page_template_name"] : "";
867
+ $new_page_template_name = isset( $context["post_new_page_template_name"] ) ? $context["post_new_page_template_name"] : "";
868
+
869
+ // If prev och new template is "default" then use that as name
870
+ if ( "default" == $prev_page_template && ! $prev_page_template_name ) {
871
+ $prev_page_template_name = $prev_page_template;
872
+ } else if ( "default" == $new_page_template && ! $new_page_template_name ) {
873
+ $new_page_template_name = $new_page_template;
874
+ }
875
+
876
+ // @TODO: translate template names
877
+ // $value = translate( $value, $this->get('TextDomain') );
878
+
879
+ $message = __('Changed from {prev_page_template} to {new_page_template}', "simple-history");
880
+ if ( $prev_page_template_name && $new_page_template_name ) {
881
+ $message = __('Changed from "{prev_page_template_name}" to "{new_page_template_name}"', "simple-history");
882
+ }
883
+
884
+ $diff_table_output .= sprintf(
885
+ '<tr>
886
+ <td>%1$s</td>
887
+ <td>%2$s</td>
888
+ </tr>',
889
+ __("Template", "simple-history"),
890
+ $this->interpolate(
891
+ $message,
892
+ array(
893
+ "prev_page_template" => "<code>" . esc_html( $prev_page_template ) . "</code>",
894
+ "new_page_template" => "<code>" . esc_html( $new_page_template ) . "</code>",
895
+ "prev_page_template_name" => esc_html( $prev_page_template_name ),
896
+ "new_page_template_name" => esc_html( $new_page_template_name )
897
+ )
898
+ )
899
+ );
900
+
901
+ }
902
+
903
+ }
904
+
905
+ }
906
+
907
+ }
908
+
909
+ } // for each context key
910
+
911
+ if ( isset( $context["post_meta_added"] ) || isset( $context["post_meta_removed"] ) || isset( $context["post_meta_changed"] ) ) {
912
+
913
+ $meta_changed_out = "";
914
+ $has_diff_values = true;
915
+
916
+ if ( isset( $context["post_meta_added"] ) ) {
917
+ $meta_changed_out .= "<span class='SimpleHistoryLogitem__inlineDivided'>". (int) $context["post_meta_added"] ." added</span> ";
918
+ }
919
+
920
+ if ( isset( $context["post_meta_removed"] ) ) {
921
+ $meta_changed_out .= "<span class='SimpleHistoryLogitem__inlineDivided'>". (int) $context["post_meta_removed"] ." removed</span> ";
922
+ }
923
+
924
+ if ( isset( $context["post_meta_changed"] ) ) {
925
+ $meta_changed_out .= "<span class='SimpleHistoryLogitem__inlineDivided'>". (int) $context["post_meta_changed"] ." changed</span> ";
926
+ }
927
+
928
+ $diff_table_output .= sprintf(
929
+ '<tr>
930
+ <td>%1$s</td>
931
+ <td>%2$s</td>
932
+ </tr>',
933
+ esc_html( __("Custom fields", "simple-history") ),
934
+ $meta_changed_out
935
+ );
936
+
937
+ }
938
+
939
+ /*
940
+ $diff_table_output .= "
941
+ <p>
942
+ <span class='SimpleHistoryLogitem__inlineDivided'><em>Title</em> Hey there » Yo there</span>
943
+ <span class='SimpleHistoryLogitem__inlineDivided'><em>Permalink</em> /my-permalink/ » /permalinks-rule/</span>
944
+ </p>
945
+ <p>
946
+ <span class='SimpleHistoryLogitem__inlineDivided'><em>Status</em> draft » publish</span>
947
+ <span class='SimpleHistoryLogitem__inlineDivided'><em>Publish date</em> 23:31:24 to 2015-04-11 23:31:40</span>
948
+ </p>
949
+ ";
950
+ */
951
+
952
+ if ( $has_diff_values || $diff_table_output ) {
953
+
954
+ $diff_table_output = '<table class="SimpleHistoryLogitem__keyValueTable">' . $diff_table_output . '</table>';
955
+
956
+ }
957
+
958
+ $out .= $diff_table_output;
959
+
960
+ }
961
+
962
+ return $out;
963
+
964
+ }
965
+
966
  /**
967
  * Modify RSS links to they go directly to the correct post in wp admin
968
  *
990
 
991
  }
992
 
993
+ public function adminCSS() {
994
+
995
+ ?>
996
+ <style>
997
+
998
+ /* format diff output */
999
+ .SimpleHistory__diff.SimpleHistory__diff {
1000
+ border-spacing: 1px;
1001
+ }
1002
+
1003
+ .SimpleHistory__diff.SimpleHistory__diff td,
1004
+ .SimpleHistory__diff.SimpleHistory__diff td:first-child {
1005
+ text-align: left;
1006
+ white-space: normal;
1007
+ font-size: 13px;
1008
+ line-height: 1.3;
1009
+ padding: 0.25em 0.5em;
1010
+ color: rgb(75, 75, 75);
1011
+ font-family: "Open Sans", sans-serif;
1012
+ }
1013
+
1014
+ </style>
1015
+ <?php
1016
+
1017
+ }
1018
+
1019
  }
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: eskapism
3
  Donate link: http://eskapism.se/sida/donate/
4
  Tags: history, log, changes, changelog, audit, trail, pages, attachments, users, cms, dashboard, admin, syslog, feed, activity, stream
5
  Requires at least: 3.6.0
6
- Tested up to: 4.1
7
- Stable tag: 2.0.28
8
 
9
  View changes made by users within WordPress. See who created a page, uploaded an attachment or approved an comment, and more.
10
 
@@ -115,9 +115,24 @@ initiated by a specific user.
115
 
116
  ## Changelog
117
 
118
- = 2.0.28 =
119
 
120
- - Fixed: Do not try to load the Translation Install API. Fixes https://github.com/bonny/WordPress-Simple-History/issues/67.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  - Updated: German translation updated.
122
 
123
  = 2.0.27 (April 2015) =
@@ -170,7 +185,7 @@ initiated by a specific user.
170
  - Added: `_xmlrpc_request` is added to context of event when an event is initiated through a XML-RPC all.
171
  - Changed: RSS feed now has loglevel of event prepended to the title.
172
  - Changed: Options logger now only shows the first 250 chars of new and old option values. Really long values could make the log look strange.
173
- - Added: If constant SIMPLE_HISTORY_LOG_DEBUG is defined and true automatically adds $_GET, $_POST, and more info to each logged event. Mostly useful for the developer, but maybe some of you are a bit paranoid and want it too.
174
  - Updated: German translation updated.
175
 
176
  = 2.0.20 (February 2015) =
3
  Donate link: http://eskapism.se/sida/donate/
4
  Tags: history, log, changes, changelog, audit, trail, pages, attachments, users, cms, dashboard, admin, syslog, feed, activity, stream
5
  Requires at least: 3.6.0
6
+ Tested up to: 4.2
7
+ Stable tag: 2.0.29
8
 
9
  View changes made by users within WordPress. See who created a page, uploaded an attachment or approved an comment, and more.
10
 
115
 
116
  ## Changelog
117
 
118
+ = 2.0.29 (April 2015) =
119
 
120
+ - Added: Introducing [Post "Quick Diff"](http://eskapism.se/blog/2015/04/quick-diff-shows-post-changes-in-wordpress/) – a very simple and efficient way to quickly see what’s been changed in a post. With Quick Diff you will in a glance see the difference between the title, permalink, content, publish date, post status, post author, or the template of the post. It's really a super simple and fast way to follow the work of your co-editors.
121
+ - Added: Filter to add custom HTML above and after the context data table. They are named `simple_history/log_html_output_details_single/html_before_context_table` and `simple_history/log_html_output_details_single/html_after_context_table` (and yes, I do fancy really long filter names).
122
+ - Added: Filters to control what to output in the data/context details table (the popup you see when you click the time of each event): `simple_history/log_html_output_details_table/row_keys_to_show` and `simple_history/log_html_output_details_table/context_keys_to_show`. Also added [two usage examples](https://github.com/bonny/WordPress-Simple-History/blob/master/examples/examples.php) for the filters.
123
+ - Added: Filter `simple_history/log_insert_context` to control what gets saved to the context table. Example on usage for this is also available in the [example file](https://github.com/bonny/WordPress-Simple-History/blob/master/examples/examples.php).
124
+ - Added: data attribute `data-ip-address-multiple` and class `SimpleHistoryLogitem--IPAddress-multiple` added for events that have more than one IP address detected. Happens when `http_x_forwarded_for` or similar headers are included in response.
125
+ - Updated: Danish translation updated.
126
+ - Fixed: Images in GitHub readme files are now displayed correctly.
127
+ - Fixed: Readme files to GitHub repositories ending with slash (/) now works correctly too.
128
+ - Fixed: IP Info popup is now again closeable with `ESC` key or with a click outside it.
129
+ - Fixed: Some enqueued scripts had double slashes in them.
130
+ - Fixed: Make sure [URLs from add_query_arg() gets escaped](https://make.wordpress.org/plugins/2015/04/20/fixing-add_query_arg-and-remove_query_arg-usage/).
131
+ - Fixed: Some other small things.
132
+
133
+ = 2.0.28 (April 2015) =
134
+
135
+ - Fixed: Do not try to load the Translation Install API if using WordPress before 4.0. Fixes https://github.com/bonny/WordPress-Simple-History/issues/67.
136
  - Updated: German translation updated.
137
 
138
  = 2.0.27 (April 2015) =
185
  - Added: `_xmlrpc_request` is added to context of event when an event is initiated through a XML-RPC all.
186
  - Changed: RSS feed now has loglevel of event prepended to the title.
187
  - Changed: Options logger now only shows the first 250 chars of new and old option values. Really long values could make the log look strange.
188
+ - Added: If constant `SIMPLE_HISTORY_LOG_DEBUG` is defined and true automatically adds `$_GET`, `$_POST`, and more info to each logged event. Mostly useful for the developer, but maybe some of you are a bit paranoid and want it too.
189
  - Updated: German translation updated.
190
 
191
  = 2.0.20 (February 2015) =