LOGIN ID Password Auto Login Register Now! Lost Password?
XUGJ Forum

ALTSYSの言語定数管理で定型句を一括置換するJavaScript

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/1/15 14:12 | 最終変更
tohokuaiki  Lieutenant 居住地: From:2004/12  投稿数: 420
言語定数のオーバーライドで、たとえば、フォーラム→会議室とかにしたい場合、結構面倒ですよね。

で、JavaScriptで一括置換です。

言語定数の編集画面で、下記のJavaScriptを走らせます。アドレスバーにコピペでいけるでしょう。
java script:function langRep(before,after){for(var contentbody=xoopsGetElementById("contentBody"),tr=contentbody.getElementsByTagName("TR"),i=0,j=tr.length;i<j;i++){if(tr[i].className!="even"&&tr[i].className!="odd")continue;var td=tr[i].getElementsByTagName("TD");if(td.length!=3)continue;var div=td[1].getElementsByTagName("DIV"),input=td[2].getElementsByTagName("INPUT"),textarea=td[2].getElementsByTagName("TEXTAREA");if(div.length==0||textarea.length==0&&input.length==0)continue;if(arguments.length==3)var text=(input.length?input[0].value:textarea[0].value).replace("\t","","g");else var text=div[0].innerHTML.replace("\t","","g");if(text.match(before)){var target=input.length?input[0]:textarea[0];target.value=text.replace(before,after);target.value=target.value.replace(" ","");target.value=target.value.replace("\n","")}}}function langRepText(before,after){langRep(before,after,1)}function langRepArray(){for(var i=0,j=arguments.length;i<j;i+=2){if(!arguments[i+1])break;langRep(arguments[i],arguments[i+1])}}function langRepTextArray(){for(var i=0,j=arguments.length;i<j;i+=2){if(!arguments[i+1])break;langRepText(arguments[i],arguments[i+1])}}

で、関数が定義されたので、あとは
java script:langRep("フォーラム","会議室");
とかアドレスバーから入力すると、置換されたものがテキストエリアに入ります。

最初の1回にやる分には有効かと思います。


追記:15:05 コードを変更しました。
あと、
java script:langRepText("会議室","相談所");
とやると、テキストエリア内をターゲットにして文字変換するようにしました。

追記:15:25 コードを変更しました。
また、
java script:langRepArray("カテゴリー","部署","フォーラム","会議室","トピック","議題");
で、カテゴリー→部署。フォーラム→会議室。トピック→議題への一括置換です。langRepTextArrayもあります。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/1/18 12:23
tohokuaiki  Lieutenant 居住地: From:2004/12  投稿数: 420
圧縮前のコードを張っておきます。
function langRep(before, after)
{
    var contentbody = xoopsGetElementById('contentBody');

    var tr = contentbody.getElementsByTagName('TR');
    for (var i=0,j=tr.length; i<j; i++){
        if (tr[i].className!="even" && tr[i].className!="odd") continue;

        var td = tr[i].getElementsByTagName('TD');
        if (td.length != 3) continue;
        
        
        var div = td[1].getElementsByTagName('DIV');
        var input = td[2].getElementsByTagName("INPUT");
        var textarea = td[2].getElementsByTagName("TEXTAREA");
        
        if (div.length==0 || (textarea.length==0 && input.length==0) ) continue;
        
        if (arguments.length == 3){
            var text = (input.length ? input[0].value : textarea[0].value).replace("\t", "", "g");
        }
        else {
            var text = div[0].innerHTML.replace("\t", "", "g");
        }
        if (text.match(before)){
            var target = input.length ? input[0] : textarea[0];
            target.value = text.replace(before, after);
            target.value = target.value.replace(" ", "");
            target.value = target.value.replace("\n", "");
        }
    }
}
function langRepText(before, after)
{
    langRep(before, after, 1);
}
function langRepArray()
{
    for (var i=0,j=arguments.length; i<j; i+=2){
        if (!arguments[i+1]) break;
        langRep(arguments[i], arguments[i+1]);
    }
}
function langRepTextArray()
{
    for (var i=0,j=arguments.length; i<j; i+=2){
        if (!arguments[i+1]) break;
        langRepText(arguments[i], arguments[i+1]);
    }
}
投票数:1 平均点:0.00
  条件検索へ

Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities