PortaleOrdiniGruppo/PortalStudio/pageeditor/index.jsp
2025-03-24 15:28:26 +01:00

1020 lines
36 KiB
Plaintext

<%@page extends="com.zucchetti.PortalStudio.PortalStudioBaseEditors" %>
<%@ page import="com.zucchetti.PortalStudio.*" %>
<%@ page import="com.zucchetti.SPBridge.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.zucchetti.sitepainter.SPPrxycizer" %>
<%
Sitepainter sp=new Sitepainter(request);
String fileName = sp.getParameter("name","");
String fileType = sp.getParameter("type","jsp");
if( !("jsp".equals(fileType) || "css".equals(fileType)) ){
response.sendError(400, "Type parameter not supported");
return;
}
boolean rewriteId=false;
if(request.getQueryString()!=null && request.getQueryString().indexOf("type=")==-1 && request.getQueryString().indexOf("name=")==-1){
rewriteId=true;
}
%>
<!DOCTYPE html>
<html>
<head>
<title>Jsp Editor - Sitepainter Infinity Portalstudio</title>
<script type="text/javascript">
var c_ripristino = '<%=JSPLib.ToJSValue(sp.getParameter("ripr", ""))%>';
if(<%=rewriteId%>) {
window.location.href+='&type='+'<%=JSPLib.ToJSValue(sp.getParameter("type","jsp"))%>'+
'&action=<%=JSPLib.ToJSValue(sp.getParameter("action",""))%>'+
'&name=<%=JSPLib.ToJSValue(sp.getParameter("name",""))%>'+
'&ripr='+c_ripristino;
}
</script>
<script type="text/javascript" src="../stdFunctions.js"></script>
<script type="text/javascript" src="../controls.js"></script>
<script type="text/javascript" src="../mootools.js"></script>
<script type="text/javascript" src="../mootools_more.js"></script>
<link rel="stylesheet" href="editItemEvent.css">
<link rel="stylesheet" href="../codemirror/lib/codemirror.css">
<link rel="stylesheet" href="../codemirror/addon/fold/foldgutter.css">
<link rel="stylesheet" href="../codemirror/addon/dialog/dialog.css">
<link rel="stylesheet" href="../codemirror/addon/hint/show-hint.css">
<link rel="stylesheet" href="../codemirror/theme/ambiance.css">
<link rel="stylesheet" href="../codemirror/theme/blackboard.css">
<link rel="stylesheet" href="../codemirror/theme/neat.css">
<link rel="stylesheet" href="../codemirror/theme/elegant.css">
<link rel="stylesheet" href="../codemirror/theme/erlang-dark.css">
<link rel="stylesheet" href="../codemirror/theme/lesser-dark.css">
<link rel="stylesheet" href="../codemirror/theme/night.css">
<link rel="stylesheet" href="../codemirror/theme/monokai.css">
<link rel="stylesheet" href="../codemirror/theme/cobalt.css">
<link rel="stylesheet" href="../codemirror/theme/eclipse.css">
<link rel="stylesheet" href="../codemirror/theme/midnight.css">
<link rel="stylesheet" href="../codemirror/theme/solarized.css">
<link rel="stylesheet" href="../codemirror/theme/rubyblue.css">
<link rel="stylesheet" href="../codemirror/theme/twilight.css">
<link rel="stylesheet" href="../codemirror/theme/vibrant-ink.css">
<link rel="stylesheet" href="../codemirror/theme/xq-dark.css">
<link rel="stylesheet" href="../codemirror/theme/xq-light.css">
<link rel="stylesheet" type="text/css" href="../Notimoo.css" />
<script src="../Notimoo.js"></script>
<script type='text/javascript' src="../codemirror/lib/codemirror.js"></script>
<script src='../<%=SPPrxycizer.proxycizedPath("PortalCommonJS.js")%>'></script>
<script type='text/javascript' src="../codemirror/mode/javascript/javascript.js"></script>
<script type='text/javascript' src="../codemirror/mode/css/css.js"></script>
<script type='text/javascript' src="../codemirror/addon/edit/matchbrackets.js"></script>
<script type='text/javascript' src="../codemirror/addon/comment/comment.js"></script>
<script type='text/javascript' src="../codemirror/addon/comment/continuecomment.js"></script>
<script type='text/javascript' src="../codemirror/addon/dialog/dialog.js"></script>
<script type='text/javascript' src="../codemirror/addon/hint/show-hint.js"></script>
<!--script type='text/javascript' src="../codemirror/addon/hint/javascript-hint.js"></script-->
<script type='text/javascript' src="../codemirror/addon/search/searchcursor.js"></script>
<script type='text/javascript' src="../codemirror/addon/search/search.js"></script>
<script type='text/javascript' src="../codemirror/addon/selection/active-line.js"></script>
<script type='text/javascript' src="../codemirror/addon/selection/mark-selection.js"></script>
<script type='text/javascript' src="../codemirror/addon/search/match-highlighter.js"></script>
<script type='text/javascript' src="../codemirror/addon/fold/foldcode.js"></script>
<script type='text/javascript' src="../codemirror/addon/fold/foldgutter.js"></script>
<script type='text/javascript' src="../codemirror/addon/fold/brace-fold.js"></script>
<script type='text/javascript' src="../codemirror/addon/fold/xml-fold.js"></script>
<style type="text/css">
.breakpoints { width: 1em; }
li.CodeMirror-hint {
max-width: none;
}
</style>
</head>
<body>
<div id='topbar'>
<!--
<span class="title">Action Code</span>
<div class='right'>
<a id="toolbar_cancel" class="" href="javascript:void(0)" title='Cancel'>CANCEL</a>
</div>
<div class='right'>
<a id="toolbar_ok" class="" href="javascript:void(0)" title='Save and Close'>SAVE</a>
</div>
-->
<div class="action_bar">
<!--div id='topbar_right' class='topbar_sides right'></div-->
<!--div id='topbar_left' class='topbar_sides left'></div-->
<!--
<div class='left topbar_padding'>
<label class='small' for="id_item">Items: </label>
<div id="selectname" class="select" style="display:inline"></div>
</div>
<div class='topbar_separator left'></div>
<div class='left topbar_padding'>
<label class='small' for="event_item">Events: </label>
<div id="selectevent" class="select" style="display:inline"></div>
</div>
<div class='topbar_separator left'></div>
<div class='left topbar_padding'>
<label class='small' for="function_item">Functions: </label>
<div id="selectfunction" class="select" style="display:inline"></div>
</div>
-->
<div class='float_left topbar_padding' >
<a id="toolbar_search" class="toolbar_btn" href="javascript:void(0)" title='Search'></a>
</div>
<div class='float_right topbar_padding'>
<a id="toolbar_help" class="toolbar_btn" href="javascript:void(0)" title='Help'>
</a>
<div id='helpkeys_content' class='small'>
<table cellpadding="5" border="0"><tbody>
<tr><td>Search</td><td align="right" nowrap>Ctrl-F</td></tr>
<tr><td>Replace</td><td align="right" nowrap>Ctrl-R</td></tr>
<tr><td>Find Next</td><td align="right" nowrap>F3</td></tr>
<tr><td>Find Prev</td><td align="right" nowrap>Shift-F3</td></tr>
<tr><td>Toggle bookmark</td><td align="right" nowrap>Ctrl-F2</td></tr>
<tr><td>Next bookmark</td><td align="right" nowrap>F2</td></tr>
<tr><td>Prev bookmark</td><td align="right" nowrap>Shift-F2</td></tr>
<tr><td>Add/Remove Comment</td><td align="right" nowrap>Ctrl-Q</td></tr>
<tr><td>Save All</td><td align="right" nowrap>Ctrl-S</td></tr>
</tbody></table>
</div>
</div>
</div>
</div>
<div id='editor'>
<div id="loader"></div>
</div>
<div id="opt_pane_top">
<div id="opt_pane_top_wrapper">
<div id='opt_pane_topbar_left' title='Show/Hide style pane' class='left'>
<div class="toggler"></div><div class="toggler_icon"></div>
</div>
<div id="opt_pane_topbar" class='left'>
<p class='label'>Styles</p>
</div>
</div>
</div>
<div id="opt_pane">
<div id="opt_pane_wrapper">
<div id="opt_pane_content">
<div id="opt_pane_toggler"></div>
<div>
<a class='opt_pane_mode' id="change_style_ambiance" href="javascript:void(0)">Ambiance</a>
<a class='opt_pane_mode' id="change_style_blackboard" href="javascript:void(0)">Blackboard</a>
<a class='opt_pane_mode' id="change_style_cobalt" href="javascript:void(0)">Cobalt</a>
<a class='opt_pane_mode' id="change_style_eclipse" href="javascript:void(0)">Eclipse</a>
<a class='opt_pane_mode' id="change_style_elegant" href="javascript:void(0)">Elegant</a>
<a class='opt_pane_mode' id="change_style_erlang-dark" href="javascript:void(0)">Erlang-dark</a>
<a class='opt_pane_mode' id="change_style_lesser-dark" href="javascript:void(0)">Lesser-dark</a>
<a class='opt_pane_mode' id="change_style_default" href="javascript:void(0)">Light</a>
<a class='opt_pane_mode' id="change_style_midnight" href="javascript:void(0)">Midnight</a>
<a class='opt_pane_mode' id="change_style_monokai" href="javascript:void(0)">Monokai</a>
<a class='opt_pane_mode' id="change_style_neat" href="javascript:void(0)">Neat</a>
<a class='opt_pane_mode' id="change_style_night" href="javascript:void(0)">Night</a>
<a class='opt_pane_mode' id="change_style_rubyblue" href="javascript:void(0)">Rubyblue</a>
<a class='opt_pane_mode' id="change_style_solarized" href="javascript:void(0)">Solarized</a>
<a class='opt_pane_mode' id="change_style_twilight" href="javascript:void(0)">Twilight</a>
<a class='opt_pane_mode' id="change_style_vibrant-ink" href="javascript:void(0)">Vibrant-ink</a>
<a class='opt_pane_mode' id="change_style_xq-dark" href="javascript:void(0)">Xq-dark</a>
<a class='opt_pane_mode' id="change_style_xq-light" href="javascript:void(0)">Xq-light</a>
</div>
<p id="slider">Font size - px </p>
<div style="padding:5px;">
<div id="fontSlider" class="slider">
<div class="knob">
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
<script type="text/javascript">
var cmdhash = '<%=getCmdHash( fileType, request)%>'
, fileName
, fileType='<%=JSPLib.ToJSValue(fileType)%>'
//, index
, code
, codeEditor
//, form
, funct_evt
, RetVal
, z_ac_style = localStorage.getItem('zucchetti_ac_style')
, ac_style = !Empty(z_ac_style) ? JSON.parse(z_ac_style) : { fontSize: "", theme: "" }
, changed=false
, codeMirrorOpt={}
, opt_paneOpened = false
, opt_paneToggle
, opt_paneTopToggle
, resizeTimer;
var statuss = { folded : {}, breakpoints : {}};
/****** Gestione del LocalStorage *******/
localStorage.setItem('zucchetti_ac_style',JSON.encode(ac_style));
/*******codemirror options*******/
function thisHints(onlyItems) {
var toAdd = "";
if (onlyItems) toAdd = "_";
var ptlItems=[]
for (var i=0;i<itemsHTML.length;i++) {
if (itemsHTML[i].type!='Portlet')
ptlItems.push({text:itemsHTML[i].name+toAdd,displayText:itemsHTML[i].name});
}
ptlItems.sort(function(a, b) {
return a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1;
});
if (!onlyItems) {
ptlItems = ptlItems.concat(itemHints('this'));
}
return ptlItems;
}
var items=null;
function itemNames() {
if (items==null) {
items = [];
for (var i=0;i<itemsHTML.length;i++) {
if (itemsHTML[i].type!='Portlet')
items.push(itemsHTML[i].name);
}
}
return items;
}
function itemHints(itemName) {
/*
var objFound = null, list = [];
if (itemName=='this') {
objFound = form;
} else {
for (var i=0;i<itemsHTML.length;i++) {
if (itemsHTML[i].name==itemName)
objFound = itemsHTML[i];
}
}
if (objFound) {
objFound=objFound.objClass.functions;
if(objFound){
var descr,value,long_descr;
for(var i=0;i<objFound.length;i++){
if(IsA(objFound[i],'C')) value=descr=objFound[i]
else{
descr=objFound[i][0];
value=objFound[i][1];
if(!Empty(objFound[i][2])) long_descr=objFound[i][2];
}
var txt = value; //Substr(value,1,At("(",value));
list.push({text:txt,displayText:descr});
}
}
}
list.sort(function(a, b) {
return a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1;
});
return list;
*/
}
function itemEvents(itemName) {
/*
var objFound = null, list = [];
if (itemName=='this') {
objFound = form;
} else {
for (var i=0;i<itemsHTML.length;i++) {
if (itemsHTML[i].name==itemName)
objFound = itemsHTML[i];
}
}
if (objFound) {
objFound=objFound.objClass.events;
if(objFound){
var value,descr;
for(i=0;i<objFound.length;i++){
if(IsA(objFound[i],'C')){
value=descr=objFound[i];
}else{
descr=objFound[i][0];
value=objFound[i][1];
}
var toAdd='';
if(value.indexOf('(')==-1)
toAdd+='()';
if(value.indexOf('{')==-1)
toAdd+='{';
toAdd+='\n ';
list.push({text:value+toAdd,displayText:descr});
}
}
}
list.sort(function(a, b) {
return a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1;
});
return list;
*/
}
var originalList = null;
var initiator = null;
function helper(editor, options) {
/*se l'helper ritorna un array con un elemento non lo seleziona in automatico ma lascia la possibilita' all'utente di scegliere se selezionare il valore*/
options.completeSingle=false;
var cur = editor.getCursor(), curLine = editor.getLine(cur.line), prevCur = { line : cur.line, ch : cur.ch-1};
var start = cur.ch, end = start;
var currentToken = editor.getTokenAt(cur);
var prevToken = editor.getTokenAt(prevCur);
var list = [];
if (originalList!=null) {
start = currentToken.start;
var offset, token;
if (initiator=='_') {
offset = currentToken.string.lastIndexOf('_')+1;
token = currentToken.string.substr(offset);
start += offset;
} else {
offset = 0;
token = currentToken.string;
}
list = originalList.filter(function(el){ return el.displayText.lastIndexOf(token,0)==0 } );
} else if (currentToken.string=='.') {
if (prevToken.string=='this') { //variables
list = thisHints();
} else if (prevToken.type=='property' && itemNames().indexOf(prevToken.string)>-1 ) {
list = itemHints(prevToken.string);
}
originalList = list;
initiator = '.';
} else if (Right(currentToken.string,1)=='_') {
var item = Substr(prevToken.string,1,Len(prevToken.string)-1);
prevToken = editor.getTokenAt(CodeMirror.Pos(cur.line, prevToken.start));
if (prevToken.string==' ') {
prevToken = editor.getTokenAt(CodeMirror.Pos(cur.line, prevToken.start));
if (prevToken.string=='function') {
if (itemNames().indexOf(item) > -1 || item=='this') {
list = itemEvents(item);
}
}
}
originalList = list;
initiator = '_';
} else if (currentToken.string==' ') {
if (prevToken.string=='function') { //propongo tutti gli item
list = thisHints('_');
list.unshift({text:'this_',displayText:'this'});
}
originalList = list;
initiator = ' ';
}
return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};
}
if( fileType == "css" )
codeMirrorOpt.mode="text/css";
else {
codeMirrorOpt.mode="javascript";
CodeMirror.extendMode("javascript", {lineComment: "//"});
}
//CodeMirror.registerHelper("hint", "javascript", helper);
codeMirrorOpt.extraKeys= {"Ctrl-R": "replace", "F3": "findNext", "Shift-F3": "findPrev", "Ctrl-Q": "toggleComment","Ctrl-S":function(){
let cOj;
fileType == "css" ? cOj ="css" : cOj = "jsp";
if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){
if(fileName){
window.save();
} else {
if(cOj == "jsp"){
OpenWindow("../portalstudio/saveas.jsp?tool=manualjsp",600, 600, 0, 0);
} else {
OpenWindow("../portalstudio/saveas.jsp?tool=css",600, 600, 0, 0);
}
}
} else {
(parent.parent.saveTool?parent.parent.saveTool():(parent.save?parent.save():void(0)));parent.managed=true
}
},
"F2" : function(cm) {
var pos = cm.getCursor(),
found = -1,
i;
for (i = pos.line+1; found == -1 && i < cm.lineCount(); i++) { //righe successive
var info = cm.lineInfo(i);
if (info.gutterMarkers && info.gutterMarkers.breakpoints ) {
found = i;
}
}
for (i = 0; found == -1 && i < pos.line; i++) { //righe precedenti
var info = cm.lineInfo(i);
if (info.gutterMarkers && info.gutterMarkers.breakpoints ) {
found = i;
}
}
if (found>-1) {
cm.setCursor({ line: found, ch: 0} );
}
},
"Shift-F2" : function(cm) {
var pos = cm.getCursor(),
found = -1,
i;
for (i = pos.line-1; found == -1 && i >= 0; i--) { //righe precedenti inverse
var info = cm.lineInfo(i);
if (info.gutterMarkers && info.gutterMarkers.breakpoints ) {
found = i;
}
}
for (i = cm.lineCount()-1; found == -1 && i > pos.line; i--) { //righe successive inverse
var info = cm.lineInfo(i);
if (info.gutterMarkers && info.gutterMarkers.breakpoints ) {
found = i;
}
}
if (found>-1) {
cm.setCursor({ line: found, ch: 0} );
}
},
"Ctrl-F2" : function(cm) {
var pos = cm.getCursor(),
info = cm.lineInfo(pos.line),
hadBP = info.gutterMarkers && info.gutterMarkers.breakpoints;
if (hadBP) {
delete statuss.breakpoints[pos.line];
} else {
statuss.breakpoints[pos.line]=true;
}
cm.setGutterMarker(pos.line, "breakpoints", hadBP ? null : makeMarker());
}
}
function makeMarker() {
var marker = document.createElement("img");
marker.src = "../portalstudio/images/icon/bookmark.png";
return marker;
}
codeMirrorOpt.tabMode= "shift";
codeMirrorOpt.theme= ac_style && ac_style.theme ? ac_style.theme : 'default' ;
codeMirrorOpt.tabSize = 2;
codeMirrorOpt.indentUnit =2;
codeMirrorOpt.statementIndent =2;
codeMirrorOpt.lineNumbers =true;
codeMirrorOpt.styleActiveLine= true;
codeMirrorOpt.highlightSelectionMatches= true;
codeMirrorOpt.enterMode ='keep';
codeMirrorOpt.matchBrackets=true;
codeMirrorOpt.gutters= ["CodeMirror-linenumbers", "breakpoints", "CodeMirror-foldgutter"];
codeMirrorOpt.onChange=function(){changed=true};
codeMirrorOpt.foldGutter=true;
function createCodeArea(){
if(opt_paneOpened)
toggleOptPane();
var h = $('editor').offsetHeight-50;
codeEditor = CodeMirror($('editor'),codeMirrorOpt);
codeEditor.on("fold", function(cm, from, to) {
statuss.folded[from.line]=true;
});
codeEditor.on("unfold", function(cm, from, to) {
delete statuss.folded[from.line];
});
codeEditor.on("change", function(cm,changeObj) {
if (originalList!=null) return; //se autocompletamento gia' in funzione non faccio nulla
var txt;
if (changeObj.origin=='+delete') {
var tk = cm.getTokenAt(changeObj.from);
txt = Right(tk.string,1)
} else {
txt = changeObj.text[0];
}
if ([".","_"," "].indexOf(Right(txt,1))>-1) {
cm.execCommand('autocomplete');
}
});
codeEditor.on("endCompletion",function(cm) {
originalList = null;
});
//codeEditor.getScrollerElement().style.height =h +'px';
LibJavascript.CssClassNameUtils.addClass(codeEditor,'eventcode')
codeEditor.getWrapperElement().id='eventcode';
codeEditor.getWrapperElement().style.height='100%';
$(codeEditor.getWrapperElement()).setStyle('font-size',ac_style.fontSize)
codeEditor.getWrapperElement().value = codeEditor.getValue();
/* Breakpoints */
codeEditor.on("gutterClick", function(cm, n, type) {
if ( type == "breakpoints" ) {
var info = cm.lineInfo(n);
var hadBP = info.gutterMarkers && info.gutterMarkers.breakpoints;
if (hadBP) {
delete statuss.breakpoints[n];
} else {
statuss.breakpoints[n]=true;
}
cm.setGutterMarker(n, "breakpoints", hadBP ? null : makeMarker());
} else if ( type == "CodeMirror-linenumbers" ) {
var info = cm.lineInfo(n);
cm.setSelection( { line: n, ch : 0 }, {line: n , ch : info.text.length } );
}
});
for (var i in statuss.breakpoints) {
codeEditor.setGutterMarker(parseInt(i), "breakpoints", makeMarker());
}
for (var i in statuss.folded) {
codeEditor.foldCode(CodeMirror.Pos(parseInt(i), 0));
}
codeEditor.refresh();
}
function buildSlider(){
// Create the new slider instance
var el = $('fontSlider');
var font = $('eventcode');
var knob = el.getElement('.knob');
var val = new Element('p', {'class': 'value'}).inject(knob);
var slider = new Slider(el, knob, {
steps: 35, // There are 35 steps
range: [12], // Minimum value is 8
initialStep :ac_style.fontSize ? ac_style.fontSize : 13,
onChange: function(value){
// Everytime the value changes, we change the font of an element
ac_style.fontSize = value;
localStorage.setItem('zucchetti_ac_style', JSON.encode(ac_style));
font.setStyle('font-size', value);
$(codeEditor.getWrapperElement()).setStyle('font-size',value);
val.set('text', value);
}
}).set(font.getStyle('font-size').toInt());
}
function toggleOptPane(){
var range;
if(opt_paneOpened){
range = [0,-155];
opt_paneToggle.slideOut();
$('opt_pane_topbar_left').removeClass('open');
var fnToDelay = function(){
opt_paneTopToggle.start({
'right':range
});
opt_paneOpened = !opt_paneOpened;
}
fnToDelay.delay(301);
}else{
range = [-155,0];
$('opt_pane_topbar_left').addClass('open');
opt_paneTopToggle.start({
'right':range
});
var fnToDelay = function(){
opt_paneToggle.slideIn();
opt_paneOpened = !opt_paneOpened;
}
fnToDelay.delay(201);
}
}
// function SaveAndClose(){
// parent.itemsHTML[index].codeevents = codeEditor.getValue();
// parent.itemsHTML[index].codestatuss = JSON.stringify(statuss);
// parent.window.ActionCodeLayer.close();
// parent.window.codeOpen=false;
// }
function save(folder) {
//var folder_path=folder + '/styles/';
var folder_path = fileName.substring(0, fileName.lastIndexOf("/"))
notimooManager = new Notimoo({});
notimooManager.show({
title:'Notification message',
message: 'saving file...',
sticky : true,
width:200,
height:40
});
var url;
// if( fileName.endsWith(".css") )
if( fileType == "css" )
url = new JSURL("../servlet/JSPSave?type=css"+
"&name="+Strtran(fileName,".css","")+
"&code="+URLenc(codeEditor.getValue()) +
"&m_cID=" + cmdhash
,true);
else
url = new JSURL("../servlet/JSPSave?type=jsp"+
"&name="+Strtran(fileName,".jsp","")+
"&code="+URLenc(codeEditor.getValue()) +
"&m_cID=" + cmdhash
,true);
output=url.Response();
changed = false;
if(window.parent.changeName) window.parent.changeName(fileName,folder_path,Strtran(window.frameElement.id,'portalstudioframe',''))
if (output==null) output="";
switch(output) {
case "true":
for(var i=0 ;i<notimooManager.elements.length;i++){
notimooManager.close(notimooManager.elements[i]);
}
notimooManager.show({
title:'Notification message',
message: 'file saved!',
visibleTime: 2000,
width:200
});
break;
case "ACCESS DENIED":
//notimooManager.close(notimooManager.elements[0]);
if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){
accessDeniedStandaloneRefresh({name : fileName});
} else {
parent.jsonConfirmAccessDenied({name : fileName});
}
//alert("Access Denied.")
break;
case "LICENSE LIMIT":
notimooManager.close(notimooManager.elements[0]);
alert("Licensed User Limit Reached.")
break;
default:
notimooManager.close(notimooManager.elements[0]);
alert("Save routine failed.")
break;
}
}
function ResizeEditor(){
clearTimeout(resizeTimer);
var size_editor = $('editor').getSize();
//var size = parent.ActionCodeLayer.getContainer().getSize();
//ac_style.width = size.x;
//ac_style.height = size.y;
codeEditor.getScrollerElement().style.width=size_editor.x+'px';
codeEditor.getScrollerElement().style.height=size_editor.y+'px';
localStorage.setItem('zucchetti_ac_style', JSON.encode(ac_style));
}
/*********Gestione degli eventi************/
window.addEvent('domready',function(){
createCodeArea();
code = loadCode();
window.fireEvent('createEditorComponent');
opt_paneToggle = new Fx.Slide('opt_pane_wrapper',{
'transition':Fx.Transitions.linear.easeOut,
'duration':300
}).hide();
opt_paneTopToggle = new Fx.Morph('opt_pane_top_wrapper',{
'duration':200
});
$$('.opt_pane_mode').each(function(i){
i.addEvent('click',function(){
var theme=Strtran(i.id,'change_style_','');
codeEditor.setOption('theme',theme);
ac_style.theme = theme;
localStorage.setItem('zucchetti_ac_style', JSON.encode(ac_style));
});
});
buildSlider.delay(300);
setTimeout(function(){codeEditor.getScrollerElement().style.height =$('editor').offsetHeight +'px';},300);
codeEditor.focus();
});
document.id('opt_pane_topbar_left').addEvent('click',toggleOptPane);
//document.id('toolbar_ok').addEvent('click',SaveAndClose);
document.id('toolbar_help').addEvent('click',function(){
document.id('helpkeys_content').toggleClass('visible');
});
document.id('toolbar_search').addEvent('click',function() {
codeEditor.execCommand('find');
});
// document.id('toolbar_cancel').addEvent('click',function CheckClosefromX(){
// if(changed){
// if (confirm("Do you want to save Actions code ?\n\nClick OK to save\nClick Cancel to ignore changes"))
// SaveAndClose()
// else{
// parent.window.ActionCodeLayer.close();
// parent.window.codeOpen=false;
// }
// }else{
// parent.window.ActionCodeLayer.close();
// parent.window.codeOpen=false;
// }
// })
document.body.addEvent('keydown',function(e){
var domevt = new DOMEvent(e);
var code = domevt.code;
if(domevt.control && code==82){ //ctrl+r
//Annullo il Ctrl-r di default
if(e.preventDefault)e.preventDefault();
}
});
window.addEvents({
'restoreSize': function(spmodallayer){
ac_style.maximized = false;
localStorage.setItem('zucchetti_ac_style', JSON.encode(ac_style));
}
, 'maximized': function(spmodallayer){
ac_style.maximized = true;
localStorage.setItem('zucchetti_ac_style', JSON.encode(ac_style));
}
, 'resize': function(){ resizeTimer = ResizeEditor.delay(50) }
, 'save': save
});
/**********Gestione dello specifico editor***************/
function loadCode(){
fileName='<%=JSPLib.ToJSValue(fileName)%>';
var strreload='';
if( c_ripristino && sessionStorage.getItem(c_ripristino)){
/**
* parent.is_Saving a False, perchè se fosse True i vari tab
* non sarebbero più cliccabili e quindi non si potrebbe lavorare
* sugli altri Tab
*/
parent.is_Saving = false;
strreload = JSON.parse(sessionStorage.getItem(c_ripristino))["def"]
sessionStorage.removeItem(c_ripristino);
codeEditor.setValue(strreload);
if(window.parent.location.href.indexOf("portalstudio.jsp") < 0){
if(fileName){
save();
} else if(!fileName){
if(fileType == "jsp"){
OpenWindow("../portalstudio/saveas.jsp?tool=manualjsp",600, 600, 0, 0);
} else {
OpenWindow("../portalstudio/saveas.jsp?tool=css",600, 600, 0, 0);
}
}
}
} else if(window.frameElement?.jdef){
strreload = window.frameElement.jdef;
window.frameElement.jdef = undefined;
codeEditor.setValue(strreload);
} else {
if(!Empty(fileName)){
var url;
// if( fileName.endsWith(".css") )
if( fileType == "css" )
url = new JSURL("../servlet/JSPLoad?type=css&name="+Strtran(fileName,".css",""),true);
else
url = new JSURL("../servlet/JSPLoad?type=jsp&name="+Strtran(fileName,".jsp",""),true);
strreload=url.Response();
codeEditor.setValue(strreload);
}
}
return strreload;
}
window.addEvent('createEditorComponent',selectName);
function writeCode(name,obj){
/* effettua una ricerca della funzione nella text area. Se la trova posiziona il cursore, altrimenti la crea*/
funct_evt=Ctrl("event_item").value;
if(funct_evt=='-') return;
var fnc='function '+name+'_';
var LFidx = (fnc+funct_evt).search(/\n/);
LFidx = LFidx==-1 ? (fnc+funct_evt).length : LFidx;
var toFind=(fnc+funct_evt).substr(0, LFidx);//prende solo la prima riga
var braceIdx=toFind.indexOf('(');
if(braceIdx!=-1)
toFind=toFind.substr(0,braceIdx)+'\\(';
var idx = -1;
idx = Strtran(codeEditor.getValue(),"\r","").search(new RegExp(toFind,'m'));
fnc+=funct_evt;
if(idx!=-1){
idx+=LFidx+(braceIdx!=-1 ? 1 : ('(){'.length)+1);
var a = codeEditor.getSearchCursor(toFind)
if(a.find())
codeEditor.setSelection(a.from(),a.to())
} else {
var toAdd='';
if(fnc.indexOf('(')==-1)
fnc+='()';
if(fnc.indexOf('{')==-1)
fnc+='{\n\n}';
fnc+='\n';
codeEditor.replaceRange(fnc,codeEditor.getCursor(true), codeEditor.getCursor(false))
}
obj.blur();
}
function option(val,descr,long_descr){
return '<option title="'+(!Empty(long_descr)?long_descr:(arguments.length==1 ? val : descr))+'" value="'+val+'">'+(arguments.length==1 ? val : descr)+'</option>';
}
function selectName(){
/*
var name,src, i,
str='<select id="id_item" tabindex="2" accesskey="t">'+
'<option value="">-</option><option value="this">this</option>';
var comboSelectItems=[];
for(i=0;i<itemsHTML.length;i++){
comboSelectItems.push(itemsHTML[i]);
}
comboSelectItems.sort(function (a,b) {
var minA = a.name.toLowerCase();
var minB = b.name.toLowerCase();
if (minA < minB) { return -1; }
else {
if (minA > minB) { return 1; }
else { return 0; }
}
});
for(i=0;i<comboSelectItems.length;i++){
var item_tmp=comboSelectItems[i];
str+='<option ';
if(item_tmp.type=='Portlet'){
if(index!=null && item_tmp.name==itemsHTML[index].name){
str+='selected ';
name=item_tmp.name;
src=item_tmp.src;
}
str+='value="'+item_tmp.src+'">'+item_tmp.name+'</option>';
}else{
if(index!=null && item_tmp.name==itemsHTML[index].name){
str+='selected ';
name=item_tmp.name;
}
str+='value="'+item_tmp.name+'">'+item_tmp.name+'</option>';
}
}
str+='</select>';
Ctrl("selectname").innerHTML=str;
document.id('id_item').addEvent('change', function(){
var idx=this.selectedIndex
, txt=this.options[idx].text
, val=this.options[idx].value
;
selectEvent(txt, val);
selectFunction(txt, val);
});
selectEvent(name,src);
selectFunction(name,src);
*/
}
function selectEvent(name,src){
/*
var str='<select id="event_item" tabindex="3" accesskey="e"><option>-</option>',
es, i, obj, found=false;
if(name!='this'){
for(i=0;i<itemsHTML.length;i++){
obj=itemsHTML[i];
src=obj.src;
if(obj.name==name || src==name){
found=true;
es=obj;
break;
}
}
}else{
found=true;
// Aggiunta delle informazioni per il wizard
// copia profonda
es = {'objClass':{'events': form.objClass.events.slice() }};
if( form.wizard ){
for(var i=0;i<form.npages;i++){
es.objClass.events.push (["Enable page "+(i+1)+", return boolean true if validate, false otherwise","EnablePage"+(i+1)+"()"])
}
for(var i=0;i<form.npages;i++){
es.objClass.events.push (["Validate page "+(i+1)+", return boolean true if validate, false otherwise","ValidatePageChange"+(i+1)+"()"])
}
}
}
if(found){
es=es.objClass.events;
if(es){
var value,descr;
for(i=0;i<es.length;i++){
if(IsA(es[i],'C')){
value=descr=es[i];
}else{
descr=es[i][0];
value=es[i][1];
}
str+=option(value,descr);
}
}
if(obj!=null && obj.type=='Portlet' && src){
var folder_path='';
if(src.indexOf('/')>-1){
folder_path='/'+name.substring(0,src.lastIndexOf('/'));
src=Strtran(src,src.substring(0,src.lastIndexOf('/')+1),'');
}
//legge gli eventi nei portlet
var url = new JSURL("../servlet/JSPReader?name="+src+"&folder_path="+folder_path+"&type=events",true);
var eventsList=url.Response().split(',');
for(var i=0;i<eventsList.length;i++){
if(Trim(eventsList[i])!='')
str+=option(eventsList[i]);
}
}
}
str+='</select>';
Ctrl("selectevent").innerHTML=str;
document.id('event_item').addEvent('change',function(){
writeCode(name,this);
});
*/
}
function selectFunction(name,src){
/*
var str='<select id="function_item" tabindex="4" accesskey="f"><option>-</option>'
var fs;
var found=false;
if(name!='this'){
for(var i=0,obj;i<itemsHTML.length;i++){
obj=itemsHTML[i];
src=obj.src;
if(obj.name==name || src==name){
found=true;
fs=obj;
break;
}
}
}else{
found=true;
fs=form;
}
if(found){
fs=fs.objClass.functions;
if(fs){
var descr,value,long_descr;
for(var i=0;i<fs.length;i++){
if(IsA(fs[i],'C')) value=descr=fs[i]
else{
descr=fs[i][0];
value=fs[i][1];
if(!Empty(fs[i][2])) long_descr=fs[i][2];
}
str+=option(value,descr,long_descr);
}
}
if(obj!=null && obj.type=='Portlet' && src){
//legge le functions dei portlet inclusi
var folder_path='';
if(src.indexOf('/')>-1){
folder_path='/'+name.substring(0,src.lastIndexOf('/'));
src=Strtran(src,src.substring(0,src.lastIndexOf('/')+1),'');
}
//legge gli eventi nei portlet
var url = new JSURL("../servlet/JSPReader?name="+src+"&folder_path="+folder_path+"&type=functions",true);
var eventsList=url.Response().split(',');
for(var i=0;i<eventsList.length;i++)
if(Trim(eventsList[i])!='')
str+=option(eventsList[i]);
}
}else if(name=='-'){
str+=option('Trim(#str#)');
str+=option('Strtran(#src#,#find#,#repl#)');
str+=option('Substr(#str#,#pos#,#cnt#)');
str+=option('Left(#str#,#len#)');
str+=option('Right(#str#,#len#)');
str+=option('Str(#p_n#,#len#,#dec#)');
str+=option('Val(#str#)');
str+=option('Upper(#str#)');
str+=option('Lower(#str#)');
str+=option('At(#p_cStrFind#,#p_cStr#,#cnt#)');
str+=option('Len(#obj#)');
str+=option('DateToChar(#obj#)');
str+=option('CharToDate(#obj#)');
str+=option('Day(#obj#)');
str+=option('Month(#obj#)');
str+=option('Year(#obj#)');
}
str+='</select>';
Ctrl("selectfunction").innerHTML=str;
document.id('function_item').addEvent('change',function(){
writeFunction(name,this);
});
*/
}
// function writeFunction(name,obj){
// var str,func=Ctrl("function_item").value;
// if(func=='-') return;
// if(name=='-')
// str=func+'\n'
// else if(name=='this')
// str='this.'+func+'\n'
// else
// str='this.'+name+'.'+func+'\n';
// codeEditor.replaceRange(str,codeEditor.getCursor(true), codeEditor.getCursor(false))
// obj.blur();
// }
// --------- EXPORT ----------- //
/**
* Ottiene JDEF e aggiunge Versione e Tool
*/
function getJDEF(){
let toolType = fileType;
toolType == "jsp" ? toolType = "manualjsp" : toolType = toolType;
let getJDef = codeEditor.getValue();
let versionTool = "";
let newJDefStringify = {
tool: toolType,
version: versionTool,
def: getJDef,
name : fileName
};
return newJDefStringify;
}
</script>