PageSourceSearch

https://neslihankoyuncu.com/_js/cargo.tools.package.js?26.11.18.1

js neslihankoyuncu.com collected 2026-10-04 20:19:51 UTC 18,802 bytes, 673 lines download raw bytes

1/**
2*	This package includes
3*		shortcuts
4*		toolset
5*
6**/
7
8/**
9 * http://www.openjs.com/scripts/events/keyboard_shortcuts/
10 * Version : 2.01.B
11 * By Binny V A
12 * License : BSD
13 */
14shortcut = {
15	'all_shortcuts':{},//All the shortcuts are stored in this array
16	'add': function(shortcut_combination,callback,opt) {
17		//Provide a set of default options
18		var default_options = {
19			'type':'keydown',
20			'propagate':false,
21			'disable_in_input':false,
22			'target':document,
23			'keycode':false
24		}
25		if(!opt) opt = default_options;
26		else {
27			for(var dfo in default_options) {
28				if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
29			}
30		}
31
32		var ele = opt.target;
33		if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
34		var ths = this;
35		shortcut_combination = shortcut_combination.toLowerCase();
36
37		//The function to be called at keypress
38		var func = function(e) {
39			e = e || window.event;
40			
41			if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields
42				var element;
43				if(e.target) element=e.target;
44				else if(e.srcElement) element=e.srcElement;
45				if(element.nodeType==3) element=element.parentNode;
46
47				if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
48			}
49	
50			//Find Which key is pressed
51			if (e.keyCode) code = e.keyCode;
52			else if (e.which) code = e.which;
53			var character = String.fromCharCode(code);
54			
55			if(code == 188) character=","; //If the user presses , when the type is onkeydown
56			if(code == 190) character="."; //If the user presses , when the type is onkeydown
57
58			var keys = shortcut_combination.split("+");
59			//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
60			var kp = 0;
61			
62			//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
63			var shift_nums = {
64				"`":"~",
65				"1":"!",
66				"2":"@",
67				"3":"#",
68				"4":"$",
69				"5":"%",
70				"6":"^",
71				"7":"&",
72				"8":"*",
73				"9":"(",
74				"0":")",
75				"-":"_",
76				"=":"+",
77				";":":",
78				"'":"\"",
79				",":"<",
80				".":">",
81				"/":"?",
82				"\\":"|"
83			}
84			//Special Keys - and their codes
85			var special_keys = {
86				'esc':27,
87				'escape':27,
88				'tab':9,
89				'space':32,
90				'return':13,
91				'enter':13,
92				'backspace':8,
93	
94				'scrolllock':145,
95				'scroll_lock':145,
96				'scroll':145,
97				'capslock':20,
98				'caps_lock':20,
99				'caps':20,
100				'numlock':144,
101				'num_lock':144,
102				'num':144,
103				
104				'pause':19,
105				'break':19,
106				
107				'insert':45,
108				'home':36,
109				'delete':46,
110				'end':35,
111				
112				'pageup':33,
113				'page_up':33,
114				'pu':33,
115	
116				'pagedown':34,
117				'page_down':34,
118				'pd':34,
119	
120				'left':37,
121				'up':38,
122				'right':39,
123				'down':40,
124
125				'=':61,
126
127				'add':107,
128				'subtract':109,
129	
130				'f1':112,
131				'f2':113,
132				'f3':114,
133				'f4':115,
134				'f5':116,
135				'f6':117,
136				'f7':118,
137				'f8':119,
138				'f9':120,
139				'f10':121,
140				'f11':122,
141				'f12':123,
142
143				'dash':173,
144				'+':187,
145				'-':189
146			}
147	
148			var modifiers = { 
149				shift: { wanted:false, pressed:false},
150				ctrl : { wanted:false, pressed:false},
151				alt  : { wanted:false, pressed:false},
152				meta : { wanted:false, pressed:false}	//Meta is Mac specific
153			};
154                        
155			if(e.ctrlKey)	modifiers.ctrl.pressed = true;
156			if(e.shiftKey)	modifiers.shift.pressed = true;
157			if(e.altKey)	modifiers.alt.pressed = true;
158			if(e.metaKey)   modifiers.meta.pressed = true;
159                        
160			for(var i=0; k=keys[i],i<keys.length; i++) {
161				//Modifiers
162				if(k == 'ctrl' || k == 'control') {
163					kp++;
164					modifiers.ctrl.wanted = true;
165
166				} else if(k == 'shift') {
167					kp++;
168					modifiers.shift.wanted = true;
169
170				} else if(k == 'alt') {
171					kp++;
172					modifiers.alt.wanted = true;
173				} else if(k == 'meta') {
174					kp++;
175					modifiers.meta.wanted = true;
176				} else if(k.length > 1) { //If it is a special key
177					if(special_keys[k] == code) kp++;
178					
179				} else if(opt['keycode']) {
180					if(opt['keycode'] == code) kp++;
181
182				} else { //The special keys did not match
183					if(character == k) kp++;
184					else {
185						if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
186							character = shift_nums[character]; 
187							if(character == k) kp++;
188						}
189					}
190				}
191			}
192			
193			if(kp == keys.length && 
194						modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
195						modifiers.shift.pressed == modifiers.shift.wanted &&
196						modifiers.alt.pressed == modifiers.alt.wanted &&
197						modifiers.meta.pressed == modifiers.meta.wanted) {
198				callback(e);
199	
200				if(!opt['propagate']) { //Stop the event
201					//e.cancelBubble is supported by IE - this will kill the bubbling process.
202					e.cancelBubble = true;
203					e.returnValue = false;
204	
205					//e.stopPropagation works in Firefox.
206					if (e.stopPropagation) {
207						e.stopPropagation();
208						e.preventDefault();
209					}
210					return false;
211				}
212			}
213		}
214		this.all_shortcuts[shortcut_combination] = {
215			'callback':func, 
216			'target':ele, 
217			'event': opt['type']
218		};
219		//Attach the function with the event
220		if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
221		else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
222		else ele['on'+opt['type']] = func;
223	},
224
225	//Remove the shortcut - just specify the shortcut and I will remove the binding
226	'remove':function(shortcut_combination) {
227		shortcut_combination = shortcut_combination.toLowerCase();
228		var binding = this.all_shortcuts[shortcut_combination];
229		delete(this.all_shortcuts[shortcut_combination])
230		if(!binding) return;
231		var type = binding['event'];
232		var ele = binding['target'];
233		var callback = binding['callback'];
234
235		if(ele.detachEvent) ele.detachEvent('on'+type, callback);
236		else if(ele.removeEventListener) ele.removeEventListener(type, callback, false);
237		else ele['on'+type] = false;
238	}
239}
240
241
242
243
244
245/**
246 * This is the javascript for creating a cargo rte in the project editor.
247 * It may have originated from another plugin
248 * @author Cargo
249 */
250
251var feedButtons = new Array();
252var feedLinks = new Array();
253var feedOpenTags = new Array();
254var feedCanvases = new Array();
255var feedToolbars = new Array();
256
257
258function feedButton(id, display, tagStart, tagEnd, access, tit, img, open) {
259	this.id = id;							// used to name the toolbar button
260	this.display = display;					// label on button
261	this.tagStart = tagStart; 				// open tag
262	this.tagEnd = tagEnd;					// close tag
263	this.access = access;					// access key
264	this.tit = tit;							// title
265	this.img = img;							// image for button
266	this.open = open;						// set to -1 if tag does not need to be closed
267}
268
269
270feedButtons[feedButtons.length] = new feedButton(
271		'feed_strong'
272		,' B '
273		,'<b>','</b>'
274		,'s'
275		,'Bold'
276		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_bold.svg')
277	);
278
279feedButtons[feedButtons.length] = new feedButton(
280		'feed_em'
281		,' i '
282		,'<i>','</i>'
283		,'e'
284		,'Italic'
285		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_italic.svg')
286	);
287
288
289/*
290	feedButtons[feedButtons.length] = new feedButton(
291		'feed_quote'
292		,' quote '
293		,'<blockquote>','</blockquote>'
294		,'q'
295		,'Quote'
296		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_quote.svg')
297	);
298*/
299
300feedButtons[feedButtons.length] = new feedButton(
301		'feed_link'
302		,' link '
303		,'<a>','</a>'
304		,'a'
305		,'Insert link'
306		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_link.svg')
307	); // special case
308
309feedButtons[feedButtons.length] = new feedButton(
310		'feed_slide'
311		,' slideshow '
312		,'{slideshow}','{/slideshow}'
313		,'s'
314		,'Make a slideshow'
315		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_slideshow.svg')
316	); // special case
317
318	
319feedButtons[feedButtons.length] = new feedButton(
320		'feed_fullscreen'
321		,' fullscreen '
322		,'{fullscreen}',''
323		,'f'
324		,'Insert fullscreen viewer button'
325		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_fullscreen.svg')
326		,''
327	); // special case
328
329feedButtons[feedButtons.length] = new feedButton(
330		'feed_audio'
331		,' audio '
332		,'{audio}',''
333		,'d'
334		,'Insert audio'
335		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_audio.svg')
336		,''
337	); // special case
338
339
340feedButtons[feedButtons.length] = new feedButton(
341		'feed_video'
342		,' video '
343		,'{video}',''
344		,'v'
345		,'Get or upload a video'
346		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_video.svg')
347		,''
348	); // special case
349
350//function feedButton(id, display, tagStart, tagEnd, access, tit, img, open) {
351
352feedButtons[feedButtons.length] = new feedButton(
353		'files'
354		,' files '
355		,'',''
356		,'v'
357		,'Upload a file'
358		,Cargo.Location.GetPathAbs('/_gfx/svg/toolbar_files.svg')
359		,''
360	); // special case
361
362
363function feedLink() {
364	this.display = '';
365	this.URL = '';
366	this.newWin = 0;
367}
368
369function feedShowButton(key, button, i) {
370	var content;
371	if (button.id == 'feed_link') {
372		content = ('<a href="javascript:feedInsertLink(getCanvas(\''+key+'\'), ' + i + ');" onfocus="this.blur()" title="' + button.tit + '"/><img src="' + button.img + '" border="0"  /></a>');
373	} else if (button.id == 'feed_fullscreen') {
374		content = ('<a href="javascript:feedInsertContent(getCanvas(\''+key+'\'), \'' + feedButtons[i].tagStart + '\');" onfocus="this.blur()" title="' + button.tit + '"/><img src="' + button.img + '" border="0"  /></a>');
375	} else if (button.id == 'feed_slide') {
376		content = ('<a href="javascript:feedInsertTag(getCanvas(\''+key+'\'), ' + i + ');" onfocus="this.blur()" title="' + button.tit + '"/><img src="' + button.img + '" border="0"  /></a>');
377	} else if (button.id == 'feed_video') {
378		content = ('<a href="javascript:feedInsertVideo(getCanvas(\''+key+'\'), ' + i + ');" onfocus="this.blur()" title="' + button.tit + '"/><img src="' + button.img + '" border="0"  /></a>');				
379	} else if(button.id == 'feed_audio') {
380		content = ('<a href="javascript:feedInsertAudio(getCanvas(\''+key+'\'), ' + i + ');" onfocus="this.blur()" title="' + button.tit + '"/><img src="' + button.img + '" border="0"  /></a>');
381	} else if(button.id == 'files') {
382		content = ('<a href="javascript:toggleFiles();" onfocus="this.blur()" title="' + button.tit + '"/><img src="' + button.img + '" border="0"  /></a>');
383	} else {
384		content = ('<a href="javascript:feedInsertTag(getCanvas(\''+key+'\'), ' + i + ');" onfocus="this.blur()" title="' + button.tit + '"/><img src="' + button.img + '" border="0"  /></a>');
385	}
386	return content;
387}
388
389function toggleFiles() {
390	$('#post_files').toggle();
391	// return false;
392}
393
394function feedAddTag(button) {
395	if (feedButtons[button].tagEnd != '') {
396		feedOpenTags[feedOpenTags.length] = button;
397	}
398}
399
400function feedRemoveTag(button) {
401	for (i = 0; i < feedOpenTags.length; i++) {
402		if (feedOpenTags[i] == button) {
403			feedOpenTags.splice(i, 1);
404		}
405	}
406}
407
408function feedCheckOpenTags(button) {
409	var tag = 0;
410	for (i = 0; i < feedOpenTags.length; i++) {
411		if (feedOpenTags[i] == button) {
412			tag++;
413		}
414	}
415	if (tag > 0) {
416		return true; // tag found
417	}
418	else {
419		return false; // tag not found
420	}
421}
422
423function feedCloseAllTags() {
424	var count = feedOpenTags.length;
425	for (o = 0; o < count; o++) {
426		feedInsertTag(feedCanvas, feedOpenTags[feedOpenTags.length - 1]);
427	}
428}
429/**
430 * @depcrecated use constructor below
431 */
432function feedToolbar() {
433	//console.log("feedToolbar");
434	feedCanvases["default"] = document.getElementById('description');
435	for (var i = 0; i < feedButtons.length; i++) {
436		feedShowButton("default", feedButtons[i], i);
437	}
438}
439function feedToolbarUnique(key, canvas, toolbar) {
440	//console.log("feedToolbarUnique: " + key);
441	feedCanvases[key] = canvas;
442	feedToolbars[key] = toolbar;
443	var contentstr = "";
444	for (var i = 0; i < feedButtons.length; i++) {
445		contentstr += feedShowButton(key, feedButtons[i], i);
446	}
447	toolbar.innerHTML = contentstr;
448}
449
450// insertion code
451function feedInsertTag(myField, i)
452{
453	//IE support
454	if (document.selection)
455	{
456		myField.focus();
457			sel = document.selection.createRange();
458		if (sel.text.length > 0) {
459			sel.text = feedButtons[i].tagStart + sel.text + feedButtons[i].tagEnd;
460		}
461		else {
462			sel.text = feedButtons[i].tagStart + feedButtons[i].tagEnd;
463			feedAddTag(i);
464		}
465		myField.focus();
466	}
467	//MOZILLA/NETSCAPE support
468	else if (myField.selectionStart || myField.selectionStart == '0')
469	{
470		var startPos = myField.selectionStart;
471		var endPos = myField.selectionEnd;
472		var cursorPos = endPos;
473
474		var scrollTop, scrollLeft;
475		if( myField.type == 'textarea' && typeof myField.scrollTop != 'undefined' )
476		{ // remember old position
477			scrollTop = myField.scrollTop;
478			scrollLeft = myField.scrollLeft;
479		}
480
481		if (startPos != endPos)
482		{ // some text selected
483			myField.value = myField.value.substring(0, startPos)
484										+ feedButtons[i].tagStart
485										+ myField.value.substring(startPos, endPos)
486										+ feedButtons[i].tagEnd
487										+ myField.value.substring(endPos, myField.value.length);
488			cursorPos += feedButtons[i].tagStart.length + feedButtons[i].tagEnd.length;
489		}
490		else {
491			myField.value = myField.value.substring(0, startPos)
492										+ feedButtons[i].tagStart + feedButtons[i].tagEnd
493										+ myField.value.substring(endPos, myField.value.length);
494			feedRemoveTag(i);
495			cursorPos = startPos + feedButtons[i].tagStart.length;
496		}
497
498		if( typeof scrollTop != 'undefined' )
499		{ // scroll to old position
500			myField.scrollTop = scrollTop;
501			myField.scrollLeft = scrollLeft;
502		}
503
504		myField.focus();
505		myField.selectionStart = cursorPos;
506		myField.selectionEnd = cursorPos;
507	}
508	else
509	{ // Browser not especially supported
510		myField.value += feedButtons[i].tagStart + feedButtons[i].tagEnd;
511		feedRemoveTag(i);
512		myField.focus();
513	}
514	
515	CargoAdmin.LivePreview.Preview();
516}
517
518function feedInsertContent(myField, myValue) {
519	//IE support
520	if (document.selection) {
521		myField.focus();
522		sel = document.selection.createRange();
523		sel.text = myValue;
524		myField.focus();
525	}
526	//MOZILLA/NETSCAPE support
527	else if (myField.selectionStart || myField.selectionStart == '0') {
528		var startPos = myField.selectionStart;
529		var endPos = myField.selectionEnd;
530		myField.value = myField.value.substring(0, startPos)
531									+ myValue
532									+ myField.value.substring(endPos, myField.value.length);
533		myField.focus();
534		myField.selectionStart = startPos + myValue.length;
535		myField.selectionEnd = startPos + myValue.length;
536	} else {
537		myField.value += myValue;
538		myField.focus();
539	}
540	
541	CargoAdmin.LivePreview.Preview();
542}
543
544function feedInsertLink(myField, i, defaultValue) {
545	if (!defaultValue) {
546		defaultValue = 'http://';
547	}
548	if (!feedCheckOpenTags(i)) {
549		var URL = prompt('URL:' ,defaultValue);
550		if (URL) {
551			feedButtons[i].tagStart = '<a href="' + URL + '" target="_blank">';
552			feedInsertTag(myField, i);
553		}
554	}
555	else {
556		feedInsertTag(myField, i);
557	}
558	
559	CargoAdmin.LivePreview.Preview();
560}
561
562function feedInsertAudio(myField, i, defaultValue) {
563	if (!defaultValue) {
564		defaultValue = 'http://example.com/example.mp3';
565	}
566	if (!feedCheckOpenTags(i)) {
567		var URL = prompt('Enter URL to external MP3 file:' ,defaultValue);
568		if (URL) {
569			if(URL == defaultValue) URL = "";
570			feedButtons[i].tagStart = '{audio=' + URL + '}';
571			feedInsertTag(myField, i);
572		}
573	}
574	else {
575		feedInsertTag(myField, i);
576	}
577	
578	CargoAdmin.LivePreview.Preview();
579}
580
581function feedInsertVideo(myField, i, defaultValue) {
582	if (!defaultValue) {
583		defaultValue = 'http://example.com/example.mov';
584	}
585	if (!feedCheckOpenTags(i)) {
586		var URL = prompt('Enter URL to external Video file: (QT H.264 or FLV)' ,defaultValue);
587		if (URL) { 
588			if(isUrl(URL)) {
589				if(URL == defaultValue) URL = "";
590				feedButtons[i].tagStart = '{video=' + URL;
591				feedButtons[i].tagStart += ' width=640 height=360';
592				feedButtons[i].tagStart += ' poster=https://cargocollective.com/example/posterframe.jpg';
593				feedButtons[i].tagStart += '}';
594				feedInsertTag(myField, i);
595			
596			} else {
597				feedButtons[i].tagStart = URL;
598				feedInsertTag(myField, i);
599			}
600		}
601	}
602	else {
603		feedInsertTag(myField, i);
604	}
605	
606	CargoAdmin.LivePreview.Preview();
607}		
608
609function isUrl(s) {
610	if (/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/.test(s) && s.indexOf("http://") < 2) {
611		return true;
612	}
613
614	return false;
615}
616
617
618//////////////////////////////////////////////////////////////////////////
619//////////////////////////////////////////////////////////////////////////
620
621function addCategory(myField,cat) {
622	var lastChar = myField.value.charAt(myField.value.length-1);
623	var secLastChar = myField.value.charAt(myField.value.length-2);
624	//IE support
625	if (document.selection) {
626		myField.focus();
627		if(myField.value == 'Separate with commas') myField.value = cat;
628		else if(lastChar == ',') myField.value += ' ' + cat;
629		else if(secLastChar == ',') myField.value += cat;
630		else myField.value += ', ' + cat;
631	}
632	//MOZILLA/NETSCAPE support
633	else if (myField.selectionStart || myField.selectionStart == '0') {
634		var startPos = myField.selectionStart;
635		var endPos = myField.selectionEnd;
636		if(myField.value == 'Separate with commas') myField.value = cat;
637		else if(lastChar == ',') {
638			myField.value = myField.value.substring(0, startPos)
639									+ ' ' + cat
640									+ myField.value.substring(endPos, myField.value.length);
641		} else if(secLastChar == ',') {
642			myField.value = myField.value.substring(0, startPos)
643									+ ' ' + cat
644									+ myField.value.substring(endPos, myField.value.length);
645		} else {
646			myField.value = myField.value.substring(0, startPos)
647									+ ', ' + cat
648									+ myField.value.substring(endPos, myField.value.length);
649		}
650		myField.focus();
651		myField.selectionStart = startPos + myValue.length;
652		myField.selectionEnd = startPos + myValue.length;
653	} else {
654		if(myField.value == 'Separate with commas') myField.value = cat;
655		else if(lastChar == ',') myField.value += ' ' + cat;
656		else if(secLastChar == ',') myField.value += cat;
657		else myField.value += ', ' + cat;
658	}
659}
660
661
662//////////////////////////////////////////////////////////////////////////
663//////////////////////////////////////////////////////////////////////////
664/**
665 * This function is used to add support for multiple text areas on the page
666 */
667function getCanvas(key) {
668	var c = feedCanvases[key];
669	if(c === undefined) {
670		c = feedCanvases["default"] || undefined;
671	}
672	return c;
673}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.