Breadcrumb NavXT - Version 2.0.1

Version Description

Download this release

Release Info

Developer mtekk
Plugin Icon 128x128 Breadcrumb NavXT
Version 2.0.1
Comparing to
See all releases

Version 2.0.1

breadcrumb_navxt.po ADDED
@@ -0,0 +1,368 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Breadcrumb NavXT\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2008-01-25 16:19-0600\n"
6
+ "PO-Revision-Date: 2008-01-25 16:19-0600\n"
7
+ "Last-Translator: John Havlik <mtekkmonkey@gmail.com>\n"
8
+ "Language-Team: John Havlik <mtekkmonkey@gmail.com>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-Language: English\n"
13
+ "X-Poedit-KeywordsList: __;_e\n"
14
+ "X-Poedit-Basepath: .\n"
15
+ "X-Poedit-SearchPath-0: C:\\Documents and Settings\\mtekk\\My Documents\\Aptana Studio\\Breadcrumb NavXT\n"
16
+
17
+ #: C:\Documents
18
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
19
+ #: NavXT/breadcrumb_navxt_admin.php:44
20
+ msgid ""
21
+ "<strong>Aborting: WordPress API Malfunction</strong><br /> For some reason the \n"
22
+ "\t\t\t\tfunction get_currentuserinfo() did not behave as expected. Please report this bug\n"
23
+ "\t\t\t\tto the plug-in author. In your report please specify your WordPress version, PHP version,\n"
24
+ "\t\t\t\tApache (or whatever HTTP server you are using) verion, and the version of the plug-in you \n"
25
+ "\t\t\t\tare using.<br />"
26
+ msgstr ""
27
+
28
+ #: C:\Documents
29
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
30
+ #: NavXT/breadcrumb_navxt_admin.php:49
31
+ msgid "WordPress version: "
32
+ msgstr ""
33
+
34
+ #: C:\Documents
35
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
36
+ #: NavXT/breadcrumb_navxt_admin.php:51
37
+ msgid "PHP version: "
38
+ msgstr ""
39
+
40
+ #: C:\Documents
41
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
42
+ #: NavXT/breadcrumb_navxt_admin.php:53
43
+ msgid "Plug-in version: "
44
+ msgstr ""
45
+
46
+ #: C:\Documents
47
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
48
+ #: NavXT/breadcrumb_navxt_admin.php:58
49
+ msgid "<strong>Aborting: Insufficient Privleges</strong><br /> Your User Level: "
50
+ msgstr ""
51
+
52
+ #: C:\Documents
53
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
54
+ #: NavXT/breadcrumb_navxt_admin.php:60
55
+ msgid "<br /> Required User Level: "
56
+ msgstr ""
57
+
58
+ #: C:\Documents
59
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
60
+ #: NavXT/breadcrumb_navxt_admin.php:240
61
+ msgid "Warning, your version of Breadcrumb NavXT does not match the version supported by this administrative interface. As a result things may not work as intened."
62
+ msgstr ""
63
+
64
+ #: C:\Documents
65
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
66
+ #: NavXT/breadcrumb_navxt_admin.php:241
67
+ msgid "Your Breadcrumb NavXT Administration interface version is "
68
+ msgstr ""
69
+
70
+ #: C:\Documents
71
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
72
+ #: NavXT/breadcrumb_navxt_admin.php:242
73
+ msgid "Your Breadcrumb NavXT version is "
74
+ msgstr ""
75
+
76
+ #: C:\Documents
77
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
78
+ #: NavXT/breadcrumb_navxt_admin.php:247
79
+ msgid ""
80
+ "This administration interface allows the full customization of the breadcrumb output with no loss\n"
81
+ "\tof functionality when compared to manual configuration. Each setting is the same as the corresponding\n"
82
+ "\tclass option, please refer to the \n"
83
+ "\t<a title=\"Go to the Breadcrumb NavXT documentation\" href=\"http://mtekk.weblogs.us/code/breadcrumb-navxt/breadcrumb-navxt-doc/\">documentation</a> \n"
84
+ "\tfor more detailed explanation of each setting."
85
+ msgstr ""
86
+
87
+ #: C:\Documents
88
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
89
+ #: NavXT/breadcrumb_navxt_admin.php:254
90
+ msgid "General Settings:"
91
+ msgstr ""
92
+
93
+ #: C:\Documents
94
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
95
+ #: NavXT/breadcrumb_navxt_admin.php:258
96
+ msgid "Preserve spaces at the end and begining of the options, if not checked these spaces will not be saved."
97
+ msgstr ""
98
+
99
+ #: C:\Documents
100
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
101
+ #: NavXT/breadcrumb_navxt_admin.php:261
102
+ msgid "Blog Title:"
103
+ msgstr ""
104
+
105
+ #: C:\Documents
106
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
107
+ #: NavXT/breadcrumb_navxt_admin.php:265
108
+ msgid "Breadcrumb Separator:"
109
+ msgstr ""
110
+
111
+ #: C:\Documents
112
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
113
+ #: NavXT/breadcrumb_navxt_admin.php:269
114
+ msgid "Search Prefix:"
115
+ msgstr ""
116
+
117
+ #: C:\Documents
118
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
119
+ #: NavXT/breadcrumb_navxt_admin.php:273
120
+ msgid "Search Suffix:"
121
+ msgstr ""
122
+
123
+ #: C:\Documents
124
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
125
+ #: NavXT/breadcrumb_navxt_admin.php:277
126
+ msgid "404 Title:"
127
+ msgstr ""
128
+
129
+ #: C:\Documents
130
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
131
+ #: NavXT/breadcrumb_navxt_admin.php:282
132
+ msgid "Static Frontpage Settings:"
133
+ msgstr ""
134
+
135
+ #: C:\Documents
136
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
137
+ #: NavXT/breadcrumb_navxt_admin.php:283
138
+ msgid "Static Frontpage:"
139
+ msgstr ""
140
+
141
+ #: C:\Documents
142
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
143
+ #: NavXT/breadcrumb_navxt_admin.php:297
144
+ msgid "Relative Blog URL:"
145
+ msgstr ""
146
+
147
+ #: C:\Documents
148
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
149
+ #: NavXT/breadcrumb_navxt_admin.php:300
150
+ msgid "Display Home:"
151
+ msgstr ""
152
+
153
+ #: C:\Documents
154
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
155
+ #: NavXT/breadcrumb_navxt_admin.php:313
156
+ msgid "Display Home Link:"
157
+ msgstr ""
158
+
159
+ #: C:\Documents
160
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
161
+ #: NavXT/breadcrumb_navxt_admin.php:327
162
+ msgid "Home Title:"
163
+ msgstr ""
164
+
165
+ #: C:\Documents
166
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
167
+ #: NavXT/breadcrumb_navxt_admin.php:332
168
+ msgid "Author Page Settings:"
169
+ msgstr ""
170
+
171
+ #: C:\Documents
172
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
173
+ #: NavXT/breadcrumb_navxt_admin.php:334
174
+ msgid "Author Prefix:"
175
+ msgstr ""
176
+
177
+ #: C:\Documents
178
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
179
+ #: NavXT/breadcrumb_navxt_admin.php:338
180
+ msgid "Author Suffix:"
181
+ msgstr ""
182
+
183
+ #: C:\Documents
184
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
185
+ #: NavXT/breadcrumb_navxt_admin.php:341
186
+ msgid "Author Display Format:"
187
+ msgstr ""
188
+
189
+ #: C:\Documents
190
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
191
+ #: NavXT/breadcrumb_navxt_admin.php:356
192
+ msgid "Archive Display Settings:"
193
+ msgstr ""
194
+
195
+ #: C:\Documents
196
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
197
+ #: NavXT/breadcrumb_navxt_admin.php:358
198
+ msgid "URL Title Prefix:"
199
+ msgstr ""
200
+
201
+ #: C:\Documents
202
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
203
+ #: NavXT/breadcrumb_navxt_admin.php:362
204
+ msgid "URL Title Suffix:"
205
+ msgstr ""
206
+
207
+ #: C:\Documents
208
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
209
+ #: NavXT/breadcrumb_navxt_admin.php:366
210
+ msgid "Archive by Category Prefix:"
211
+ msgstr ""
212
+
213
+ #: C:\Documents
214
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
215
+ #: NavXT/breadcrumb_navxt_admin.php:370
216
+ msgid "Archive by Category Suffix:"
217
+ msgstr ""
218
+
219
+ #: C:\Documents
220
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
221
+ #: NavXT/breadcrumb_navxt_admin.php:374
222
+ msgid "Archive by Date Prefix:"
223
+ msgstr ""
224
+
225
+ #: C:\Documents
226
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
227
+ #: NavXT/breadcrumb_navxt_admin.php:378
228
+ msgid "Archive by Date Suffix:"
229
+ msgstr ""
230
+
231
+ #: C:\Documents
232
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
233
+ #: NavXT/breadcrumb_navxt_admin.php:381
234
+ msgid "Archive by Date Format:"
235
+ msgstr ""
236
+
237
+ #: C:\Documents
238
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
239
+ #: NavXT/breadcrumb_navxt_admin.php:395
240
+ msgid "Archive by Tag Prefix:"
241
+ msgstr ""
242
+
243
+ #: C:\Documents
244
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
245
+ #: NavXT/breadcrumb_navxt_admin.php:399
246
+ msgid "Archive by Tag Suffix:"
247
+ msgstr ""
248
+
249
+ #: C:\Documents
250
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
251
+ #: NavXT/breadcrumb_navxt_admin.php:404
252
+ msgid "Current Item Settings:"
253
+ msgstr ""
254
+
255
+ #: C:\Documents
256
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
257
+ #: NavXT/breadcrumb_navxt_admin.php:405
258
+ msgid "Link Current Item:"
259
+ msgstr ""
260
+
261
+ #: C:\Documents
262
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
263
+ #: NavXT/breadcrumb_navxt_admin.php:419
264
+ msgid "Current Item URL Title:"
265
+ msgstr ""
266
+
267
+ #: C:\Documents
268
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
269
+ #: NavXT/breadcrumb_navxt_admin.php:423
270
+ msgid "Current Item Style Prefix:"
271
+ msgstr ""
272
+
273
+ #: C:\Documents
274
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
275
+ #: NavXT/breadcrumb_navxt_admin.php:427
276
+ msgid "Current Item Style Suffix:"
277
+ msgstr ""
278
+
279
+ #: C:\Documents
280
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
281
+ #: NavXT/breadcrumb_navxt_admin.php:430
282
+ msgid "Display Paged Text:"
283
+ msgstr ""
284
+
285
+ #: C:\Documents
286
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
287
+ #: NavXT/breadcrumb_navxt_admin.php:444
288
+ msgid "Paged Prefix:"
289
+ msgstr ""
290
+
291
+ #: C:\Documents
292
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
293
+ #: NavXT/breadcrumb_navxt_admin.php:448
294
+ msgid "Paged Suffix:"
295
+ msgstr ""
296
+
297
+ #: C:\Documents
298
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
299
+ #: NavXT/breadcrumb_navxt_admin.php:453
300
+ msgid "Single Post Settings:"
301
+ msgstr ""
302
+
303
+ #: C:\Documents
304
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
305
+ #: NavXT/breadcrumb_navxt_admin.php:455
306
+ msgid "Single Blogpost Prefix:"
307
+ msgstr ""
308
+
309
+ #: C:\Documents
310
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
311
+ #: NavXT/breadcrumb_navxt_admin.php:459
312
+ msgid "Single Blogpost Suffix:"
313
+ msgstr ""
314
+
315
+ #: C:\Documents
316
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
317
+ #: NavXT/breadcrumb_navxt_admin.php:463
318
+ msgid "Page Prefix:"
319
+ msgstr ""
320
+
321
+ #: C:\Documents
322
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
323
+ #: NavXT/breadcrumb_navxt_admin.php:467
324
+ msgid "Page Suffix:"
325
+ msgstr ""
326
+
327
+ #: C:\Documents
328
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
329
+ #: NavXT/breadcrumb_navxt_admin.php:471
330
+ msgid "Post Attachment Prefix:"
331
+ msgstr ""
332
+
333
+ #: C:\Documents
334
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
335
+ #: NavXT/breadcrumb_navxt_admin.php:475
336
+ msgid "Post Attachment Suffix:"
337
+ msgstr ""
338
+
339
+ #: C:\Documents
340
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
341
+ #: NavXT/breadcrumb_navxt_admin.php:479
342
+ msgid "Post Title Maxlen:"
343
+ msgstr ""
344
+
345
+ #: C:\Documents
346
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
347
+ #: NavXT/breadcrumb_navxt_admin.php:483
348
+ msgid "Single Blog Post Category Display:"
349
+ msgstr ""
350
+
351
+ #: C:\Documents
352
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
353
+ #: NavXT/breadcrumb_navxt_admin.php:497
354
+ msgid "Single Blog Post Category Prefix:"
355
+ msgstr ""
356
+
357
+ #: C:\Documents
358
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
359
+ #: NavXT/breadcrumb_navxt_admin.php:501
360
+ msgid "Single Blog Post Category Suffix:"
361
+ msgstr ""
362
+
363
+ #: C:\Documents
364
+ #: and Settings\mtekk\My Documents\Aptana Studio\Breadcrumb
365
+ #: NavXT/breadcrumb_navxt_admin.php:505
366
+ msgid "Save"
367
+ msgstr ""
368
+
breadcrumb_navxt_admin.php ADDED
@@ -0,0 +1,548 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Breadcrumb NavXT - Adminstration Interface
4
+ Plugin URI: http://mtekk.weblogs.us/code/breadcrumb-navxt/
5
+ Description: Adds a breadcrumb navigation showing the visitor&#39;s path to their current location. For details on how to use this plugin visit <a href="http://mtekk.weblogs.us/code/breadcrumb-navxt/">Breadcrumb NavXT</a>.
6
+ Version: 2.0.1
7
+ Author: John Havlik
8
+ Author URI: http://mtekk.weblogs.us/
9
+ */
10
+ /* Copyright 2007-2008 John Havlik (email : mtekkmonkey@gmail.com)
11
+
12
+ This program is free software; you can redistribute it and/or modify
13
+ it under the terms of the GNU General Public License as published by
14
+ the Free Software Foundation; either version 2 of the License, or
15
+ (at your option) any later version.
16
+
17
+ This program is distributed in the hope that it will be useful,
18
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
+ GNU General Public License for more details.
21
+
22
+ You should have received a copy of the GNU General Public License
23
+ along with this program; if not, write to the Free Software
24
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
+ */
26
+ $bcn_admin_version = "2.0.1";
27
+ $bcn_admin_req = 8;
28
+ //Include the breadcrumb class if needed
29
+ if(!class_exists('bcn_breadcrumb'))
30
+ {
31
+ include(dirname(__FILE__)."/breadcrumb_navxt_class.php");
32
+ }
33
+ //Include the supplemental functions
34
+ include(dirname(__FILE__)."/breadcrumb_navxt_api.php");
35
+ //Security function
36
+ function bcn_security()
37
+ {
38
+ global $userdata, $bcn_admin_req, $bcn_version, $wp_version;
39
+ get_currentuserinfo();
40
+ if ($userdata->user_level < $bcn_admin_req)
41
+ {
42
+ if($userdata->user_level == NULL)
43
+ {
44
+ _e("<strong>Aborting: WordPress API Malfunction</strong><br /> For some reason the
45
+ function get_currentuserinfo() did not behave as expected. Please report this bug
46
+ to the plug-in author. In your report please specify your WordPress version, PHP version,
47
+ Apache (or whatever HTTP server you are using) verion, and the version of the plug-in you
48
+ are using.<br />");
49
+ _e("WordPress version: ");
50
+ echo $wp_version . "<br />";
51
+ _e("PHP version: ");
52
+ echo phpversion() . "<br />";
53
+ _e("Plug-in version: ");
54
+ echo $bcn_version . "<br />";
55
+ }
56
+ else
57
+ {
58
+ _e("<strong>Aborting: Insufficient Privleges</strong><br /> Your User Level: ");
59
+ echo $userdata->user_level;
60
+ _e("<br /> Required User Level: ");
61
+ echo $bcn_admin_req . "<br />";
62
+ }
63
+ die();
64
+ }
65
+ }
66
+ //Install script
67
+ function bcn_install()
68
+ {
69
+ global $bcn_admin_req, $bcn_version;
70
+ bcn_security();
71
+ if(get_option(bcn_version) != $bcn_version)
72
+ {
73
+ update_option('bcn_version' , $bcn_version);
74
+ update_option('bcn_preserve', 0);
75
+ update_option('bcn_static_frontpage', 'false');
76
+ update_option('bcn_url_blog', '');
77
+ update_option('bcn_home_display', 'true');
78
+ update_option('bcn_home_link', 'true');
79
+ update_option('bcn_title_home', 'Home');
80
+ update_option('bcn_title_blog', 'Blog');
81
+ update_option('bcn_separator', '&nbsp;>&nbsp;');
82
+ update_option('bcn_search_prefix', 'Search results for &#39;');
83
+ update_option('bcn_search_suffix', '&#39;');
84
+ update_option('bcn_author_prefix', 'Posts by ');
85
+ update_option('bcn_author_suffix', '');
86
+ update_option('bcn_author_display', 'display_name');
87
+ update_option('bcn_singleblogpost_prefix', 'Blog article:&nbsp;');
88
+ update_option('bcn_singleblogpost_suffix', '');
89
+ update_option('bcn_page_prefix', '');
90
+ update_option('bcn_page_suffix', '');
91
+ update_option('bcn_urltitle_prefix', 'Browse to:&nbsp;');
92
+ update_option('bcn_urltitle_suffix', '');
93
+ update_option('bcn_archive_category_prefix', 'Archive by category &#39;');
94
+ update_option('bcn_archive_category_suffix', '&#39;');
95
+ update_option('bcn_archive_date_prefix', 'Archive: ');
96
+ update_option('bcn_archive_date_suffix', '');
97
+ update_option('bcn_archive_date_format', 'EU');
98
+ update_option('bcn_attachment_prefix', 'Attachment:&nbsp;');
99
+ update_option('bcn_attachment_suffix', '');
100
+ update_option('bcn_archive_tag_prefix', 'Archive by tag &#39;');
101
+ update_option('bcn_archive_tag_suffix', '&#39;');
102
+ update_option('bcn_title_404', '404');
103
+ update_option('bcn_link_current_item', 'false');
104
+ update_option('bcn_current_item_urltitle', 'Link of current page (click to refresh)');
105
+ update_option('bcn_current_item_style_prefix', '');
106
+ update_option('bcn_current_item_style_suffix', '');
107
+ update_option('bcn_posttitle_maxlen', 0);
108
+ update_option('bcn_paged_display', 'false');
109
+ update_option('bcn_paged_prefix', ', Page&nbsp;');
110
+ update_option('bcn_paged_suffix', '');
111
+ update_option('bcn_singleblogpost_category_display', 'true');
112
+ update_option('bcn_singleblogpost_category_prefix', '');
113
+ update_option('bcn_singleblogpost_category_suffix', '');
114
+ }
115
+ }
116
+ //Display a breadcrumb, only used if admin interface is used
117
+ function breadcrumb_nav_xt_display()
118
+ {
119
+ //Playing things really safe here
120
+ if(class_exists('bcn_breadcrumb'))
121
+ {
122
+ //Make new breadcrumb object
123
+ $breadcrumb = new bcn_breadcrumb;
124
+ //Set the settings
125
+ $breadcrumb->opt['static_frontpage'] = get_option('bcn_static_frontpage');
126
+ $breadcrumb->opt['url_blog'] = get_option('bcn_url_blog');
127
+ $breadcrumb->opt['home_display'] = get_option('bcn_home_display');
128
+ $breadcrumb->opt['home_link'] = get_option('bcn_home_link');
129
+ $breadcrumb->opt['title_home'] = get_option('bcn_title_home');
130
+ $breadcrumb->opt['title_blog'] = get_option('bcn_title_blog');
131
+ $breadcrumb->opt['separator'] = get_option('bcn_separator');
132
+ $breadcrumb->opt['search_prefix'] = get_option('bcn_search_prefix');
133
+ $breadcrumb->opt['search_suffix'] = get_option('bcn_search_suffix');
134
+ $breadcrumb->opt['author_prefix'] = get_option('bcn_author_prefix');
135
+ $breadcrumb->opt['author_suffix'] = get_option('bcn_author_suffix');
136
+ $breadcrumb->opt['author_display'] = get_option('bcn_author_display');
137
+ $breadcrumb->opt['attachment_prefix'] = get_option('bcn_attachment_prefix');
138
+ $breadcrumb->opt['attachment_suffix'] = get_option('bcn_attachment_suffix');
139
+ $breadcrumb->opt['singleblogpost_prefix'] = get_option('bcn_singleblogpost_prefix');
140
+ $breadcrumb->opt['singleblogpost_suffix'] = get_option('bcn_singleblogpost_suffix');
141
+ $breadcrumb->opt['page_prefix'] = get_option('bcn_page_prefix');
142
+ $breadcrumb->opt['page_suffix'] = get_option('bcn_page_suffix');
143
+ $breadcrumb->opt['urltitle_prefix'] = get_option('bcn_urltitle_prefix');
144
+ $breadcrumb->opt['urltitle_suffix'] = get_option('bcn_urltitle_suffix');
145
+ $breadcrumb->opt['archive_category_prefix'] = get_option('bcn_archive_category_prefix');
146
+ $breadcrumb->opt['archive_category_suffix'] = get_option('bcn_archive_category_suffix');
147
+ $breadcrumb->opt['archive_date_prefix'] = get_option('bcn_archive_date_prefix');
148
+ $breadcrumb->opt['archive_date_suffix'] = get_option('bcn_archive_date_suffix');
149
+ $breadcrumb->opt['archive_date_format'] = get_option('bcn_archive_date_format');
150
+ $breadcrumb->opt['archive_tag_prefix'] = get_option('bcn_archive_tag_prefix');
151
+ $breadcrumb->opt['archive_tag_suffix'] = get_option('bcn_archive_tag_suffix');
152
+ $breadcrumb->opt['title_404'] = get_option('bcn_title_404');
153
+ $breadcrumb->opt['link_current_item'] = get_option('bcn_link_current_item');
154
+ $breadcrumb->opt['current_item_urltitle'] = get_option('bcn_current_item_urltitle');
155
+ $breadcrumb->opt['current_item_style_prefix'] = get_option('bcn_current_item_style_prefix');
156
+ $breadcrumb->opt['current_item_style_suffix'] = get_option('bcn_current_item_style_suffix');
157
+ $breadcrumb->opt['posttitle_maxlen'] = get_option('bcn_posttitle_maxlen');
158
+ $breadcrumb->opt['paged_display'] = get_option('bcn_paged_display');
159
+ $breadcrumb->opt['paged_prefix'] = get_option('bcn_paged_prefix');
160
+ $breadcrumb->opt['paged_suffix'] = get_option('bcn_paged_suffix');
161
+ $breadcrumb->opt['singleblogpost_category_display'] = get_option('bcn_singleblogpost_category_display');
162
+ $breadcrumb->opt['singleblogpost_category_prefix'] = get_option('bcn_singleblogpost_category_prefix');
163
+ $breadcrumb->opt['singleblogpost_category_suffix'] = get_option('bcn_singleblogpost_category_suffix');
164
+ //Display the breadcrumb
165
+ $breadcrumb->display();
166
+ }
167
+ }
168
+ //Sets the settings
169
+ function bcn_admin_options()
170
+ {
171
+ global $wpdb, $bcn_admin_req;
172
+ bcn_security();
173
+ if(isset($_POST['bcn_preserve_space']))
174
+ {
175
+ $temp = 1;
176
+ }
177
+ else
178
+ {
179
+ $temp = 0;
180
+ }
181
+ update_option('bcn_preserve', $temp);
182
+ update_option('bcn_language', bcn_get('language'));
183
+ update_option('bcn_static_frontpage', bcn_get('static_frontpage'));
184
+ update_option('bcn_url_blog', bcn_get('url_blog'));
185
+ update_option('bcn_home_display', bcn_get('home_display'));
186
+ update_option('bcn_home_link', bcn_get('home_link'));
187
+ update_option('bcn_title_home', bcn_get('title_home'));
188
+ update_option('bcn_title_blog', bcn_get('title_blog'));
189
+ update_option('bcn_separator', bcn_get('separator'));
190
+ update_option('bcn_search_prefix', bcn_get('search_prefix'));
191
+ update_option('bcn_search_suffix', bcn_get('search_suffix'));
192
+ update_option('bcn_author_prefix', bcn_get('author_prefix'));
193
+ update_option('bcn_author_suffix', bcn_get('author_suffix'));
194
+ update_option('bcn_author_display', bcn_get('author_display'));
195
+ update_option('bcn_attachment_prefix', bcn_get('attachment_prefix'));
196
+ update_option('bcn_attachment_suffix', bcn_get('attachment_suffix'));
197
+ update_option('bcn_singleblogpost_prefix', bcn_get('singleblogpost_prefix'));
198
+ update_option('bcn_singleblogpost_suffix', bcn_get('singleblogpost_suffix'));
199
+ update_option('bcn_page_prefix', bcn_get('page_prefix'));
200
+ update_option('bcn_page_suffix', bcn_get('page_suffix'));
201
+ update_option('bcn_urltitle_prefix', bcn_get('urltitle_prefix'));
202
+ update_option('bcn_urltitle_suffix', bcn_get('urltitle_suffix'));
203
+ update_option('bcn_archive_category_prefix', bcn_get('archive_category_prefix'));
204
+ update_option('bcn_archive_category_suffix', bcn_get('archive_category_suffix'));
205
+ update_option('bcn_archive_date_prefix', bcn_get('archive_date_prefix'));
206
+ update_option('bcn_archive_date_suffix', bcn_get('archive_date_suffix'));
207
+ update_option('bcn_archive_date_format', bcn_get('archive_date_format'));
208
+ update_option('bcn_archive_tag_prefix', bcn_get('archive_tag_prefix'));
209
+ update_option('bcn_archive_tag_suffix', bcn_get('archive_tag_suffix'));
210
+ update_option('bcn_title_404', bcn_get('title_404'));
211
+ update_option('bcn_link_current_item', bcn_get('link_current_item'));
212
+ update_option('bcn_current_item_urltitle', bcn_get('current_item_urltitle'));
213
+ update_option('bcn_current_item_style_prefix', bcn_get('current_item_style_prefix'));
214
+ update_option('bcn_current_item_style_suffix', bcn_get('current_item_style_suffix'));
215
+ update_option('bcn_posttitle_maxlen', bcn_get('posttitle_maxlen'));
216
+ update_option('bcn_paged_display', bcn_get('paged_display'));
217
+ update_option('bcn_paged_prefix', bcn_get('paged_prefix'));
218
+ update_option('bcn_paged_suffix', bcn_get('paged_suffix'));
219
+ update_option('bcn_singleblogpost_category_display', bcn_get('singleblogpost_category_display'));
220
+ update_option('bcn_singleblogpost_category_prefix', bcn_get('singleblogpost_category_prefix'));
221
+ update_option('bcn_singleblogpost_category_suffix', bcn_get('singleblogpost_category_suffix'));
222
+ }
223
+ //Creates link to admin interface
224
+ function bcn_add_page()
225
+ {
226
+ global $bcn_admin_req;
227
+ add_options_page('Breadcrumb NavXT Settings', 'Breadcrumb NavXT', $bcn_admin_req, 'breadcrumb-nav-xt', 'bcn_admin');
228
+ }
229
+ //The actual interface
230
+ function bcn_admin()
231
+ {
232
+ global $bcn_admin_req, $bcn_admin_version, $bcn_version;
233
+ bcn_security();
234
+ bcn_local();
235
+ list($breadcrumb_major, $breadcrumb_minor, $breadcrumb_bugfix) = explode('.', $bcn_version);
236
+ list($major, $minor, $bugfix) = explode('.', $bcn_admin_version);
237
+ if($breadcrumb_major != $major || $breadcrumb_minor != $minor)
238
+ { ?>
239
+ <div id="message" class="updated fade">
240
+ <p><?php _e('Warning, your version of Breadcrumb NavXT does not match the version supported by this administrative interface. As a result things may not work as intened.'); ?></p>
241
+ <p><?php _e('Your Breadcrumb NavXT Administration interface version is '); echo $bcn_version; ?>.</p>
242
+ <p><?php _e('Your Breadcrumb NavXT version is '); echo $bcn_admin_version; ?>.</p>
243
+ </div>
244
+ <?php }
245
+ ?>
246
+ <div class="wrap"><h2>Breadcrumb NavXT Settings:</h2>
247
+ <p><?php _e('This administration interface allows the full customization of the breadcrumb output with no loss
248
+ of functionality when compared to manual configuration. Each setting is the same as the corresponding
249
+ class option, please refer to the
250
+ <a title="Go to the Breadcrumb NavXT documentation" href="http://mtekk.weblogs.us/code/breadcrumb-navxt/breadcrumb-navxt-doc/">documentation</a>
251
+ for more detailed explanation of each setting.'); ?></p>
252
+ <form action="options-general.php?page=breadcrumb-nav-xt" method="post" id="bcn_admin_options">
253
+ <fieldset id="general">
254
+ <legend><?php _e('General Settings:'); ?></legend>
255
+ <p>
256
+ <label for="bcn_preserve_space">
257
+ <input type="checkbox" name="bcn_preserve_space" id="bcn_preserve_space" <?php if(get_option('bcn_preserve') == 1) echo 'checked="checked"'; ?> />
258
+ <?php _e('Preserve spaces at the end and begining of the options, if not checked these spaces will not be saved.'); ?></label>
259
+ </p>
260
+ <p>
261
+ <label for="title_blog"><?php _e('Blog Title:'); ?></label>
262
+ <input type="text" name="title_blog" id="title_blog" value="<?php echo get_option('bcn_title_blog'); ?>" size="32" />
263
+ </p>
264
+ <p>
265
+ <label for="separator"><?php _e('Breadcrumb Separator:'); ?></label>
266
+ <input type="text" name="separator" id="separator" value="<?php echo get_option('bcn_separator'); ?>" size="32" />
267
+ </p>
268
+ <p>
269
+ <label for="search_prefix"><?php _e('Search Prefix:'); ?></label>
270
+ <input type="text" name="search_prefix" id="search_prefix" value="<?php echo get_option('bcn_search_prefix'); ?>" size="32" />
271
+ </p>
272
+ <p>
273
+ <label for="search_suffix"><?php _e('Search Suffix:'); ?></label>
274
+ <input type="text" name="search_suffix" id="search_suffix" value="<?php echo get_option('bcn_search_suffix'); ?>" size="32" />
275
+ </p>
276
+ <p>
277
+ <label for="title_404"><?php _e('404 Title:'); ?></label>
278
+ <input type="text" name="title_404" id="title_404" value="<?php echo get_option('bcn_title_404'); ?>" size="32" />
279
+ </p>
280
+ </fieldset>
281
+ <fieldset id="static_front_page">
282
+ <legend><?php _e('Static Frontpage Settings:'); ?></legend>
283
+ <p><?php _e('Static Frontpage:'); ?>
284
+ <select name="static_frontpage">
285
+ <?php $bcn_opta = array("true", "false");?>
286
+ <option><?php echo get_option('bcn_static_frontpage'); ?></option>
287
+ <?php foreach($bcn_opta as $option)
288
+ {
289
+ if($option != get_option('bcn_static_frontpage'))
290
+ {
291
+ echo "<option>" . $option . "</option>";
292
+ }
293
+ }?>
294
+ </select>
295
+ </p>
296
+ <p>
297
+ <label for="url_blog"><?php _e('Relative Blog URL:'); ?></label>
298
+ <input type="text" name="url_blog" id="url_blog" value="<?php echo get_option('bcn_url_blog'); ?>" size="32" />
299
+ </p>
300
+ <p><?php _e('Display Home:'); ?>
301
+ <select name="home_display">
302
+ <?php $bcn_opta = array("true", "false");?>
303
+ <option><?php echo get_option('bcn_home_display'); ?></option>
304
+ <?php foreach($bcn_opta as $option)
305
+ {
306
+ if($option != get_option('bcn_home_display'))
307
+ {
308
+ echo "<option>" . $option . "</option>";
309
+ }
310
+ }?>
311
+ </select>
312
+ </p>
313
+ <p><?php _e('Display Home Link:'); ?>
314
+ <select name="home_link">
315
+ <?php $bcn_opta = array("true", "false");?>
316
+ <option><?php echo get_option('bcn_home_link'); ?></option>
317
+ <?php foreach($bcn_opta as $option)
318
+ {
319
+ if($option != get_option('bcn_home_link'))
320
+ {
321
+ echo "<option>" . $option . "</option>";
322
+ }
323
+ }?>
324
+ </select>
325
+ </p>
326
+ <p>
327
+ <label for="title_home"><?php _e('Home Title:'); ?></label>
328
+ <input type="text" name="title_home" id="title_home" value="<?php echo get_option('bcn_title_home'); ?>" size="32" />
329
+ </p>
330
+ </fieldset>
331
+ <fieldset id="author">
332
+ <legend><?php _e('Author Page Settings:'); ?></legend>
333
+ <p>
334
+ <label for="author_prefix"><?php _e('Author Prefix:'); ?></label>
335
+ <input type="text" name="author_prefix" id="author_prefix" value="<?php echo get_option('bcn_author_prefix'); ?>" size="32" />
336
+ </p>
337
+ <p>
338
+ <label for="author_suffix"><?php _e('Author Suffix:'); ?></label>
339
+ <input type="text" name="author_suffix" id="author_suffix" value="<?php echo get_option('bcn_author_suffix'); ?>" size="32" />
340
+ </p>
341
+ <p><?php _e('Author Display Format:'); ?>
342
+ <select name="author_display">
343
+ <?php $bcn_opta = array("display_name", "nickname", "first_name", "last_name");?>
344
+ <option><?php echo get_option('bcn_author_display'); ?></option>
345
+ <?php foreach($bcn_opta as $option)
346
+ {
347
+ if($option != get_option('bcn_author_display'))
348
+ {
349
+ echo "<option>" . $option . "</option>";
350
+ }
351
+ }?>
352
+ </select>
353
+ </p>
354
+ </fieldset>
355
+ <fieldset id="category">
356
+ <legend><?php _e('Archive Display Settings:'); ?></legend>
357
+ <p>
358
+ <label for="urltitle_prefix"><?php _e('URL Title Prefix:'); ?></label>
359
+ <input type="text" name="urltitle_prefix" id="urltitle_prefix" value="<?php echo get_option('bcn_urltitle_prefix'); ?>" size="32" />
360
+ </p>
361
+ <p>
362
+ <label for="urltitle_suffix"><?php _e('URL Title Suffix:'); ?></label>
363
+ <input type="text" name="urltitle_suffix" id="urltitle_suffix" value="<?php echo get_option('bcn_urltitle_suffix'); ?>" size="32" />
364
+ </p>
365
+ <p>
366
+ <label for="archive_category_prefix"><?php _e('Archive by Category Prefix:'); ?></label>
367
+ <input type="text" name="archive_category_prefix" id="archive_category_prefix" value="<?php echo get_option('bcn_archive_category_prefix'); ?>" size="32" />
368
+ </p>
369
+ <p>
370
+ <label for="archive_category_suffix"><?php _e('Archive by Category Suffix:'); ?></label>
371
+ <input type="text" name="archive_category_suffix" id="archive_category_suffix" value="<?php echo get_option('bcn_archive_category_suffix'); ?>" size="32" />
372
+ </p>
373
+ <p>
374
+ <label for="archive_date_prefix"><?php _e('Archive by Date Prefix:'); ?></label>
375
+ <input type="text" name="archive_date_prefix" id="archive_date_prefix" value="<?php echo get_option('bcn_archive_date_prefix'); ?>" size="32" />
376
+ </p>
377
+ <p>
378
+ <label for="archive_date_suffix"><?php _e('Archive by Date Suffix:'); ?></label>
379
+ <input type="text" name="archive_date_suffix" id="archive_date_suffix" value="<?php echo get_option('bcn_archive_date_suffix'); ?>" size="32" />
380
+ </p>
381
+ <p><?php _e('Archive by Date Format:'); ?>
382
+ <select name="archive_date_format">
383
+ <?php $bcn_opta = array("EU", "US", "ISO");?>
384
+ <option><?php echo get_option('bcn_archive_date_format'); ?></option>
385
+ <?php foreach($bcn_opta as $option)
386
+ {
387
+ if($option != get_option('bcn_archive_date_format'))
388
+ {
389
+ echo "<option>" . $option . "</option>";
390
+ }
391
+ }?>
392
+ </select>
393
+ </p>
394
+ <p>
395
+ <label for="archive_tag_prefix"><?php _e('Archive by Tag Prefix:'); ?></label>
396
+ <input type="text" name="archive_tag_prefix" id="archive_tag_prefix" value="<?php echo get_option('bcn_archive_tag_prefix'); ?>" size="32" />
397
+ </p>
398
+ <p>
399
+ <label for="archive_tag_suffix"><?php _e('Archive by Tag Suffix:'); ?></label>
400
+ <input type="text" name="archive_tag_suffix" id="archive_tag_suffix" value="<?php echo get_option('bcn_archive_tag_suffix'); ?>" size="32" />
401
+ </p>
402
+ </fieldset>
403
+ <fieldset id="current">
404
+ <legend><?php _e('Current Item Settings:'); ?></legend>
405
+ <p><?php _e('Link Current Item:'); ?>
406
+ <select name="link_current_item">
407
+ <?php $bcn_opta = array("true", "false");?>
408
+ <option><?php echo get_option('bcn_link_current_item'); ?></option>
409
+ <?php foreach($bcn_opta as $option)
410
+ {
411
+ if($option != get_option('bcn_link_current_item'))
412
+ {
413
+ echo "<option>" . $option . "</option>";
414
+ }
415
+ }?>
416
+ </select>
417
+ </p>
418
+ <p>
419
+ <label for="current_item_urltitle"><?php _e('Current Item URL Title:'); ?></label>
420
+ <input type="text" name="current_item_urltitle" id="current_item_urltitle" value="<?php echo get_option('bcn_current_item_urltitle'); ?>" size="32" />
421
+ </p>
422
+ <p>
423
+ <label for="current_item_style_prefix"><?php _e('Current Item Style Prefix:'); ?></label>
424
+ <input type="text" name="current_item_style_prefix" id="current_item_style_prefix" value="<?php echo get_option('bcn_current_item_style_prefix'); ?>" size="32" />
425
+ </p>
426
+ <p>
427
+ <label for="current_item_style_suffix"><?php _e('Current Item Style Suffix:'); ?></label>
428
+ <input type="text" name="current_item_style_suffix" id="current_item_style_suffix" value="<?php echo get_option('bcn_current_item_style_suffix'); ?>" size="32" />
429
+ </p>
430
+ <p><?php _e('Display Paged Text:'); ?>
431
+ <select name="paged_display">
432
+ <?php $bcn_opta = array("true", "false");?>
433
+ <option><?php echo get_option('bcn_paged_display'); ?></option>
434
+ <?php foreach($bcn_opta as $option)
435
+ {
436
+ if($option != get_option('bcn_paged_display'))
437
+ {
438
+ echo "<option>" . $option . "</option>";
439
+ }
440
+ }?>
441
+ </select>
442
+ </p>
443
+ <p>
444
+ <label for="paged_prefix"><?php _e('Paged Prefix:'); ?></label>
445
+ <input type="text" name="paged_prefix" id="paged_prefix" value="<?php echo get_option('bcn_paged_prefix'); ?>" size="32" />
446
+ </p>
447
+ <p>
448
+ <label for="paged_suffix"><?php _e('Paged Suffix:'); ?></label>
449
+ <input type="text" name="paged_suffix" id="paged_suffix" value="<?php echo get_option('bcn_paged_suffix'); ?>" size="32" />
450
+ </p>
451
+ </fieldset>
452
+ <fieldset id="single">
453
+ <legend><?php _e('Single Post Settings:'); ?></legend>
454
+ <p>
455
+ <label for="singleblogpost_prefix"><?php _e('Single Blogpost Prefix:'); ?></label>
456
+ <input type="text" name="singleblogpost_prefix" id="singleblogpost_prefix" value="<?php echo get_option('bcn_singleblogpost_prefix'); ?>" size="32" />
457
+ </p>
458
+ <p>
459
+ <label for="singleblogpost_suffix"><?php _e('Single Blogpost Suffix:'); ?></label>
460
+ <input type="text" name="singleblogpost_suffix" id="singleblogpost_suffix" value="<?php echo get_option('bcn_singleblogpost_suffix'); ?>" size="32" />
461
+ </p>
462
+ <p>
463
+ <label for="page_prefix"><?php _e('Page Prefix:'); ?></label>
464
+ <input type="text" name="page_prefix" id="page_prefix" value="<?php echo get_option('bcn_page_prefix'); ?>" size="32" />
465
+ </p>
466
+ <p>
467
+ <label for="page_suffix"><?php _e('Page Suffix:'); ?></label>
468
+ <input type="text" name="page_suffix" id="page_suffix" value="<?php echo get_option('bcn_page_suffix'); ?>" size="32" />
469
+ </p>
470
+ <p>
471
+ <label for="attachment_prefix"><?php _e('Post Attachment Prefix:'); ?></label>
472
+ <input type="text" name="attachment_prefix" id="attachment_prefix" value="<?php echo get_option('bcn_attachment_prefix'); ?>" size="32" />
473
+ </p>
474
+ <p>
475
+ <label for="attachment_suffix"><?php _e('Post Attachment Suffix:'); ?></label>
476
+ <input type="text" name="attachment_suffix" id="attachment_suffix" value="<?php echo get_option('bcn_attachment_suffix'); ?>" size="32" />
477
+ </p>
478
+ <p>
479
+ <label for="title_home"><?php _e('Post Title Maxlen:'); ?></label>
480
+ <input type="text" name="posttitle_maxlen" id="posttitle_maxlen" value="<?php echo get_option('bcn_posttitle_maxlen'); ?>" size="10" />
481
+ </p>
482
+ <p>
483
+ <label for="singleblogpost_category_display"><?php _e('Single Blog Post Category Display:'); ?></label>
484
+ <select name="singleblogpost_category_display">
485
+ <?php $bcn_opta = array("true", "false");?>
486
+ <option><?php echo get_option('bcn_singleblogpost_category_display'); ?></option>
487
+ <?php foreach($bcn_opta as $option)
488
+ {
489
+ if($option != get_option('bcn_singleblogpost_category_display'))
490
+ {
491
+ echo "<option>" . $option . "</option>";
492
+ }
493
+ }?>
494
+ </select>
495
+ </p>
496
+ <p>
497
+ <label for="singleblogpost_category_prefix"><?php _e('Single Blog Post Category Prefix:'); ?></label>
498
+ <input type="text" name="singleblogpost_category_prefix" id="singleblogpost_category_prefix" value="<?php echo get_option('bcn_singleblogpost_category_prefix'); ?>" size="32" />
499
+ </p>
500
+ <p>
501
+ <label for="singleblogpost_category_suffix"><?php _e('Single Blog Post Category Suffix:'); ?></label>
502
+ <input type="text" name="singleblogpost_category_suffix" id="singleblogpost_category_suffix" value="<?php echo get_option('bcn_singleblogpost_category_suffix'); ?>" size="32" />
503
+ </p>
504
+ </fieldset>
505
+ <input type="submit" name="bcn_admin_options" value="<?php _e('Save');?> &raquo;" />
506
+ </form>
507
+ </div>
508
+ <?php
509
+ }
510
+ //Additional styles for admin interface
511
+ function bcn_options_style()
512
+ {
513
+ ?>
514
+ <style>
515
+ fieldset {
516
+ margin-bottom: 5px;
517
+ padding: 10px;
518
+ border: #ccc solid 1px;
519
+ }
520
+ .halfl {
521
+ width: 46.25%;
522
+ float: left;
523
+ }
524
+ .halfr {
525
+ width: 46.25%;
526
+ float: right;
527
+ }
528
+ </style>
529
+ <?php
530
+ }
531
+ //WordPress hooks
532
+ if(function_exists('add_action')){
533
+ //Installation Script hook
534
+ add_action('activate_breadcrumb-navxt/breadcrumb_navigation_xt_admin.php','bcn_install');
535
+ //WordPress Admin interface hook
536
+ add_action('admin_menu', 'bcn_add_page');
537
+ add_action('admin_head', 'bcn_options_style');
538
+ //Admin Options hook
539
+ if(isset($_POST['bcn_admin_options']))
540
+ {
541
+ add_action('init', 'bcn_admin_options');
542
+ }
543
+ if(isset($_POST['bcn_language_set']))
544
+ {
545
+ add_action('init', 'bcn_language_set');
546
+ }
547
+ }
548
+ ?>
breadcrumb_navxt_api.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //Administration input complex, replaces the broken WordPress one
3
+ //Based off of the suggestions and code of Tom Klingenberg
4
+ function bcn_get($varname)
5
+ {
6
+ $val = $_POST[$varname];
7
+ $val = stripslashes($val);
8
+ //Keep out spaces please ;)
9
+ if(isset($_POST['bcn_preserve_space']))
10
+ {
11
+ update_option('bcn_preserve', '1');
12
+ $val = str_replace(" ", "&nbsp;", $val);
13
+ }
14
+ else
15
+ {
16
+ $val = htmlspecialchars($val);
17
+ }
18
+ return $val;
19
+ }
20
+ //WordPress localization stuff
21
+ function bcn_local()
22
+ {
23
+ load_plugin_textdomain('breadcrumb-navxt', 'wp-content/plugins/breadcrumb-navxt');
24
+ }
25
+ ?>
breadcrumb_navxt_class.php ADDED
@@ -0,0 +1,482 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Breadcrumb NavXT - Core
4
+ Plugin URI: http://mtekk.weblogs.us/code/breadcrumb-navxt/
5
+ Description: Adds a breadcrumb navigation showing the visitor&#39;s path to their current location. For details on how to use this plugin visit <a href="http://mtekk.weblogs.us/code/breadcrumb-navxt/">Breadcrumb NavXT</a>.
6
+ Version: 2.0.1
7
+ Author: John Havlik
8
+ Author URI: http://mtekk.weblogs.us/
9
+ */
10
+ /* Copyright 2007-2008 John Havlik (email : mtekkmonkey@gmail.com)
11
+
12
+ This program is free software; you can redistribute it and/or modify
13
+ it under the terms of the GNU General Public License as published by
14
+ the Free Software Foundation; either version 2 of the License, or
15
+ (at your option) any later version.
16
+
17
+ This program is distributed in the hope that it will be useful,
18
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
+ GNU General Public License for more details.
21
+
22
+ You should have received a copy of the GNU General Public License
23
+ along with this program; if not, write to the Free Software
24
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
+ */
26
+ $bcn_version = "2.0.1";
27
+ //The main class
28
+ class bcn_breadcrumb
29
+ {
30
+ var $opt;
31
+ //Class Constructor
32
+ function bcn_breadcrumb()
33
+ {
34
+ //Setting array
35
+ $this->opt = array(
36
+ 'static_frontpage' => 'false',
37
+ //*** only used if 'static_frontpage' => true
38
+ //Relative URL for your blog's address that is used for the Weblog link.
39
+ //Use it if your blog is available at http://www.site.com/myweblog/,
40
+ //and at http://www.site.com/ a Wordpress page is being displayed:
41
+ //In this case apply '/myweblog/'.
42
+ 'url_blog' => '',//
43
+ //Display HOME? If set to false, HOME is not being displayed.
44
+ 'home_display' => 'true',
45
+ //URL for the home link
46
+ 'url_home' => get_option('home'),
47
+ //Apply a link to HOME? If set to false, only plain text is being displayed.
48
+ 'home_link' => 'true',
49
+ //Text displayed for the home link, if you don't want to call it home then just change this.
50
+ //Also, it is being checked if the current page title = this variable. If yes, only the Home link is being displayed,
51
+ //but not a weird "Home / Home" breadcrumb.
52
+ 'title_home' => 'Home',
53
+ //Text displayed for the weblog. If "'static_frontpage' => false", you
54
+ //might want to change this value to "Home"
55
+ 'title_blog' => 'Blog',
56
+ //Separator that is placed between each item in the breadcrumb navigation, but not placed before
57
+ //the first and not after the last element. You also can use images here,
58
+ //e.g. '<img src="separator.gif" title="separator" width="10" height="8" />'
59
+ 'separator' => ' > ',
60
+ //Prefix for a search page
61
+ 'search_prefix' => 'Search results for &#39;',
62
+ //Suffix for a search page
63
+ 'search_suffix' => '&#39;',
64
+ //Prefix for a author page
65
+ 'author_prefix' => 'Posts by ',
66
+ //Suffix for a author page
67
+ 'author_suffix' => '',
68
+ //Prefix for an attachment post
69
+ 'attachment_prefix' => 'Attachment: ',
70
+ //Suffix for an attachment post
71
+ 'attachment_suffix' => '',
72
+ //Name format to display for author (e.g., nickname, first_name, last_name, display_name)
73
+ 'author_display' => 'display_name',
74
+ //Prefix for a single blog article.
75
+ 'singleblogpost_prefix' => 'Blog article: ',
76
+ //Suffix for a single blog article.
77
+ 'singleblogpost_suffix' => '',
78
+ //Prefix for a page.
79
+ 'page_prefix' => '',
80
+ //Suffix for a page.
81
+ 'page_suffix' => '',
82
+ //The prefix that is used for mouseover link (e.g.: "Browse to: Archive")
83
+ 'urltitle_prefix' => 'Browse to: ',
84
+ //The suffix that is used for mouseover link
85
+ 'urltitle_suffix' => '',
86
+ //Prefix for categories.
87
+ 'archive_category_prefix' => 'Archive by category &#39;',
88
+ //Suffix for categories.
89
+ 'archive_category_suffix' => '&#39;',
90
+ //Prefix for archive by year/month/day
91
+ 'archive_date_prefix' => 'Archive for ',
92
+ //Suffix for archive by year/month/day
93
+ 'archive_date_suffix' => '',
94
+ //Archive date format (e.g., ISO (yy/mm/dd), US (mm/dd/yy), EU (dd/mm/yy))
95
+ 'archive_date_format' => 'EU',
96
+ //Prefix for tags.
97
+ 'archive_tag_prefix' => 'Archive by tag &#39;',
98
+ //Suffix for tags.
99
+ 'archive_tag_suffix' => '&#39;',
100
+ //Text displayed for a 404 error page, , only being used if 'use404' => true
101
+ 'title_404' => '404',
102
+ //Display the paged information on pages that are paged
103
+ 'paged_display' => 'false',
104
+ //Prefix to be displayed before the page number
105
+ 'paged_prefix' => ', Page ',
106
+ //Suffix to be displayed after the page number
107
+ 'paged_suffix' => '',
108
+ //Display current item as link?
109
+ 'link_current_item' => 'false',
110
+ //URL title of current item, only being used if 'link_current_item' => true
111
+ 'current_item_urltitle' => 'Link of current page (click to refresh)', //
112
+ //Style or prefix being applied as prefix to current item. E.g. <span class="bc_current">
113
+ 'current_item_style_prefix' => '',
114
+ //Style or prefix being applied as suffix to current item. E.g. </span>
115
+ 'current_item_style_suffix' => '',
116
+ //Maximum number of characters of post title to be displayed? 0 means no limit.
117
+ 'posttitle_maxlen' => 0,
118
+ //Display category when displaying single blog post
119
+ 'singleblogpost_category_display' => 'true',
120
+ //Prefix for single blog post category, only being used if 'singleblogpost_category_display' => true
121
+ 'singleblogpost_category_prefix' => '',
122
+ //Suffix for single blog post category, only being used if 'singleblogpost_category_display' => true
123
+ 'singleblogpost_category_suffix' => '',
124
+ );
125
+ }
126
+ //Breadcrumb Creation Function
127
+ function display($bcn_return = false)
128
+ {
129
+ global $wpdb, $post, $wp_query, $bcn_version, $paged;
130
+ //Initilize running length variable
131
+ $length = 0;
132
+ //Initilize breadcrumb stream
133
+ $breadcrumb = array(
134
+ //Used for the blog title
135
+ 'title' => NULL,
136
+ //Used for the category/page hierarchy
137
+ 'middle' => NULL,
138
+ //Used for the current tiem
139
+ 'last' => array(
140
+ 'prefix' => NULL,
141
+ 'item' => NULL,
142
+ 'suffix' => NULL
143
+ )
144
+ );
145
+
146
+ //////////////
147
+ //Note: everything still needs to be changed for localization
148
+ //////////////
149
+
150
+
151
+ //Figure out the title link
152
+ //For home page
153
+ if(is_home())
154
+ {
155
+ //Static front page
156
+ if(($this->opt['static_frontpage'] === 'true' || get_option('page_on_front')) && $this->opt['home_display'] === 'true')
157
+ {
158
+ echo "moo";
159
+ //Should we display the home link or not
160
+ if($this->opt['home_link'])
161
+ {
162
+ //If so, let's set it up
163
+ $breadcrumb['title'] = '<a title="' . $this->opt['urltitle_prefix'] . $this->opt['title_blog'] . $this->opt['urltitle_suffix'] . '" href="' . $this->opt['url_home'] . '">' . $this->opt['title_home'] . '</a>';
164
+ }
165
+ else
166
+ {
167
+ //Otherwise just the specified 'title_home' will do
168
+ $breadcrumb['title'] = $this->opt['title_home'];
169
+ }
170
+ }
171
+ //If it's paged, we'll want to link it to the first page
172
+ else if(is_paged() && $this->opt['paged_display'] === 'true')
173
+ {
174
+ $breadcrumb['title'] = '<a title="' . $this->opt['urltitle_prefix'] . $this->opt['title_blog'] . $this->opt['urltitle_suffix'] . '" href="' . get_option('home') . '" >' . $this->opt['title_blog'] . '</a>';
175
+ }
176
+ //Non-static front page, if link current item is off
177
+ else if($this->opt['link_current_item'] === 'false')
178
+ {
179
+ $breadcrumb['title'] = $this->opt['title_blog'];
180
+ }
181
+ else
182
+ {
183
+ $breadcrumb['title'] = '<a title="' . $this->opt['current_item_urltitle'] . '" href="' . get_option('home') . '" >' . $this->opt['title_blog'] . '</a>';
184
+ }
185
+ }
186
+ //For everyone else
187
+ else
188
+ {
189
+ $breadcrumb['title'] = '<a title="' . $this->opt['urltitle_prefix'] . $this->opt['title_blog'] . $this->opt['urltitle_suffix'] . '" href="' . get_option('home') . '" >' . $this->opt['title_blog'] . '</a>';
190
+ }
191
+ ////////////////////////////////////
192
+ //Do specific opperations for the various page types
193
+ ////////////////////////////////////
194
+ //For searches
195
+ if(is_search())
196
+ {
197
+ Global $s;
198
+ //Get the search prefix
199
+ $breadcrumb['last']['prefix'] = $this->opt['search_prefix'];
200
+ //Get the searched text
201
+ $breadcrumb['last']['item'] = wp_specialchars($s, 1);
202
+ //Get the search suffix
203
+ $breadcrumb['last']['suffix'] = $this->opt['search_suffix'];
204
+ }
205
+ ////////////////////////////////////
206
+ //For post/page attachments
207
+ else if(is_attachment())
208
+ {
209
+ //Blog link and parent page
210
+ $bcn_parent_id = $post->post_parent;
211
+ //Get the parent title
212
+ $bcn_parent_title = get_post($bcn_parent_id);
213
+ //Setup the attachment's parent link
214
+ $bcn_parent = '<a title="' . $this->opt['urltitle_prefix'] .
215
+ $bcn_parent_title->post_title . $this->opt['urltitle_suffix'] . '" href="' . get_permalink($bcn_parent_id) . '">' . $bcn_parent_title->post_title . '</a>';
216
+ $breadcrumb['middle'] = $bcn_parent;
217
+ //Attachment prefix text
218
+ $breadcrumb['last']['prefix'] = $this->opt['attachment_prefix'];
219
+ //Get attachment name
220
+ $breadcrumb['last']['item'] = trim(wp_title('', false));
221
+ //Attachment suffix text
222
+ $breadcrumb['last']['suffix'] = $this->opt['attachment_suffix'];
223
+ }
224
+ ////////////////////////////////////
225
+ //For pages
226
+ else if(is_page())
227
+ {
228
+ //Get the post title, this is a more robust method than using $post
229
+ $bcn_page_title = trim(wp_title('', false));
230
+ $bcn_parent_id = $post->post_parent;
231
+ $bcn_middle = array();
232
+ if($bcn_parent_id != 0)
233
+ {
234
+ //Fill the initial page
235
+ //Use WordPress API, though a bit heavier than the old method, this will ensure compatibility with other plug-ins
236
+ $bcn_parent = get_post($bcn_parent_id);
237
+ $bcn_middle[] = '<a href="' . get_permalink($bcn_parent_id) . '" title="' . $this->opt['urltitle_prefix'] . $bcn_parent->post_title . $this->opt['urltitle_suffix'] . '">' . $bcn_parent->post_title . '</a>';
238
+ $bcn_parent_id = $bcn_parent->post_parent;
239
+ while(is_numeric($bcn_parent_id) && $bcn_parent_id != 0)
240
+ {
241
+ $bcn_parent = get_post($bcn_parent_id);
242
+ //Pushback a page into the array
243
+ $bcn_middle[] = '<a href="' . get_permalink($bcn_parent_id) . '" title="' . $this->opt['urltitle_prefix'] . $bcn_parent->post_title . $this->opt['urltitle_suffix'] . '">' . $bcn_parent->post_title . '</a>';
244
+ $bcn_parent_id = $bcn_parent->post_parent;
245
+ }
246
+ krsort($bcn_middle);
247
+ }
248
+ //Check to advoid Home > Home condition, has quick fallout for non-static conditions
249
+ if(get_option('page_on_front') == 0 || !$this->opt['static_frontpage'] || (strtolower($bcn_page_title) != strtolower($this->opt['title_home'])))
250
+ {
251
+ $breadcrumb['middle'] = $bcn_middle;
252
+ $breadcrumb['last']['prefix'] = $this->opt['page_prefix'];
253
+ $breadcrumb['last']['item'] = $bcn_page_title;
254
+ $breadcrumb['last']['suffix'] = $this->opt['page_suffix'];
255
+ }
256
+ }
257
+ ////////////////////////////////////
258
+ //For blog posts
259
+ else if(is_single())
260
+ {
261
+ //Get the post title, this is a more robust method than using $post
262
+ $bcn_post_title = trim(wp_title('', false));
263
+ //Add categories if told to
264
+ if($this->opt['singleblogpost_category_display'] === 'true') {
265
+ //Figure out the categories leading up to the post
266
+ $bcn_middle = array();
267
+ //Fills the object to get
268
+ $bcn_object = get_the_category();
269
+ //Now find which one has a parrent, pick the first one that does
270
+ $i = 0;
271
+ $bcn_use_category = 0;
272
+ foreach($bcn_object as $object)
273
+ {
274
+ if(is_numeric($object->category_parent) && $bcn_use_category == 0)
275
+ {
276
+ $bcn_use_category = $i;
277
+ }
278
+ $i++;
279
+ }
280
+ //Get parents of current category
281
+ $bcn_category = $bcn_object[$bcn_use_category];
282
+ //Fill the initial category
283
+ $bcn_middle[] = $this->opt['singleblogpost_category_prefix'] . '<a href="' . get_category_link($bcn_category->cat_ID) . '" title="' . $this->opt['urltitle_prefix'] . $bcn_category->cat_name . $this->opt['urltitle_suffix'] . '">' . $bcn_category->cat_name . '</a>'. $this->opt['singleblogpost_category_suffix'];
284
+ $bcn_parent_id = $bcn_category->category_parent;
285
+ while($bcn_parent_id)
286
+ {
287
+ $bcn_category = get_category($bcn_parent_id);
288
+ //Pushback a category into the array
289
+ $bcn_middle[] = $this->opt['singleblogpost_category_prefix'] . '<a href="' . get_category_link($bcn_category->cat_ID) . '" title="' . $this->opt['urltitle_prefix'] . $bcn_category->cat_name . $this->opt['urltitle_suffix'] . '">' . $bcn_category->cat_name . '</a>' . $this->opt['singleblogpost_category_suffix'];
290
+ $bcn_parent_id = $bcn_category->category_parent;
291
+ }
292
+ //We need to reverse the order (by key) to get the proper output
293
+ krsort($bcn_middle);
294
+ }
295
+ //Trim post title if needed
296
+ if($this->opt['posttitle_maxlen'] > 0 && (strlen($bcn_post_title) + 3) > $this->opt['posttitle_maxlen'])
297
+ {
298
+ $bcn_post_title = substr($bcn_post_title, 0, $this->opt['posttitle_maxlen']-1) . '&hellip;';
299
+ }
300
+ //Place it all in the array
301
+ $breadcrumb['middle'] = $bcn_middle;
302
+ $breadcrumb['last']['prefix'] = $this->opt['singleblogpost_prefix'];
303
+ $breadcrumb['last']['item'] = $bcn_post_title;
304
+ $breadcrumb['last']['suffix'] = $this->opt['singleblogpost_suffix'];
305
+ }
306
+ ////////////////////////////////////
307
+ //For author pages
308
+ else if(is_author())
309
+ {
310
+ //Author prefix text
311
+ $breadcrumb['last']['prefix'] = $this->opt['author_prefix'];
312
+ //Get the Author name, note it is an array
313
+ $bcn_curauth = (get_query_var('author_name')) ? get_userdatabylogin(get_query_var('author_name')) : get_userdata(get_query_var('author'));
314
+ //Get the Author display type
315
+ $bcn_authdisp = $this->opt['author_display'];
316
+ //Make sure user picks only safe values
317
+ if($bcn_authdisp == 'nickname' || $bcn_authdisp == 'nickname' || $bcn_authdisp == 'first_name' || $bcn_authdisp == 'last_name' || $bcn_authdisp == 'display_name')
318
+ {
319
+ $breadcrumb['last']['item'] = $bcn_curauth->$bcn_authdisp;
320
+ }
321
+ $breadcrumb['last']['suffix'] = $this->opt['author_suffix'];
322
+ }
323
+ ////////////////////////////////////
324
+ //For category based archives
325
+ else if(is_archive() && is_category())
326
+ {
327
+ //Simmilar to using $post, but for things $post doesn't cover
328
+ $bcn_object = $wp_query->get_queried_object();
329
+ //Get parents of current category
330
+ $bcn_parent_id = $bcn_object->category_parent;
331
+ $cat_breadcrumbs = '';
332
+ while($bcn_parent_id)
333
+ {
334
+ $bcn_category = get_category($bcn_parent_id);
335
+ $cat_breadcrumbs = '<a href="' . get_category_link($bcn_category->cat_ID) . '" title="' . $this->opt['urltitle_prefix'] . $bcn_category->cat_name . $this->opt['urltitle_suffix'] . '">' . $bcn_category->cat_name . '</a>' . $this->opt['separator'] . $cat_breadcrumbs;
336
+ $bcn_parent_id = $bcn_category->category_parent;
337
+ }
338
+ //New hiearchy dictates that cateories look like parent pages, and thus
339
+ $breadcrumb['last']['prefix'] = $cat_breadcrumbs;
340
+ $breadcrumb['last']['prefix'] .= $this->opt['archive_category_prefix'];
341
+ //Current Category, uses WP API to get the title of the page, hopefully itis more robust than the old method
342
+ $breadcrumb['last']['item'] = trim(wp_title('', false));
343
+ $breadcrumb['last']['suffix'] = $this->opt['archive_category_suffix'];
344
+ }
345
+ ////////////////////////////////////
346
+ //For date based archives
347
+ else if(is_archive() && is_date())
348
+ {
349
+ //If it's archives by day
350
+ if(is_day())
351
+ {
352
+ //If the date format is US style
353
+ if($this->opt['archive_date_format'] == 'US')
354
+ {
355
+ $breadcrumb['last']['prefix'] = $this->opt['archive_date_prefix'];
356
+ $breadcrumb['last']['item'] = '<a title="Browse to the ' .
357
+ get_the_time('F') . ' ' . get_the_time('Y') . ' archive" href="' .
358
+ get_year_link(get_the_time('Y')) . get_the_time('m') . '">' .
359
+ get_the_time('F') . '</a>' . ' ' . get_the_time('jS') . ', ' .
360
+ ' <a title="Browse to the ' . get_the_time('Y') . ' archive" href="' .
361
+ get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a>';
362
+ $breadcrumb['last']['suffix'] = $this->opt['archive_date_suffix'];
363
+ }
364
+ //If the date format is ISO style
365
+ else if($this->opt['archive_date_format'] == 'ISO')
366
+ {
367
+ $breadcrumb['last']['prefix'] = $this->opt['archive_date_prefix'];
368
+ $breadcrumb['last']['item'] = ' <a title="Browse to the ' .
369
+ get_the_time('Y') . ' archive" href="' . get_year_link(get_the_time('Y')) .
370
+ '">' . get_the_time('Y') . '</a> <a title="Browse to the ' .
371
+ get_the_time('F') . ' ' . get_the_time('Y') . ' archive" href="' .
372
+ get_year_link(get_the_time('Y')) . get_the_time('m') . '">' .
373
+ get_the_time('F') . '</a>' . ' ' . get_the_time('d');
374
+ $breadcrumb['last']['suffix'] = $this->opt['archive_date_suffix'];
375
+ }
376
+ //If the date format is European style
377
+ else
378
+ {
379
+ $breadcrumb['last']['prefix'] = $this->opt['archive_date_prefix'];
380
+ $breadcrumb['last']['item'] = get_the_time('d') . ' ' .
381
+ '<a title="Browse to the ' . get_the_time('F') . ' ' . get_the_time('Y') .
382
+ ' archive" href="' . get_year_link(get_the_time('Y')) . get_the_time('m') .
383
+ '">' . get_the_time('F') . '</a>' . ' <a title="Browse to the ' .
384
+ get_the_time('Y') . ' archive" href="' . get_year_link(get_the_time('Y')) .
385
+ '">' . get_the_time('Y') . '</a>';
386
+ $breadcrumb['last']['suffix'] = $this->opt['archive_date_suffix'];
387
+ }
388
+ }
389
+ //If it's archives by month
390
+ else if(is_month())
391
+ {
392
+ $breadcrumb['last']['prefix'] = $this->opt['archive_date_prefix'];
393
+ $breadcrumb['last']['item'] = get_the_time('F') . ' ' . '<a title="Browse to the ' .
394
+ get_the_time('Y') . ' archive" href="' . get_year_link(get_the_time('Y')) . '">' .
395
+ get_the_time('Y') . '</a>';
396
+ $breadcrumb['last']['suffix'] = $this->opt['archive_date_suffix'];
397
+ }
398
+ //If it's archives by year
399
+ else if(is_year())
400
+ {
401
+ $breadcrumb['last']['prefix'] = $this->opt['archive_date_prefix'];
402
+ $breadcrumb['last']['item'] = get_the_time('Y');
403
+ $breadcrumb['last']['suffix'] = $this->opt['archive_date_suffix'];
404
+ }
405
+ }
406
+ ////////////////////////////////////
407
+ //For tag based archives
408
+ else if(is_archive() && is_tag())
409
+ {
410
+ //Simmilar to using $post, but for things $post doesn't cover
411
+ //$bcn_object = $wp_query->get_query_name();
412
+ $breadcrumb['last']['prefix'] = $this->opt['archive_tag_prefix'];
413
+ //Use the WordPress API for the page title, should hook better than the other method
414
+ $breadcrumb['last']['item'] = trim(wp_title('', false));
415
+ $breadcrumb['last']['suffix'] = $this->opt['archive_tag_suffix'];
416
+ }
417
+ ////////////////////////////////////
418
+ //For 404 pages
419
+ else if(is_404())
420
+ {
421
+ $breadcrumb['last']['item'] = $this->opt['title_404'];
422
+ }
423
+ ////////////////////////////////////
424
+ //For paged items
425
+ if(is_paged() && $this->opt['paged_display'] === 'true')
426
+ {
427
+ //For home pages
428
+ if(is_home())
429
+ {
430
+ $breadcrumb['title'] .= $this->opt['paged_prefix'] . $paged . $this->opt['paged_suffix'];
431
+ }
432
+ //For archive/search pages
433
+ else
434
+ {
435
+ $breadcrumb['last']['suffix'] .= $this->opt['paged_prefix'] . $paged . $this->opt['paged_suffix'];
436
+ }
437
+ }
438
+ ////////////////////////////////////
439
+ //Assemble the breadcrumb
440
+ $bcn_output = '';
441
+ if($breadcrumb['title'])
442
+ {
443
+ $bcn_output .= $breadcrumb['title'];
444
+ if(is_array($breadcrumb['middle']))
445
+ {
446
+ foreach($breadcrumb['middle'] as $bcn_mitem)
447
+ {
448
+ $bcn_output .= $this->opt['separator'] . $bcn_mitem;
449
+ }
450
+ }
451
+ else if($breadcrumb['middle'])
452
+ {
453
+ $bcn_output .= $this->opt['separator'] . $breadcrumb['middle'];
454
+ }
455
+ if($breadcrumb['last']['item'] != NULL)
456
+ {
457
+ if($this->opt['link_current_item'] === 'true')
458
+ {
459
+ $breadcrumb['last']['item'] = '<a title="' . $this->opt['current_item_urltitle'] . '" href="' . $_SERVER['REQUEST_URI'] . '">' . $breadcrumb['last']['item'] . '</a>';
460
+ }
461
+ $bcn_output .= $this->opt['separator'] . $this->opt['current_item_style_prefix'] . $breadcrumb['last']['prefix'] . $breadcrumb['last']['item'] . $breadcrumb['last']['suffix'] . $this->opt['current_item_style_suffix'];
462
+ }
463
+ }
464
+ //Polyglot compatibility filter
465
+ if (function_exists('polyglot_filter'))
466
+ {
467
+ $bcn_output = polyglot_filter($bcn_output);
468
+ }
469
+ //Return it or echo it?
470
+ if($bcn_return)
471
+ {
472
+ return $bcn_output;
473
+ }
474
+ else
475
+ {
476
+ //Giving credit where credit is due, please don't remove it
477
+ $bcn_tag = "\n" . "<!-- Breadcrumb, generated by Breadcrumb NavXT " . $bcn_version . " - http://mtekk.weblogs.us/code -->" . "\n";
478
+ echo $bcn_tag . $bcn_output;
479
+ }
480
+ }
481
+ }
482
+ ?>
readme.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ === Breadcrumb NavXT ===
2
+ Contributors: John Havlik
3
+ Tags: breadcrumb, navigation
4
+ Requires at least: 2.3.0
5
+ Tested up to: 2.3.2
6
+ Stable tag: 2.0.1
7
+
8
+ Adds breadcrumb navigation showing the visitor's path to their current location.