/******************************************************************************* ★ 설명 File Path 문자열(예 : C:\a\b\filename.ext)에서 File명(예 : filename)을 추출 ★ Parameter 1. sPath : File Path 문자열 (예 : "C:\a\b\filename.ext") 2. bExt : extend를 return되는 File명에 포함시킬지 여부 ( 옵션 : Default=false ) - true : extend를 File명에 포함시킴 - false : extend를 File명에 포함시키지 않음 ★ return - 성공 = - bExt = true인 경우 ==> sPath에서 File명(예 : "filename.ext") - bExt = false인 경우 ==> sPath에서 File명(예 : "filename") - 실패 = "" ******************************************************************************/
function fn_GetFileName( sPath, bExt )
{
var start_pos, end_pos, tmp_pos, filename;
if( fn_IsNull(sPath) ) return "";
if( fn_IsNull(bExt) )
bExt = false;
start_pos = Math.max(PosReverse( sPath, "\\" ),
PosReverse( sPath, "/" ));
tmp_pos = PosReverse( sPath, "::");
if( tmp_pos > 0 ) tmp_pos++;
start_pos = Math.max( start_pos, tmp_pos );
if( bExt == false )
{
end_pos = PosReverse( sPath, "." );
if( end_pos < 0 )
end_pos = sPath.length;
filename = sPath.substr( start_pos+1, end_pos-start_pos-1 );
}
else
{
filename = sPath.substr( start_pos+1 );
}
return filename;
}
/******************************************************************************* ★ 설명 File Path 문자열(예 : C:\a\b\filename.ext)에서 확장자(예 : ext)을 추출 ★ Parameter 1. sPath : File Path 문자열 (예 : "C:\a\b\filename.ext") ★ return - 성공 = sPath에서 확장자(예 : "ext") (단, "."이 없으면 "" return됨) - 실패 = "" ******************************************************************************/
function fn_GetFileExt( sPath )
{
var pos;
if( fn_IsNull( sPath ) ) return "";
pos = PosReverse( sPath, "." );
if( pos < 0 )
return "";
else
return sPath.substr( pos+1 );
}
/******************************************************************************* ★ 설명 sPath 문자열(예 : C:\a\b\filename.ext)에서 Path(예 : C:\a\b\)를 추출 ★ Parameter 1. sPath : Path 문자열 (예 : "C:\a\b\filename.ext") ★ return - 성공 = sPath에서 Path(예 : "C:\a\b\") - 실패 = "" ******************************************************************************/
function fn_GetFilePath( sPath )
{
var filename;
if( fn_IsNull(sPath) ) return "";
filename = GetFileName( sPath, true );
if( filename == null ) return null;
return sPath.substr(0, sPath.length - filename.length);
}
/******************************************************************************* ★ 설명 화면내에서 자기 자신화면의 Url을 얻어온다. ★ Parameter 없음 ★ return - 성공 = 자기 자신화면의 Url ( 절대경로 또는 Service::a.xfdl 형태로 return됨 ) - 실패 = "" ******************************************************************************/
function fn_GetThisUrl()
{
var this_url, parent_type;
// Division, Tab, PopupDiv인 경우에는 따로 처리해야 함
parent_type = GetObjType(parent);
if( parent_type == "Div" || parent_type == "PopupDiv" || parent_type == "TabPage" )
this_url = parent.url;
else
this_url = this.getOwnerFrame().formurl;
return this_url;
}
/******************************************************************************* ★ 설명 현재 실행되고 있는 Project의 Root Full Path를 얻어온다. ★ Parameter 없음 ★ return - 성공 = 현재 실행되고 있는 Project의 Root Full Path - 실패 = "" ★ 참고사항 현재 실행되고 있는 ADL Path는 application.xadl을 통해 얻을 수 있다. ★ 목적 Tool에서 system.execXPlatform을 하면 Project경로를 알수 없어 실행이 힘들기 때문에 만들었다. ★ BUG 모든 화면 Service는 Project내의 바로 한단계 아래의 Sub Directory이고 ADL은 Project Directory에 있다는 전제하에 만들어 졌다. 즉, Project=C:\A\, ADL=C:\A\ADL.xadl, Service=C:\A\Service\라는 가정하에 만들어졌다. ******************************************************************************/
function fn_GetProjectPath()
{
var cur_xadl, filename, project_path;
cur_xadl = application.xadl;
if( fn_IsNull(cur_xadl) ) return "";
filename = GetFileName(cur_xadl, true);
if( fn_IsNull(filename) ) return "";
// QuickView로 돌린 경우
if( filename == "empty_adl.xadl" )
{
var this_url, pos;
this_url = Replace( childframe.formurl, "\\", "/" );
pos = PosReverse( this_url, "/");
if( pos < 0 )
return "";
pos = PosReverse( this_url, "/", pos-1);
if( pos < 0 )
return "";
project_path = childframe.formurl.substr(0, pos+1);
}
// Launch Project로 돌린 경우
else
{
var trim_path;
project_path = GetFilePath(application.xadl);
trim_path = LTrim(project_path, "file://");
if( trim_path != project_path )
project_path = Replace( trim_path, "/", "\\" );
}
return project_path;
}
/******************************************************************************* ★ 설명 ADL을 주고 XPlatform실행하는 함수 ★ parameter 1. sADL : ADL 1) Full Path지정한 경우 (예 : C:\\Project\\ADL.xadl") Full Path에 해당하는 ADL실행 2) ADL명만(확장자제외) 지정한 경우 ( 예 : "ADL" ) Project Path내의 ADL실행 ※ 단, 경로에 대한 유효성 여부는 검사하지 않음 2. sKey : XPlatform실행시 Key (옵션 : Default = ADL명(단, 확장자제외)) ★ return - 성공 = true - 실패 = false ★ 주의사항 XPLatform실행시 Argument를 전달할 방법은 못 찾겠다. ★ 목적 PC에서 Tool로 작업시 Project Path를 모를 경우 XPlatform실행이 어려워서 만들었음 ******************************************************************************/
function fn_RunXP(sADL, sKey)
{
var adl_name;
var project_path;
var oChildFrame_SDI;
if( fn_IsNull(sADL) ) return false;
adl_name = GetFileName(sADL);
if( fn_IsNull(sKey) ) sKey = adl_name;
// FullPath로 지정한 경우
if( adl_name != sADL )
system.execXPlatform(" -X \"" + sADL + "\" -K " + sKey);
// ADL명만 지정한 경우
else
{
project_path = GetProjectPath();
if( fn_IsNull(project_path) )
return false;
else
system.execXPlatform(" -X \"" + project_path + sADL + ".xadl" + "\" -K " + sKey);
}
return true;
}
/******************************************************************************* ★ 설명 XPLATFORM에서 정의된 Path예약어와 실제경로 목록을 얻어오는 함수 ★ parameter ★ return 2차원 Array = {{alias 1, 실제경로 1}, {alias 2, 실제경로 2},...} ******************************************************************************/
function fn_GetPathAliasList()
{
var aList = new Array();
var tmp = new Array();
tmp[0] = "%USERAPP%"; tmp[1] = system.convertRealPath(tmp[0]);
aList[0] = tmp;
var tmp = new Array();
tmp[0] = "%MYDOCUMENT%"; tmp[1] = system.convertRealPath(tmp[0]);
aList[1] = tmp;
var tmp = new Array();
tmp[0] = "%INSTALLROOT%"; tmp[1] = system.convertRealPath(tmp[0]);
aList[2] = tmp;
var tmp = new Array();
tmp[0] = "%XPLATFORM%"; tmp[1] = system.convertRealPath(tmp[0]);
aList[3] = tmp;
var tmp = new Array();
tmp[0] = "%COMPONENT%"; tmp[1] = system.convertRealPath(tmp[0]);
aList[4] = tmp;
var tmp = new Array();
tmp[0] = "%THEME%"; tmp[1] = system.convertRealPath(tmp[0]);
aList[5] = tmp;
var tmp = new Array();
tmp[0] = "%CACHE%"; tmp[1] = system.convertRealPath(tmp[0]);
aList[6] = tmp;
return aList;
} |