チェンジセット 36

差分発生行の前後
無視リスト:
コミット日時:
2009/05/10 16:35:27 (12 年前)
コミッタ:
emotom
ログメッセージ:

チケット#14対応
http://oss.intra-mart.org/projects/im-ajax/ticket/14

[仕様]
グローバル変数 JSPACKMAN_CLASSPATHに設定する。
設定した場合、jspackman.xmlに指定した場合より優先される。
設定値の仕様は、jspackman.xmlと同じ。
設定方法は下記利用例を参考にしてください。
☆ポイント:jspackman.js のscriptタグより先に定義する。

[利用例]

<script type="text/javascript">

JSPACKMAN_CLASSPATH = [

{

"classNamePattern":"[a-zA-Z0-9]Test$|[a-zA-Z0-9]TestSuite?$",
"ignorrCase":false,
"charset":"UTF-8",
"path": "$JSPACKMAN_HOME/../../../test/webapp/csjs/"

}

];

</script>
<script type="text/javascript" src="../csjs/im/lang/jspackman.js" charset="UTF-8"></script>

[その他仕様変更]
・jspackman.xml でこれまで利用できていた変数 $JSPAMAN_CLASSPATHは

$JSPACKMAN_HOMEに名称変更。

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/im-jspackman/src/main/webapp/csjs/im/lang/jspackman.js

    r33 r36  
    847847                throw new Error("Your browser is not supported the XMLHttpRequest.."); 
    848848        } 
     849        im.lang.PackmanBoss.toCurrentPathFromDocumentLocation = function(absolutePath) { 
     850                var documentLocation = document.location.toString(); 
     851                var count = 0; 
     852                var currentPath; 
     853                while(true) { 
     854                        var lastIndex = documentLocation.lastIndexOf("/"); 
     855                        if (lastIndex < 0) { 
     856                                return absolutePath; 
     857                        } 
     858                        var parentPath = documentLocation.substring(0, lastIndex); 
     859                        if (absolutePath.indexOf(parentPath) === 0) { 
     860                                currentPath = absolutePath.substring(parentPath.length + 1); 
     861                                break; 
     862                        } else { 
     863                                count++; 
     864                                documentLocation = parentPath; 
     865                        } 
     866                } 
     867                for (var i = 0; i < count; i++) { 
     868                        currentPath = "../" + currentPath; 
     869                } 
     870                return currentPath; 
     871        } 
    849872        /** 
    850873         * Initialize the 'jspackman' as the PackmanBoss. 
     
    871894                        var lastIndex = scriptNodes[i].src.lastIndexOf(boss.SELF_FILE_NAME); 
    872895                        if (lastIndex != -1) { 
    873                                 classpath = scriptNodes[i].src.substring(0, lastIndex)
     896                                classpath = im.lang.PackmanBoss.toCurrentPathFromDocumentLocation(scriptNodes[i].src.substring(0, lastIndex - 1)) + "/"
    874897                                charset   = scriptNodes[i].charset; 
    875898                                break; 
     
    882905                } 
    883906                classLoader.setDefaultCharset(charset); 
     907                 
     908                // add the classpath from global variable of 'JSPACKMAN_CLASSPATH'. 
     909                if (typeof(JSPACKMAN_CLASSPATH) === "object" && JSPACKMAN_CLASSPATH.constructor === Array.prototype.constructor) { 
     910                        for (var i = 0; i < JSPACKMAN_CLASSPATH.length; i++) { 
     911                                var aClasspath  = JSPACKMAN_CLASSPATH[i]; 
     912                                var aPath       = aClasspath.path.replace("$JSPACKMAN_HOME/", classpath); 
     913                                var aPattern    = aClasspath.classNamePattern; 
     914                                var aIgnoreCase = (aClasspath.ignoreCase === true); 
     915                                var aCharset    = aClasspath.charset; 
     916                                classLoader.addClasspath(aPath, aPattern, aIgnoreCase, aCharset); 
     917                        } 
     918                } 
     919                 
    884920                // get the JSPackman Setting XML Object. 
    885921                var jspackmanNode; 
    886922                var xmlHttpRequest = boss.getXMLHttpRequest(); 
    887923                xmlHttpRequest.open("GET", classpath + boss.SELF_FILE_NAME + ".xml", false); 
    888                 //xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
     924                xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
    889925                xmlHttpRequest.send(""); 
    890926                jspackmanNode = xmlHttpRequest.responseXML.documentElement; 
     
    899935                                        var aClasspathNode = aChildNode.childNodes[j]; 
    900936                                        if (aClasspathNode.tagName == "classpath") { 
    901                                                 var path = aClasspathNode.firstChild.nodeValue.replace("$JSPACKMAN_CLASSPATH/", classpath); 
     937                                                var path = aClasspathNode.firstChild.nodeValue.replace("$JSPACKMAN_HOME/", classpath); 
    902938                                                var pattern = aClasspathNode.getAttributeNode("class-name-pattern").nodeValue; 
    903939                                                var ignoreCaseAttr = aClasspathNode.getAttributeNode("ignore-case"); 
     
    922958                for (var i = 0; i < contentHomePathNode.childNodes.length; i++) { 
    923959                        var aChildNode = contentHomePathNode.childNodes[i]; 
    924                         var path = aChildNode.firstChild.nodeValue.replace("$JSPACKMAN_CLASSPATH/", classpath); 
     960                        var path = aChildNode.firstChild.nodeValue.replace("$JSPACKMAN_HOME/", classpath); 
    925961                        if (aChildNode.tagName == "html_home_path") { 
    926962                                im.lang.PackmanBoss.HTML_HOME = path; 
  • trunk/im-jspackman/src/main/webapp/csjs/im/lang/jspackman.xml

    r32 r36  
    1010                                The pattern match is executed in order of the definition. 
    1111                                [Note]  
    12                                   You can use a property of '$JSPACKMAN_CLASSPATH'. 
     12                                  You can use a property of '$JSPACKMAN_HOME'. 
    1313                         --> 
    1414                        <!-- add the Test class classpath --> 
    15                         <classpath class-name-pattern="[a-zA-Z0-9]Test$|[a-zA-Z0-9]TestSuite$" ignore-case="false" charset="UTF-8">$JSPACKMAN_CLASSPATH/../../../test/webapp/csjs/</classpath> 
     15                        <!-- 
     16                        <classpath class-name-pattern="[a-zA-Z0-9]Test$|[a-zA-Z0-9]TestSuite$" ignore-case="false" charset="UTF-8">$JSPACKMAN_HOME/../../../test/webapp/csjs/</classpath> 
     17                        --> 
    1618                        <!-- a sample --> 
    1719                        <!--