Verzeichnisstruktur phpBB-3.0.0
- Veröffentlicht
- 12.12.2007
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
editor.js
001 /**
002 * bbCode control by subBlue design [ www.subBlue.com ]
003 * Includes unixsafe colour palette selector by SHS`
004 */
005
006 // Startup variables
007 var imageTag = false;
008 var theSelection = false;
009
010 // Check for Browser & Platform for PC & IE specific bits
011 // More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
012 var clientPC = navigator.userAgent.toLowerCase(); // Get client info
013 var clientVer = parseInt(navigator.appVersion); // Get browser version
014
015 var is_ie = ((clientPC.indexOf('msie') != -1) && (clientPC.indexOf('opera') == -1));
016 var is_win = ((clientPC.indexOf('win') != -1) || (clientPC.indexOf('16bit') != -1));
017
018 var baseHeight;
019 window.onload = initInsertions;
020
021 /**
022 * Shows the help messages in the helpline window
023 */
024 function helpline(help)
025 {
026 document.forms[form_name].helpbox.value = help_line[help];
027 }
028
029 /**
030 * Fix a bug involving the TextRange object. From
031 * http://www.frostjedi.com/terra/scripts/demo/caretBug.html
032 */
033 function initInsertions()
034 {
035 var doc;
036 if(document.forms[form_name])
037 {
038 doc = document;
039 }
040 else
041 {
042 doc = opener.document;
043 }
044
045 var textarea = doc.forms[form_name].elements[text_name];
046 if (is_ie && typeof(baseHeight) != 'number')
047 {
048 textarea.focus();
049 baseHeight = doc.selection.createRange().duplicate().boundingHeight;
050 // document.body.focus();
051 }
052 }
053
054 /**
055 * bbstyle
056 */
057 function bbstyle(bbnumber)
058 {
059 if (bbnumber != -1)
060 {
061 bbfontstyle(bbtags[bbnumber], bbtags[bbnumber+1]);
062 }
063 else
064 {
065 insert_text('[*]');
066 document.forms[form_name].elements[text_name].focus();
067 }
068 }
069
070 /**
071 * Apply bbcodes
072 */
073 function bbfontstyle(bbopen, bbclose)
074 {
075 theSelection = false;
076
077 var textarea = document.forms[form_name].elements[text_name];
078
079 textarea.focus();
080
081 if ((clientVer >= 4) && is_ie && is_win)
082 {
083 // Get text selection
084 theSelection = document.selection.createRange().text;
085
086 if (theSelection)
087 {
088 // Add tags around selection
089 document.selection.createRange().text = bbopen + theSelection + bbclose;
090 document.forms[form_name].elements[text_name].focus();
091 theSelection = '';
092 return;
093 }
094 }
095 else if (document.forms[form_name].elements[text_name].selectionEnd && (document.forms[form_name].elements[text_name].selectionEnd - document.forms[form_name].elements[text_name].selectionStart > 0))
096 {
097 mozWrap(document.forms[form_name].elements[text_name], bbopen, bbclose);
098 document.forms[form_name].elements[text_name].focus();
099 theSelection = '';
100 return;
101 }
102
103 //The new position for the cursor after adding the bbcode
104 var caret_pos = getCaretPosition(textarea).start;
105 var new_pos = caret_pos + bbopen.length;
106
107 // Open tag
108 insert_text(bbopen + bbclose);
109
110 // Center the cursor when we don't have a selection
111 // Gecko and proper browsers
112 if (!isNaN(textarea.selectionStart))
113 {
114 textarea.selectionStart = new_pos;
115 textarea.selectionEnd = new_pos;
116 }
117 // IE
118 else if (document.selection)
119 {
120 var range = textarea.createTextRange();
121 range.move("character", new_pos);
122 range.select();
123 storeCaret(textarea);
124 }
125
126 textarea.focus();
127 return;
128 }
129
130 /**
131 * Insert text at position
132 */
133 function insert_text(text, spaces, popup)
134 {
135 var textarea;
136
137 if (!popup)
138 {
139 textarea = document.forms[form_name].elements[text_name];
140 }
141 else
142 {
143 textarea = opener.document.forms[form_name].elements[text_name];
144 }
145
146 if (spaces)
147 {
148 text = ' ' + text + ' ';
149 }
150
151 if (!isNaN(textarea.selectionStart))
152 {
153 var sel_start = textarea.selectionStart;
154 var sel_end = textarea.selectionEnd;
155
156 mozWrap(textarea, text, '')
157 textarea.selectionStart = sel_start + text.length;
158 textarea.selectionEnd = sel_end + text.length;
159 }
160
161 else if (textarea.createTextRange && textarea.caretPos)
162 {
163 if (baseHeight != textarea.caretPos.boundingHeight)
164 {
165 textarea.focus();
166 storeCaret(textarea);
167 }
168 var caret_pos = textarea.caretPos;
169 caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
170
171 }
172 else
173 {
174 textarea.value = textarea.value + text;
175 }
176
177 if (!popup)
178 {
179 textarea.focus();
180 }
181
182 }
183
184 /**
185 * Add inline attachment at position
186 */
187 function attach_inline(index, filename)
188 {
189 insert_text('[attachment=' + index + ']' + filename + '[/attachment]');
190 document.forms[form_name].elements[text_name].focus();
191 }
192
193 /**
194 * Add quote text to message
195 */
196 function addquote(post_id, username)
197 {
198 var message_name = 'message_' + post_id;
199 var theSelection = '';
200 var divarea = false;
201
202 if (document.all)
203 {
204 divarea = document.all[message_name];
205 }
206 else
207 {
208 divarea = document.getElementById(message_name);
209 }
210
211 // Get text selection - not only the post content :(
212 if (window.getSelection)
213 {
214 theSelection = window.getSelection().toString();
215 }
216 else if (document.getSelection)
217 {
218 theSelection = document.getSelection();
219 }
220 else if (document.selection)
221 {
222 theSelection = document.selection.createRange().text;
223 }
224
225 if (theSelection == '' || typeof theSelection == 'undefined' || theSelection == null)
226 {
227 if (divarea.innerHTML)
228 {
229 theSelection = divarea.innerHTML.replace(/<br>/ig, '\n');
230 theSelection = theSelection.replace(/<br\/>/ig, '\n');
231 theSelection = theSelection.replace(/<\;/ig, '<');
232 theSelection = theSelection.replace(/>\;/ig, '>');
233 theSelection = theSelection.replace(/&\;/ig, '&');
234 }
235 else if (document.all)
236 {
237 theSelection = divarea.innerText;
238 }
239 else if (divarea.textContent)
240 {
241 theSelection = divarea.textContent;
242 }
243 else if (divarea.firstChild.nodeValue)
244 {
245 theSelection = divarea.firstChild.nodeValue;
246 }
247 }
248
249 if (theSelection)
250 {
251 insert_text('[quote="' + username + '"]' + theSelection + '[/quote]');
252 }
253
254 return;
255 }
256
257 /**
258 * From http://www.massless.org/mozedit/
259 */
260 function mozWrap(txtarea, open, close)
261 {
262 var selLength = txtarea.textLength;
263 var selStart = txtarea.selectionStart;
264 var selEnd = txtarea.selectionEnd;
265 var scrollTop = txtarea.scrollTop;
266
267 if (selEnd == 1 || selEnd == 2)
268 {
269 selEnd = selLength;
270 }
271
272 var s1 = (txtarea.value).substring(0,selStart);
273 var s2 = (txtarea.value).substring(selStart, selEnd)
274 var s3 = (txtarea.value).substring(selEnd, selLength);
275
276 txtarea.value = s1 + open + s2 + close + s3;
277 txtarea.selectionStart = selEnd + open.length + close.length;
278 txtarea.selectionEnd = txtarea.selectionStart;
279 txtarea.focus();
280 txtarea.scrollTop = scrollTop;
281
282 return;
283 }
284
285 /**
286 * Insert at Caret position. Code from
287 * http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
288 */
289 function storeCaret(textEl)
290 {
291 if (textEl.createTextRange)
292 {
293 textEl.caretPos = document.selection.createRange().duplicate();
294 }
295 }
296
297 /**
298 * Color pallette
299 */
300 function colorPalette(dir, width, height)
301 {
302 var r = 0, g = 0, b = 0;
303 var numberList = new Array(6);
304 var color = '';
305
306 numberList[0] = '00';
307 numberList[1] = '40';
308 numberList[2] = '80';
309 numberList[3] = 'BF';
310 numberList[4] = 'FF';
311
312 document.writeln('<table class="type2">');
313
314 for (r = 0; r < 5; r++)
315 {
316 if (dir == 'h')
317 {
318 document.writeln('<tr>');
319 }
320
321 for (g = 0; g < 5; g++)
322 {
323 if (dir == 'v')
324 {
325 document.writeln('<tr>');
326 }
327
328 for (b = 0; b < 5; b++)
329 {
330 color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
331 document.write('<td bgcolor="#' + color + '">');
332 document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;" onmouseover="helpline(\'s\');" onmouseout="helpline(\'tip\');"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" alt="#' + color + '" title="#' + color + '" /></a>');
333 document.writeln('</td>');
334 }
335
336 if (dir == 'v')
337 {
338 document.writeln('</tr>');
339 }
340 }
341
342 if (dir == 'h')
343 {
344 document.writeln('</tr>');
345 }
346 }
347 document.writeln('</table>');
348 }
349
350
351 /**
352 * Caret Position object
353 */
354 function caretPosition()
355 {
356 var start = null;
357 var end = null;
358 }
359
360
361 /**
362 * Get the caret position in an textarea
363 */
364 function getCaretPosition(txtarea)
365 {
366 var caretPos = new caretPosition();
367
368 // simple Gecko/Opera way
369 if (txtarea.selectionStart || txtarea.selectionStart == 0)
370 {
371 caretPos.start = txtarea.selectionStart;
372 caretPos.end = txtarea.selectionEnd;
373 }
374 // dirty and slow IE way
375 else if (document.selection)
376 {
377 // get current selection
378 var range = document.selection.createRange();
379
380 // a new selection of the whole textarea
381 var range_all = document.body.createTextRange();
382 range_all.moveToElementText(txtarea);
383
384 // calculate selection start point by moving beginning of range_all to beginning of range
385 var sel_start;
386 for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
387 {
388 range_all.moveStart('character', 1);
389 }
390
391 txtarea.sel_start = sel_start;
392
393 // we ignore the end value for IE, this is already dirty enough and we don't need it
394 caretPos.start = txtarea.sel_start;
395 caretPos.end = txtarea.sel_start;
396 }
397
398 return caretPos;
399 }