SPAWエディターが表示しなくなったら

SPAWエディター使用のXOOPSはだいぶ昔のものだし、セキュリティ的に使っていること自体が問題かもしれませんが、でも、例外もありますので……。

SPAWエディターが、Googlechromeなどの新しいブラウザや、IEのバージョンアップで表示されなくなりまして、まぁ、そういうものかなと、利用する必要がある場合はIEの互換表示でごまかして利用していたのですが、なんかのきっかけでそれに関する記事を発見。

古いCMS環境を最新ブラウザで使うための改造

貴重な資料をありがとうございます。

ということで、ブラウザ判別がひっかかっていたらしいです。そうですね、SPAWの時代にGooglechromeはなかった……。IEのバージョンアップでエディターが表示されなくなったとき、バージョンの判別のスクリプトをいじったりしたことがあったので、それでピンとくるべきだったなぁ……。

ということで、

「class/util.class.php」の「function checkBrowser()」に//▼▼ここから追加▼▼から//▲▲ここまで▲▲を追加。

  function checkBrowser()
  {
    $browser = $_SERVER['HTTP_USER_AGENT'];
    // check if msie
    if (eregi("MSIE[^;]*",$browser,$msie))
    {
      // get version 
      if (eregi("[0-9]+\.[0-9]+",$msie[0],$version))
      {
        // check version
        if ((float)$version[0]>=5.5)
        {
          // finally check if it's not opera impersonating ie
          if (!eregi("opera",$browser))
          {
            return true;
          }
        }
      }
    }
    elseif (ereg("Gecko/([0-9]*)",$browser,$build))
    {
      // build date of version 1.3 is 20030312
      if ($build[1] > "20030312")
        return true;
      else
        return false;
    }
    //▼▼ここから追加▼▼
    elseif (ereg("Chrome",$browser))
	{
		return true;
	}
	elseif (ereg("Firefox",$browser))
	{
		return true;
	}
	elseif (ereg("Safari",$browser))
	{
		return true;
	}
	elseif (ereg("Trident",$browser))
	{
		return true;
	}
	//▲▲ここまで▲▲
    return false;
  }
 

まぁでもそもそもあんまり使わない方がいいとは思うんですが……。
久しぶりにXOOPS関係の記事を書きました。


