📁
SKYSHELL MANAGER
PHP v8.2.30
Create
Create
Path:
root
/
home
/
qooetu
/
costes.qooetu.com
/
Name
Size
Perm
Actions
📁
.well-known
-
0755
🗑️
🏷️
🔒
📁
2e19d9
-
0755
🗑️
🏷️
🔒
📁
6b114
-
0755
🗑️
🏷️
🔒
📁
Modules
-
0755
🗑️
🏷️
🔒
📁
app
-
0755
🗑️
🏷️
🔒
📁
assets
-
0755
🗑️
🏷️
🔒
📁
bootstrap
-
0755
🗑️
🏷️
🔒
📁
cgi-bin
-
0755
🗑️
🏷️
🔒
📁
config
-
0755
🗑️
🏷️
🔒
📁
css
-
0755
🗑️
🏷️
🔒
📁
database
-
0755
🗑️
🏷️
🔒
📁
images
-
0755
🗑️
🏷️
🔒
📁
js
-
0755
🗑️
🏷️
🔒
📁
nbproject
-
0755
🗑️
🏷️
🔒
📁
public
-
0755
🗑️
🏷️
🔒
📁
resources
-
0755
🗑️
🏷️
🔒
📁
routes
-
0755
🗑️
🏷️
🔒
📁
storage
-
0755
🗑️
🏷️
🔒
📁
tests
-
0755
🗑️
🏷️
🔒
📁
uploads
-
0755
🗑️
🏷️
🔒
📁
vendor
-
0755
🗑️
🏷️
🔒
📁
wp-admin
-
0755
🗑️
🏷️
🔒
📁
wp-content
-
0755
🗑️
🏷️
🔒
📁
wp-includes
-
0755
🗑️
🏷️
🔒
📄
.htaccess
0.23 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
COOKIE.txt
0.2 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
X7ROOT.txt
0.27 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
defaults.php
1.29 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
engine.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
error_log
813.08 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
features.php
11.28 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
googlecfb82e09419fc0f6.html
0.05 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
index.php0
1.56 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
inputs.php
0.12 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
kurd.html
1.07 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
library.php
0 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
min.php
6.83 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
p.php
2.75 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
php.ini
0.04 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
product.php
1.78 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
qpmwztts.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
robots.txt
0.32 KB
0444
🗑️
🏷️
⬇️
✏️
🔒
📄
tovmbkwh.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
tyyffovi.php
0.74 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
📄
veoxv.html
1.23 KB
0644
🗑️
🏷️
⬇️
✏️
🔒
Edit: edit_area_functions.js
//replace tabulation by the good number of white spaces EditArea.prototype.replace_tab= function(text){ return text.replace(/((\n?)([^\t\n]*)\t)/gi, editArea.smartTab); // slower than simple replace... }; // call by the replace_tab function EditArea.prototype.smartTab= function(){ val=" "; return EditArea.prototype.smartTab.arguments[2] + EditArea.prototype.smartTab.arguments[3] + val.substr(0, editArea.tab_nb_char - (EditArea.prototype.smartTab.arguments[3].length)%editArea.tab_nb_char); }; EditArea.prototype.show_waiting_screen= function(){ width = this.editor_area.offsetWidth; height = this.editor_area.offsetHeight; if( !(this.isIE && this.isIE<6) ) { width -= 2; height -= 2; } this.processing_screen.style.display= "block"; this.processing_screen.style.width = width+"px"; this.processing_screen.style.height = height+"px"; this.waiting_screen_displayed = true; }; EditArea.prototype.hide_waiting_screen= function(){ this.processing_screen.style.display="none"; this.waiting_screen_displayed= false; }; EditArea.prototype.add_style= function(styles){ if(styles.length>0){ newcss = document.createElement("style"); newcss.type="text/css"; newcss.media="all"; if(newcss.styleSheet){ // IE newcss.styleSheet.cssText = styles; } else { // W3C newcss.appendChild(document.createTextNode(styles)); } document.getElementsByTagName("head")[0].appendChild(newcss); } }; EditArea.prototype.set_font= function(family, size){ var t=this, a=this.textarea, s=this.settings, elem_font, i, elem; // list all elements concerned by font changes var elems= ["textarea", "content_highlight", "cursor_pos", "end_bracket", "selection_field", "selection_field_text", "line_number"]; if(family && family!="") s["font_family"]= family; if(size && size>0) s["font_size"] = size; if( t.isOpera && t.isOpera < 9.6 ) // opera<9.6 can't manage non monospace font s['font_family']="monospace"; // update the select tag if( elem_font = _$("area_font_size") ) { for( i = 0; i < elem_font.length; i++ ) { if( elem_font.options[i].value && elem_font.options[i].value == s["font_size"] ) elem_font.options[i].selected=true; } } /* * somethimes firefox has rendering mistake with non-monospace font for text width in textarea vs in div for changing font size (eg: verdana change between 11pt to 12pt) * => looks like a browser internal random bug as text width can change while content_highlight is updated * we'll check if the font-size produce the same text width inside textarea and div and if not, we'll increment the font-size * * This is an ugly fix */ if( t.isFirefox ) { var nbTry = 3; do { var div1 = document.createElement( 'div' ), text1 = document.createElement( 'textarea' ); var styles = { width: '40px', overflow: 'scroll', zIndex: 50, visibility: 'hidden', fontFamily: s["font_family"], fontSize: s["font_size"]+"pt", lineHeight: t.lineHeight+"px", padding: '0', margin: '0', border: 'none', whiteSpace: 'nowrap' }; var diff, changed = false; for( i in styles ) { div1.style[ i ] = styles[i]; text1.style[ i ] = styles[i]; } // no wrap for this text text1.wrap = 'off'; text1.setAttribute('wrap', 'off'); t.container.appendChild( div1 ); t.container.appendChild( text1 ); // try to make FF to bug div1.innerHTML = text1.value = 'azertyuiopqsdfghjklm'; div1.innerHTML = text1.value = text1.value+'wxcvbn^p*ù$!:;,,'; diff = text1.scrollWidth - div1.scrollWidth; // firefox return here a diff of 1 px between equals scrollWidth (can't explain) if( Math.abs( diff ) >= 2 ) { s["font_size"]++; changed = true; } t.container.removeChild( div1 ); t.container.removeChild( text1 ); nbTry--; }while( changed && nbTry > 0 ); } // calc line height elem = t.test_font_size; elem.style.fontFamily = ""+s["font_family"]; elem.style.fontSize = s["font_size"]+"pt"; elem.innerHTML = "0"; t.lineHeight = elem.offsetHeight; // update font for all concerned elements for( i=0; i<elems.length; i++) { elem = _$(elems[i]); elem.style.fontFamily = s["font_family"]; elem.style.fontSize = s["font_size"]+"pt"; elem.style.lineHeight = t.lineHeight+"px"; } // define a css for <pre> tags t.add_style("pre{font-family:"+s["font_family"]+"}"); // old opera and IE>=8 doesn't update font changes to the textarea if( ( t.isOpera && t.isOpera < 9.6 ) || t.isIE >= 8 ) { var parNod = a.parentNode, nxtSib = a.nextSibling, start= a.selectionStart, end= a.selectionEnd; parNod.removeChild(a); parNod.insertBefore(a, nxtSib); t.area_select(start, end-start); } // force update of selection field this.focus(); this.update_size(); this.check_line_selection(); }; EditArea.prototype.change_font_size= function(){ var size=_$("area_font_size").value; if(size>0) this.set_font("", size); }; EditArea.prototype.open_inline_popup= function(popup_id){ this.close_all_inline_popup(); var popup= _$(popup_id); var editor= _$("editor"); // search matching icon for(var i=0; i<this.inlinePopup.length; i++){ if(this.inlinePopup[i]["popup_id"]==popup_id){ var icon= _$(this.inlinePopup[i]["icon_id"]); if(icon){ this.switchClassSticky(icon, 'editAreaButtonSelected', true); break; } } } // check size popup.style.height="auto"; popup.style.overflow= "visible"; if(document.body.offsetHeight< popup.offsetHeight){ popup.style.height= (document.body.offsetHeight-10)+"px"; popup.style.overflow= "auto"; } if(!popup.positionned){ var new_left= editor.offsetWidth /2 - popup.offsetWidth /2; var new_top= editor.offsetHeight /2 - popup.offsetHeight /2; //var new_top= area.offsetHeight /2 - popup.offsetHeight /2; //var new_left= area.offsetWidth /2 - popup.offsetWidth /2; //alert("new_top: ("+new_top+") = calculeOffsetTop(area) ("+calculeOffsetTop(area)+") + area.offsetHeight /2("+ area.offsetHeight /2+") - popup.offsetHeight /2("+popup.offsetHeight /2+") - scrollTop: "+document.body.scrollTop); popup.style.left= new_left+"px"; popup.style.top= new_top+"px"; popup.positionned=true; } popup.style.visibility="visible"; //popup.style.display="block"; }; EditArea.prototype.close_inline_popup= function(popup_id){ var popup= _$(popup_id); // search matching icon for(var i=0; i<this.inlinePopup.length; i++){ if(this.inlinePopup[i]["popup_id"]==popup_id){ var icon= _$(this.inlinePopup[i]["icon_id"]); if(icon){ this.switchClassSticky(icon, 'editAreaButtonNormal', false); break; } } } popup.style.visibility="hidden"; }; EditArea.prototype.close_all_inline_popup= function(e){ for(var i=0; i<this.inlinePopup.length; i++){ this.close_inline_popup(this.inlinePopup[i]["popup_id"]); } this.textarea.focus(); }; EditArea.prototype.show_help= function(){ this.open_inline_popup("edit_area_help"); }; EditArea.prototype.new_document= function(){ this.textarea.value=""; this.area_select(0,0); }; EditArea.prototype.get_all_toolbar_height= function(){ var area= _$("editor"); var results= parent.getChildren(area, "div", "class", "area_toolbar", "all", "0"); // search only direct children //results= results.concat(getChildren(area, "table", "class", "area_toolbar", "all", "0")); var height=0; for(var i=0; i<results.length; i++){ height+= results[i].offsetHeight; } //alert("toolbar height: "+height); return height; }; EditArea.prototype.go_to_line= function(line){ if(!line) { var icon= _$("go_to_line"); if(icon != null){ this.restoreClass(icon); this.switchClassSticky(icon, 'editAreaButtonSelected', true); } line= prompt(this.get_translation("go_to_line_prompt")); if(icon != null) this.switchClassSticky(icon, 'editAreaButtonNormal', false); } if(line && line!=null && line.search(/^[0-9]+$/)!=-1){ var start=0; var lines= this.textarea.value.split("\n"); if(line > lines.length) start= this.textarea.value.length; else{ for(var i=0; i<Math.min(line-1, lines.length); i++) start+= lines[i].length + 1; } this.area_select(start, 0); } }; EditArea.prototype.change_smooth_selection_mode= function(setTo){ //alert("setTo: "+setTo); if(this.do_highlight) return; if(setTo != null){ if(setTo === false) this.smooth_selection=true; else this.smooth_selection=false; } var icon= _$("change_smooth_selection"); this.textarea.focus(); if(this.smooth_selection===true){ //setAttribute(icon, "class", getAttribute(icon, "class").replace(/ selected/g, "") ); /*setAttribute(icon, "oldClassName", "editAreaButtonNormal" ); setAttribute(icon, "className", "editAreaButtonNormal" );*/ //this.restoreClass(icon); //this.restoreAndSwitchClass(icon,'editAreaButtonNormal'); this.switchClassSticky(icon, 'editAreaButtonNormal', false); this.smooth_selection=false; this.selection_field.style.display= "none"; _$("cursor_pos").style.display= "none"; _$("end_bracket").style.display= "none"; }else{ //setAttribute(icon, "class", getAttribute(icon, "class") + " selected"); //this.switchClass(icon,'editAreaButtonSelected'); this.switchClassSticky(icon, 'editAreaButtonSelected', false); this.smooth_selection=true; this.selection_field.style.display= "block"; _$("cursor_pos").style.display= "block"; _$("end_bracket").style.display= "block"; } }; // the auto scroll of the textarea has some lacks when it have to show cursor in the visible area when the textarea size change // show specifiy whereas it is the "top" or "bottom" of the selection that is showned EditArea.prototype.scroll_to_view= function(show){ var zone, lineElem; if(!this.smooth_selection) return; zone= _$("result"); // manage height scroll var cursor_pos_top= _$("cursor_pos").cursor_top; if(show=="bottom") { //cursor_pos_top+= (this.last_selection["line_nb"]-1)* this.lineHeight; cursor_pos_top+= this.getLinePosTop( this.last_selection['line_start'] + this.last_selection['line_nb'] - 1 ); } var max_height_visible= zone.clientHeight + zone.scrollTop; var miss_top = cursor_pos_top + this.lineHeight - max_height_visible; if(miss_top>0){ //alert(miss_top); zone.scrollTop= zone.scrollTop + miss_top; }else if( zone.scrollTop > cursor_pos_top){ // when erase all the content -> does'nt scroll back to the top //alert("else: "+cursor_pos_top); zone.scrollTop= cursor_pos_top; } // manage left scroll //var cursor_pos_left= parseInt(_$("cursor_pos").style.left.replace("px","")); var cursor_pos_left= _$("cursor_pos").cursor_left; var max_width_visible= zone.clientWidth + zone.scrollLeft; var miss_left= cursor_pos_left + 10 - max_width_visible; if(miss_left>0){ zone.scrollLeft= zone.scrollLeft + miss_left + 50; }else if( zone.scrollLeft > cursor_pos_left){ zone.scrollLeft= cursor_pos_left ; }else if( zone.scrollLeft == 45){ // show the line numbers if textarea align to it's left zone.scrollLeft=0; } }; EditArea.prototype.check_undo= function(only_once){ if(!editAreas[this.id]) return false; if(this.textareaFocused && editAreas[this.id]["displayed"]==true){ var text=this.textarea.value; if(this.previous.length<=1) this.switchClassSticky(_$("undo"), 'editAreaButtonDisabled', true); if(!this.previous[this.previous.length-1] || this.previous[this.previous.length-1]["text"] != text){ this.previous.push({"text": text, "selStart": this.textarea.selectionStart, "selEnd": this.textarea.selectionEnd}); if(this.previous.length > this.settings["max_undo"]+1) this.previous.shift(); } if(this.previous.length >= 2) this.switchClassSticky(_$("undo"), 'editAreaButtonNormal', false); } if(!only_once) setTimeout("editArea.check_undo()", 3000); }; EditArea.prototype.undo= function(){ //alert("undo"+this.previous.length); if(this.previous.length > 0) { this.getIESelection(); // var pos_cursor=this.textarea.selectionStart; this.next.push( { "text": this.textarea.value, "selStart": this.textarea.selectionStart, "selEnd": this.textarea.selectionEnd } ); var prev= this.previous.pop(); if( prev["text"] == this.textarea.value && this.previous.length > 0 ) prev =this.previous.pop(); this.textarea.value = prev["text"]; this.last_undo = prev["text"]; this.area_select(prev["selStart"], prev["selEnd"]-prev["selStart"]); this.switchClassSticky(_$("redo"), 'editAreaButtonNormal', false); this.resync_highlight(true); //alert("undo"+this.previous.length); this.check_file_changes(); } }; EditArea.prototype.redo= function(){ if(this.next.length > 0) { /*this.getIESelection();*/ //var pos_cursor=this.textarea.selectionStart; var next= this.next.pop(); this.previous.push(next); this.textarea.value= next["text"]; this.last_undo= next["text"]; this.area_select(next["selStart"], next["selEnd"]-next["selStart"]); this.switchClassSticky(_$("undo"), 'editAreaButtonNormal', false); this.resync_highlight(true); this.check_file_changes(); } if( this.next.length == 0) this.switchClassSticky(_$("redo"), 'editAreaButtonDisabled', true); }; EditArea.prototype.check_redo= function(){ if(editArea.next.length == 0 || editArea.textarea.value!=editArea.last_undo){ editArea.next= []; // undo the ability to use "redo" button editArea.switchClassSticky(_$("redo"), 'editAreaButtonDisabled', true); } else { this.switchClassSticky(_$("redo"), 'editAreaButtonNormal', false); } }; // functions that manage icons roll over, disabled, etc... EditArea.prototype.switchClass = function(element, class_name, lock_state) { var lockChanged = false; if (typeof(lock_state) != "undefined" && element != null) { element.classLock = lock_state; lockChanged = true; } if (element != null && (lockChanged || !element.classLock)) { element.oldClassName = element.className; element.className = class_name; } }; EditArea.prototype.restoreAndSwitchClass = function(element, class_name) { if (element != null && !element.classLock) { this.restoreClass(element); this.switchClass(element, class_name); } }; EditArea.prototype.restoreClass = function(element) { if (element != null && element.oldClassName && !element.classLock) { element.className = element.oldClassName; element.oldClassName = null; } }; EditArea.prototype.setClassLock = function(element, lock_state) { if (element != null) element.classLock = lock_state; }; EditArea.prototype.switchClassSticky = function(element, class_name, lock_state) { var lockChanged = false; if (typeof(lock_state) != "undefined" && element != null) { element.classLock = lock_state; lockChanged = true; } if (element != null && (lockChanged || !element.classLock)) { element.className = class_name; element.oldClassName = class_name; } }; //make the "page up" and "page down" buttons works correctly EditArea.prototype.scroll_page= function(params){ var dir= params["dir"], shift_pressed= params["shift"]; var lines= this.textarea.value.split("\n"); var new_pos=0, length=0, char_left=0, line_nb=0, curLine=0; var toScrollAmount = _$("result").clientHeight -30; var nbLineToScroll = 0, diff= 0; if(dir=="up"){ nbLineToScroll = Math.ceil( toScrollAmount / this.lineHeight ); // fix number of line to scroll for( i = this.last_selection["line_start"]; i - diff > this.last_selection["line_start"] - nbLineToScroll ; i-- ) { if( elem = _$('line_'+ i) ) { diff += Math.floor( ( elem.offsetHeight - 1 ) / this.lineHeight ); } } nbLineToScroll -= diff; if(this.last_selection["selec_direction"]=="up"){ for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]-nbLineToScroll, lines.length); line_nb++){ new_pos+= lines[line_nb].length + 1; } char_left=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]-1); if(shift_pressed) length=this.last_selection["selectionEnd"]-new_pos-char_left; this.area_select(new_pos+char_left, length); view="top"; }else{ view="bottom"; for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+this.last_selection["line_nb"]-1-nbLineToScroll, lines.length); line_nb++){ new_pos+= lines[line_nb].length + 1; } char_left=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]-1); if(shift_pressed){ //length=this.last_selection["selectionEnd"]-new_pos-char_left; start= Math.min(this.last_selection["selectionStart"], new_pos+char_left); length= Math.max(new_pos+char_left, this.last_selection["selectionStart"] )- start ; if(new_pos+char_left < this.last_selection["selectionStart"]) view="top"; }else start=new_pos+char_left; this.area_select(start, length); } } else { var nbLineToScroll= Math.floor( toScrollAmount / this.lineHeight ); // fix number of line to scroll for( i = this.last_selection["line_start"]; i + diff < this.last_selection["line_start"] + nbLineToScroll ; i++ ) { if( elem = _$('line_'+ i) ) { diff += Math.floor( ( elem.offsetHeight - 1 ) / this.lineHeight ); } } nbLineToScroll -= diff; if(this.last_selection["selec_direction"]=="down"){ view="bottom"; for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+this.last_selection["line_nb"]-2+nbLineToScroll, lines.length); line_nb++){ if(line_nb==this.last_selection["line_start"]-1) char_left= this.last_selection["selectionStart"] -new_pos; new_pos+= lines[line_nb].length + 1; } if(shift_pressed){ length=Math.abs(this.last_selection["selectionStart"]-new_pos); length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"]); //length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, char_left); this.area_select(Math.min(this.last_selection["selectionStart"], new_pos), length); }else{ this.area_select(new_pos+char_left, 0); } }else{ view="top"; for(line_nb=0; line_nb< Math.min(this.last_selection["line_start"]+nbLineToScroll-1, lines.length, lines.length); line_nb++){ if(line_nb==this.last_selection["line_start"]-1) char_left= this.last_selection["selectionStart"] -new_pos; new_pos+= lines[line_nb].length + 1; } if(shift_pressed){ length=Math.abs(this.last_selection["selectionEnd"]-new_pos-char_left); length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, this.last_selection["curr_pos"])- char_left-1; //length+=Math.min(lines[Math.min(lines.length-1, line_nb)].length, char_left); this.area_select(Math.min(this.last_selection["selectionEnd"], new_pos+char_left), length); if(new_pos+char_left > this.last_selection["selectionEnd"]) view="bottom"; }else{ this.area_select(new_pos+char_left, 0); } } } //console.log( new_pos, char_left, length, nbLineToScroll, toScrollAmount, _$("result").clientHeigh ); this.check_line_selection(); this.scroll_to_view(view); }; EditArea.prototype.start_resize= function(e){ parent.editAreaLoader.resize["id"] = editArea.id; parent.editAreaLoader.resize["start_x"] = (e)? e.pageX : event.x + document.body.scrollLeft; parent.editAreaLoader.resize["start_y"] = (e)? e.pageY : event.y + document.body.scrollTop; if(editArea.isIE) { editArea.textarea.focus(); editArea.getIESelection(); } parent.editAreaLoader.resize["selectionStart"] = editArea.textarea.selectionStart; parent.editAreaLoader.resize["selectionEnd"] = editArea.textarea.selectionEnd; parent.editAreaLoader.start_resize_area(); }; EditArea.prototype.toggle_full_screen= function(to){ var t=this, p=parent, a=t.textarea, html, frame, selStart, selEnd, old, icon; if(typeof(to)=="undefined") to= !t.fullscreen['isFull']; old = t.fullscreen['isFull']; t.fullscreen['isFull']= to; icon = _$("fullscreen"); selStart = t.textarea.selectionStart; selEnd = t.textarea.selectionEnd; html = p.document.getElementsByTagName("html")[0]; frame = p.document.getElementById("frame_"+t.id); if(to && to!=old) { // toogle on fullscreen t.fullscreen['old_overflow'] = p.get_css_property(html, "overflow"); t.fullscreen['old_height'] = p.get_css_property(html, "height"); t.fullscreen['old_width'] = p.get_css_property(html, "width"); t.fullscreen['old_scrollTop'] = html.scrollTop; t.fullscreen['old_scrollLeft'] = html.scrollLeft; t.fullscreen['old_zIndex'] = p.get_css_property(frame, "z-index"); if(t.isOpera){ html.style.height = "100%"; html.style.width = "100%"; } html.style.overflow = "hidden"; html.scrollTop = 0; html.scrollLeft = 0; frame.style.position = "absolute"; frame.style.width = html.clientWidth+"px"; frame.style.height = html.clientHeight+"px"; frame.style.display = "block"; frame.style.zIndex = "999999"; frame.style.top = "0px"; frame.style.left = "0px"; // if the iframe was in a div with position absolute, the top and left are the one of the div, // so I fix it by seeing at witch position the iframe start and correcting it frame.style.top = "-"+p.calculeOffsetTop(frame)+"px"; frame.style.left = "-"+p.calculeOffsetLeft(frame)+"px"; // parent.editAreaLoader.execCommand(t.id, "update_size();"); // var body=parent.document.getElementsByTagName("body")[0]; // body.appendChild(frame); t.switchClassSticky(icon, 'editAreaButtonSelected', false); t.fullscreen['allow_resize']= t.resize_allowed; t.allow_resize(false); //t.area_select(selStart, selEnd-selStart); // opera can't manage to do a direct size update if(t.isFirefox){ p.editAreaLoader.execCommand(t.id, "update_size();"); t.area_select(selStart, selEnd-selStart); t.scroll_to_view(); t.focus(); }else{ setTimeout("parent.editAreaLoader.execCommand('"+ t.id +"', 'update_size();');editArea.focus();", 10); } } else if(to!=old) { // toogle off fullscreen frame.style.position="static"; frame.style.zIndex= t.fullscreen['old_zIndex']; if(t.isOpera) { html.style.height = "auto"; html.style.width = "auto"; html.style.overflow = "auto"; } else if(t.isIE && p!=top) { // IE doesn't manage html overflow in frames like in normal page... html.style.overflow = "auto"; } else { html.style.overflow = t.fullscreen['old_overflow']; } html.scrollTop = t.fullscreen['old_scrollTop']; html.scrollLeft = t.fullscreen['old_scrollLeft']; p.editAreaLoader.hide(t.id); p.editAreaLoader.show(t.id); t.switchClassSticky(icon, 'editAreaButtonNormal', false); if(t.fullscreen['allow_resize']) t.allow_resize(t.fullscreen['allow_resize']); if(t.isFirefox){ t.area_select(selStart, selEnd-selStart); setTimeout("editArea.scroll_to_view();", 10); } //p.editAreaLoader.remove_event(p.window, "resize", editArea.update_size); } }; EditArea.prototype.allow_resize= function(allow){ var resize= _$("resize_area"); if(allow){ resize.style.visibility="visible"; parent.editAreaLoader.add_event(resize, "mouseup", editArea.start_resize); }else{ resize.style.visibility="hidden"; parent.editAreaLoader.remove_event(resize, "mouseup", editArea.start_resize); } this.resize_allowed= allow; }; EditArea.prototype.change_syntax= function(new_syntax, is_waiting){ // alert("cahnge to "+new_syntax); // the syntax is the same if(new_syntax==this.settings['syntax']) return true; // check that the syntax is one allowed var founded= false; for(var i=0; i<this.syntax_list.length; i++) { if(this.syntax_list[i]==new_syntax) founded= true; } if(founded==true) { // the reg syntax file is not loaded if(!parent.editAreaLoader.load_syntax[new_syntax]) { // load the syntax file and wait for file loading if(!is_waiting) parent.editAreaLoader.load_script(parent.editAreaLoader.baseURL + "reg_syntax/" + new_syntax + ".js"); setTimeout("editArea.change_syntax('"+ new_syntax +"', true);", 100); this.show_waiting_screen(); } else { if(!this.allready_used_syntax[new_syntax]) { // the syntax has still not been used // rebuild syntax definition for new languages parent.editAreaLoader.init_syntax_regexp(); // add style to the new list this.add_style(parent.editAreaLoader.syntax[new_syntax]["styles"]); this.allready_used_syntax[new_syntax]=true; } // be sure that the select option is correctly updated var sel= _$("syntax_selection"); if(sel && sel.value!=new_syntax) { for(var i=0; i<sel.length; i++){ if(sel.options[i].value && sel.options[i].value == new_syntax) sel.options[i].selected=true; } } /* if(this.settings['syntax'].length==0) { this.switchClassSticky(_$("highlight"), 'editAreaButtonNormal', false); this.switchClassSticky(_$("reset_highlight"), 'editAreaButtonNormal', false); this.change_highlight(true); } */ this.settings['syntax']= new_syntax; this.resync_highlight(true); this.hide_waiting_screen(); return true; } } return false; }; // check if the file has changed EditArea.prototype.set_editable= function(is_editable){ if(is_editable) { document.body.className= ""; this.textarea.readOnly= false; this.is_editable= true; } else { document.body.className= "non_editable"; this.textarea.readOnly= true; this.is_editable= false; } if(editAreas[this.id]["displayed"]==true) this.update_size(); }; /***** Wrap mode *****/ // toggling function for set_wrap_mode EditArea.prototype.toggle_word_wrap= function(){ this.set_word_wrap( !this.settings['word_wrap'] ); }; // open a new tab for the given file EditArea.prototype.set_word_wrap= function(to){ var t=this, a= t.textarea; if( t.isOpera && t.isOpera < 9.8 ) { this.settings['word_wrap']= false; t.switchClassSticky( _$("word_wrap"), 'editAreaButtonDisabled', true ); return false; } if( to ) { wrap_mode = 'soft'; this.container.className+= ' word_wrap'; this.container.style.width=""; this.content_highlight.style.width=""; a.style.width="100%"; if( t.isIE && t.isIE < 7 ) // IE 6 count 50 px too much { a.style.width = ( a.offsetWidth-5 )+"px"; } t.switchClassSticky( _$("word_wrap"), 'editAreaButtonSelected', false ); } else { wrap_mode = 'off'; this.container.className = this.container.className.replace(/word_wrap/g, ''); t.switchClassSticky( _$("word_wrap"), 'editAreaButtonNormal', true ); } this.textarea.previous_scrollWidth = ''; this.textarea.previous_scrollHeight = ''; a.wrap= wrap_mode; a.setAttribute('wrap', wrap_mode); // only IE can change wrap mode on the fly without element reloading if(!this.isIE) { var start=a.selectionStart, end= a.selectionEnd; var parNod = a.parentNode, nxtSib = a.nextSibling; parNod.removeChild(a); parNod.insertBefore(a, nxtSib); this.area_select(start, end-start); } // reset some optimisation this.settings['word_wrap'] = to; this.focus(); this.update_size(); this.check_line_selection(); }; /***** tabbed files managing functions *****/ // open a new tab for the given file EditArea.prototype.open_file= function(settings){ if(settings['id']!="undefined") { var id= settings['id']; // create a new file object with defautl values var new_file= {}; new_file['id'] = id; new_file['title'] = id; new_file['text'] = ""; new_file['last_selection'] = ""; new_file['last_text_to_highlight'] = ""; new_file['last_hightlighted_text'] = ""; new_file['previous'] = []; new_file['next'] = []; new_file['last_undo'] = ""; new_file['smooth_selection'] = this.settings['smooth_selection']; new_file['do_highlight']= this.settings['start_highlight']; new_file['syntax'] = this.settings['syntax']; new_file['scroll_top'] = 0; new_file['scroll_left'] = 0; new_file['selection_start']= 0; new_file['selection_end']= 0; new_file['edited'] = false; new_file['font_size'] = this.settings["font_size"]; new_file['font_family'] = this.settings["font_family"]; new_file['word_wrap'] = this.settings["word_wrap"]; new_file['toolbar'] = {'links':{}, 'selects': {}}; new_file['compare_edited_text']= new_file['text']; this.files[id]= new_file; this.update_file(id, settings); this.files[id]['compare_edited_text']= this.files[id]['text']; var html_id= 'tab_file_'+encodeURIComponent(id); this.filesIdAssoc[html_id]= id; this.files[id]['html_id']= html_id; if(!_$(this.files[id]['html_id']) && id!="") { // be sure the tab browsing area is displayed this.tab_browsing_area.style.display= "block"; var elem= document.createElement('li'); elem.id= this.files[id]['html_id']; var close= "<img src=\""+ parent.editAreaLoader.baseURL +"images/close.gif\" title=\""+ this.get_translation('close_tab', 'word') +"\" onclick=\"editArea.execCommand('close_file', editArea.filesIdAssoc['"+ html_id +"']);return false;\" class=\"hidden\" onmouseover=\"this.className=''\" onmouseout=\"this.className='hidden'\" />"; elem.innerHTML= "<a onclick=\"javascript:editArea.execCommand('switch_to_file', editArea.filesIdAssoc['"+ html_id +"']);\" selec=\"none\"><b><span><strong class=\"edited\">*</strong>"+ this.files[id]['title'] + close +"</span></b></a>"; _$('tab_browsing_list').appendChild(elem); var elem= document.createElement('text'); this.update_size(); } // open file callback (for plugin) if(id!="") this.execCommand('file_open', this.files[id]); this.switch_to_file(id, true); return true; } else return false; }; // close the given file EditArea.prototype.close_file= function(id){ if(this.files[id]) { this.save_file(id); // close file callback if(this.execCommand('file_close', this.files[id])!==false) { // remove the tab in the toolbar var li= _$(this.files[id]['html_id']); li.parentNode.removeChild(li); // select a new file if(id== this.curr_file) { var next_file= ""; var is_next= false; for(var i in this.files) { if( is_next ) { next_file = i; break; } else if( i == id ) is_next = true; else next_file = i; } // display the next file this.switch_to_file(next_file); } // clear datas delete (this.files[id]); this.update_size(); } } }; // backup current file datas EditArea.prototype.save_file= function(id){ var t= this, save, a_links, a_selects, save_butt, img, i; if(t.files[id]) { var save= t.files[id]; save['last_selection'] = t.last_selection; save['last_text_to_highlight'] = t.last_text_to_highlight; save['last_hightlighted_text'] = t.last_hightlighted_text; save['previous'] = t.previous; save['next'] = t.next; save['last_undo'] = t.last_undo; save['smooth_selection'] = t.smooth_selection; save['do_highlight'] = t.do_highlight; save['syntax'] = t.settings['syntax']; save['text'] = t.textarea.value; save['scroll_top'] = t.result.scrollTop; save['scroll_left'] = t.result.scrollLeft; save['selection_start'] = t.last_selection["selectionStart"]; save['selection_end'] = t.last_selection["selectionEnd"]; save['font_size'] = t.settings["font_size"]; save['font_family'] = t.settings["font_family"]; save['word_wrap'] = t.settings["word_wrap"]; save['toolbar'] = {'links':{}, 'selects': {}}; // save toolbar buttons state for fileSpecific buttons a_links= _$("toolbar_1").getElementsByTagName("a"); for( i=0; i<a_links.length; i++ ) { if( a_links[i].getAttribute('fileSpecific') == 'yes' ) { save_butt = {}; img = a_links[i].getElementsByTagName('img')[0]; save_butt['classLock'] = img.classLock; save_butt['className'] = img.className; save_butt['oldClassName'] = img.oldClassName; save['toolbar']['links'][a_links[i].id]= save_butt; } } // save toolbar select state for fileSpecific buttons a_selects= _$("toolbar_1").getElementsByTagName("select"); for( i=0; i<a_selects.length; i++) { if(a_selects[i].getAttribute('fileSpecific')=='yes') { save['toolbar']['selects'][a_selects[i].id]= a_selects[i].value; } } t.files[id]= save; return save; } return false; }; // update file_datas EditArea.prototype.update_file= function(id, new_values){ for(var i in new_values) { this.files[id][i]= new_values[i]; } }; // display file datas EditArea.prototype.display_file= function(id){ var t = this, a= t.textarea, new_file, a_lis, a_selects, a_links, a_options, i, j; // we're showing the empty file if(id=='') { a.readOnly= true; t.tab_browsing_area.style.display= "none"; _$("no_file_selected").style.display= "block"; t.result.className= "empty"; // clear current datas if(!t.files['']) { t.open_file({id: ''}); } } // we try to show a non existent file, so we left else if( typeof( t.files[id] ) == 'undefined' ) { return false; } // display a normal file else { t.result.className= ""; a.readOnly= !t.is_editable; _$("no_file_selected").style.display= "none"; t.tab_browsing_area.style.display= "block"; } // ensure to have last state for undo/redo actions t.check_redo(true); t.check_undo(true); t.curr_file= id; // replace selected tab file a_lis= t.tab_browsing_area.getElementsByTagName('li'); for( i=0; i<a_lis.length; i++) { if(a_lis[i].id == t.files[id]['html_id']) a_lis[i].className='selected'; else a_lis[i].className=''; } // replace next files datas new_file= t.files[id]; // restore text content a.value= new_file['text']; // restore font-size t.set_font(new_file['font_family'], new_file['font_size']); // restore selection and scroll t.area_select(new_file['selection_start'], new_file['selection_end'] - new_file['selection_start']); t.manage_size(true); t.result.scrollTop= new_file['scroll_top']; t.result.scrollLeft= new_file['scroll_left']; // restore undo, redo t.previous= new_file['previous']; t.next= new_file['next']; t.last_undo= new_file['last_undo']; t.check_redo(true); t.check_undo(true); // restore highlight t.execCommand("change_highlight", new_file['do_highlight']); t.execCommand("change_syntax", new_file['syntax']); // smooth mode t.execCommand("change_smooth_selection_mode", new_file['smooth_selection']); // word_wrap t.execCommand("set_word_wrap", new_file['word_wrap']); // restore links state in toolbar a_links= new_file['toolbar']['links']; for( i in a_links) { if( img = _$(i).getElementsByTagName('img')[0] ) { img.classLock = a_links[i]['classLock']; img.className = a_links[i]['className']; img.oldClassName= a_links[i]['oldClassName']; } } // restore select state in toolbar a_selects = new_file['toolbar']['selects']; for( i in a_selects) { a_options = _$(i).options; for( j=0; j<a_options.length; j++) { if( a_options[j].value == a_selects[i] ) _$(i).options[j].selected=true; } } }; // change tab for displaying a new one EditArea.prototype.switch_to_file= function(file_to_show, force_refresh){ if(file_to_show!=this.curr_file || force_refresh) { this.save_file(this.curr_file); if(this.curr_file!='') this.execCommand('file_switch_off', this.files[this.curr_file]); this.display_file(file_to_show); if(file_to_show!='') this.execCommand('file_switch_on', this.files[file_to_show]); } }; // get all infos for the given file EditArea.prototype.get_file= function(id){ if(id==this.curr_file) this.save_file(id); return this.files[id]; }; // get all available files infos EditArea.prototype.get_all_files= function(){ tmp_files= this.files; this.save_file(this.curr_file); if(tmp_files['']) delete(this.files['']); return tmp_files; }; // check if the file has changed EditArea.prototype.check_file_changes= function(){ var id= this.curr_file; if(this.files[id] && this.files[id]['compare_edited_text']!=undefined) { if(this.files[id]['compare_edited_text'].length==this.textarea.value.length && this.files[id]['compare_edited_text']==this.textarea.value) { if(this.files[id]['edited']!= false) this.set_file_edited_mode(id, false); } else { if(this.files[id]['edited']!= true) this.set_file_edited_mode(id, true); } } }; // set if the file is edited or not EditArea.prototype.set_file_edited_mode= function(id, to){ // change CSS for edited tab if(this.files[id] && _$(this.files[id]['html_id'])) { var link= _$(this.files[id]['html_id']).getElementsByTagName('a')[0]; if(to==true) { link.className= 'edited'; } else { link.className= ''; if(id==this.curr_file) text= this.textarea.value; else text= this.files[id]['text']; this.files[id]['compare_edited_text']= text; } this.files[id]['edited']= to; } }; EditArea.prototype.set_show_line_colors = function(new_value){ this.show_line_colors = new_value; if( new_value ) this.selection_field.className += ' show_colors'; else this.selection_field.className = this.selection_field.className.replace( / show_colors/g, '' ); };
Save