SPAWエディターが表示しなくなったら」への7件のフィードバック

  1. ぎぃ

    初めまして。突然のコメント失礼します。
    タイムリーにも、私もちょうどこの1週間に同じ問題に突き当たりました。
    記事内に書かれているリンクにも辿り着け、当該ファイルの書き換えも無事に終わった…のですが、
    いざSPAW editorを使用すると、「イメージの挿入」ボタンから画像を選んで(ここまでは出来る)
    「選択する」ボタンを押しても、何も起こらないのです。エディタ内の記事に反映されません。
    互換表示にするとこの動作は問題なく、画像は編集画面内に出てきました。
    ちなみに使用しているブラウザはIE11で、この2つ(通常&互換表示)を比較したところ、
    そもそも「イメージの挿入」でポップアップするウィンドウのURLが違っていることに気付き(見た目はどっちも一緒なのに)、
    さらに自分なりに調べてみると、spawフォルダ内の「spaw_script.js.php」によって
    通常時:class/script_gecko.js.php
    互換時:class/script.js.php
    に振り分けられているのではないか…と思うようになりました。
    ただ、php等の知識が全く無いため、ここからどうすれば問題が解決するのかが私にはお手上げ状態なのです。
    もしよろしければ、ご意見いただければ幸いです。

  2. てらりん 投稿作成者

    ぎぃさん、こんにちは。
    コメントありがとうございます。
    たまにしかチェックしないため、返事が相当遅れてしまってすみません。
    貴重なご意見をありがとうございました。
    試してみたのですが、確かに、画像挿入できません。
    気づきませんでした。ありがとうございます。
    ちょっとお時間いただきまして、私も探ってみようと思います。
    うまく探れれば29日、駄目なら4日以降になりますが、また、コメントさせていただきます。

  3. てらりん 投稿作成者

    全然調べられていません。また、コメントします。ごめんなさい~。

  4. てらりん 投稿作成者

    とりあえず、今日調べてみたことをまとめますー。

    まずは、その振り分けについて
    「class/script_gecko.js.php」と「class/script.js.php」に分けているのは、「common\spaw\spaw_script.js.php」でブラウザ判別し、「Gecko」と「それ以外」でそれぞれ読み込ませています。

    このブラウザ判別は「USER_AGENT」を見ていて、
    大まかにいうと「MSIE」がついてたら「IE」、「GECKO」が含まれていたら「Gecko」という判別にしてます。

    では、IEは……。

    IEはIE8からUSER_AGENTに「Trident」が加わり、IE11から「MSIE」が消えました。だから、「Trident」で判別すればいいのだけど、IE11のUSER_AGENTに「like Gecko」というものが加わりました。

    なので、単純に判別に任せると「Gecko」だと判断され、その「Gecko」のスクリプトへ飛ばされます。

    では、単純にこの判別たとえば、「getBrowser」でブラウザ判別している「common\spaw\class\util.class.php」に手を加えて、「Gecko」判別を「Trident」にして、「Gecko」用のスクリプトを読ませないようにしたらいいのかなと考えたのですが、そうすると今度は、SPAW自体が表示しなくなります。

    そもそも「class/script_gecko.js.php」「class/script.js.php」の違いは、DOMの記述のようです。

    例えば
    GECKOは
    oForm = document.getElementById(thefield).form;

    そうではないのは
    oForm = document.all[thefield].form;

    です。

    で、IE11でのスクリプトのエラーも
    range.insertNode(imgNode);
    が、WrongDocumentErrorというのが出ています。

    これが、多分DOMの表記の問題だと思い、
    http://stackoverflow.com/questions/13658086/range-insertnodefrag-on-ie
    を見ながら、いろいろと考えてみたのですが、
    DOMを完全に理解できていないので、そこで止まってしまいました。

    この辺ももう少し読んでみようかなと
    https://hyper-text.org/archives/2013/07/ie11_user_agent_string.shtml
    http://www.wdic.org/w/TECH/Internet%20Explorer%2011

    今、私が調べられたことはそこまでです。

    ちなみに、Gecko判断されるFirefoxではちゃんと動いています。

    IE11はlike Geckoだから、完全にGeckoではなくて、だからGecko用のスクリプトも一部ちゃんと動かないってことでしょうか……。

    すみません。あんまり詳しくなくて……。

  5. ぎぃ

    てらりん様、ありがとうございます。
    原因を詳しく教えていただき大変嬉しく思いました。
    なかなか私がここから解決法を見いだすのは難しそうですが、
    参考にして少し自分でも学んでみようと思います。
    また分かったことがあれば是非教えていただきたいです。
    本当に、ありがとうございました。

  6. ぎぃ

    てらりん様へ
    連続のコメント失礼します。(上のコメントはご迷惑なら消していただいても構いません)
    いただいたコメントや他のブラウザ判別に関するページを読みながら、ふと
    「どうせ私の所はこのIEからしか記事更新しないし…」と思い、
    (実は職場内の話で…年度末で記事更新を他の者に引き継ぐ必要があり
     どうしてもタグ打ちをせずに更新できるようにしなければならなかったのです。苦笑)
    「common\spaw\class\util.class.php」のfunction getBrowser() に続くif文の中に

    elseif (eregi(‘like Gecko’,$browser))
    {
    return ‘IE’;
    }

    の記述を混ぜてみたところ、spawエディタがちゃんとIE用になり、画像もボタンで投稿できました!
    文法としては正しくないのかもしれませんが、とりあえず稼働したことをお伝えしておきます。
    この度はお忙しい中お手を煩わせてしまい申し訳ありませんでした。
    お陰様で本当に助かりました、心から感謝いたします。
    ありがとうございました。

  7. てらりん 投稿作成者

    ぎぃさま
    コメントありがとうございます!
    結果まで教えていただいて、ありがとうございました。
    私もそのコメントを参考にさせていただきます(^^)
    勉強させてもらいました。こちらこそ、ありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です