We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6350
    • 421 Posts
    え~~問題点というよりも自分での解決が難しい項目です。

    (1)ドキュメントの新規作成、編集後に表示される「ドキュメントへのリンク:~」でのリンク先がおかしい
       実際には
       http://xxx.s78.coreserver.jp/modx/blog/article_1234578736.html と表示されるべきところ
       http://xxx.s78.coreserver.jp/blog/article_1234578736.html と /modx が抜けて表示される

       fdm.class.inc.php の 383行目の echo $link; で表示していると思うがリンクが組み立てられるまでの流れが理解できない。

    (2)ドキュメントの編集後「ドキュメントへのリンク:~」の下に編集前の内容が表示されており紛らわしい
       その為本当はメッセージで一息置かずに編集後のドキュメントにリダイレクトしたい。

       新規作成の場合も同様にリダイレクトで作成後の画面に飛ばしたい。
       オプションの &redirect= で上の二つの条件は同時に指定できそうにないので自分の目的に合わせて改造が必要になりそう。

       とりあえずは(1)を解決しないと次に進めない。

    (3)ドキュメントの新規作成、編集時のポップアップメッセージをなくしたい。
       「削除、非公開」などは確認があったほうがいいと思うけど「新規作成、編集」の場合はいちいち表示されるのは邪魔。
       これもどこでポップアップされているのかソースコードの位置、追い方がわからない。

    とりあえずはここまで解決できれば僕も立派な FDM 使いになれそうです。 wink

    tkfm さん、thr さんについては(1)はすでに解決した上で利用されていると思います。
    sama55 さんも、密かにここを覗きながらすでに僕の悩みを一気に通り越して、上記項目をクリアされていればひとつお力添えのほどお願いいたします。
      • 6350
      • 421 Posts
      (1)(3)解決しました。

      (1)ドキュメントの新規作成、編集後に表示される「ドキュメントへのリンク:~」でのリンク先がおかしい
         fdm.db.class.inc.php の makeUrl() 内 198行目を変更する

         $path=getPath();
      ↓
         $path=$modx->config[’base_url’] . $this->getPath();

         getPath(); は親のフォルダ名しか所得しないため base_url を補完する必要があります。
         なんでだれも文句言わないんだろう?

         ※注意事項
         このファイル(fdm.db.class.inc.php)を編集するには注意が必要です。
         その原因を見つけるまでに半日かかりました。

         stripAlias($alias) 関数内でアラビア文字(ギリシャ文字?)が使用されており utf-8 対応のエディタでも正常に
         保存できない場合があるようです。

         たぶん僕の使っていた「さくらエディタ」がutf-8 の日本語文字しか対応していないようなので保存後文字化けしていたようです。
         対応策として、今回はサーバコントロールパネルのファイルマネージャーより変更を行いました。
         ほんとうはこの部分を全角→半角などに置き換わるように日本語に対応させるべきだと思います。

      (3)ドキュメントの新規作成、編集時のポップアップメッセージをなくしたい。
         japanese-utf8.inc.php を変更

      [+user.canadd:is=`1`:and:if=`[+link.disableadd+]`:is=`0`:then=`
      <a href="[+link.add:esc+]" onclick="return confirm(’ドキュメントを新規作成しても宜しいですか?’)" title="新規作成"><img src="[(base_url)]manager/media/style/MODx/images/icons/folder_page_add.gif" width="18" height="18" alt="新規作成" border="0" /></a>
      `:strip+]

      [+link.disableedit:is=`0`:then=`
      [+user.ismoderator:is=`1`:or:if=`[+user.isauthor+]`:is=`1`:then=`
      <a href="[+link.edit:esc+]" onclick="return confirm(’このドキュメントの編集を行いますか?’)" title="編集"><img src="[(base_url)]manager/media/style/MODx/images/icons/logging.gif" width="16" height="16" alt="編集 " border="0" /></a>
      `:strip+]
      `+]

         上記赤字部分を削除するだけで目的が達成できました。まさか言語ファイルでメッセージを出しているとは・・

      (2)ドキュメントの編集後「ドキュメントへのリンク:~」の下に編集前の内容が表示されており紛らわしい
         上記の(1)(3)が解決したので書き込み後の動作をリダイレクトに変えてみたのですが思ったように動作してくれません。


      次回「最終回」に続く・・・ :’(
        • 33014 ☆ A M B ☆
        • 1,231 Posts
        Quote from: dainiti at Feb 15, 2009, 05:05 AM

           なんでだれも文句言わないんだろう?
        なかなか言えないことではと。最初に文句つけた人はエラいと思います。
        「やっぱりそうか!」って思った人が日本中に何人かいると思いますよw

        まだ内容よく把握できてないですが、せっかくの調査をムダにしないようがんばりたいと思います。

        ちなみにemeditorは多言語対応強いみたいです。
        ふだん常用してないですが、他国の言語ファイルをさわる時はemeditor立ち上げてます。
          • 6350
          • 421 Posts
          Quote from: dainiti at Feb 15, 2009, 05:05 AM

             なんでだれも文句言わないんだろう?
          あとから気が付いたんですがテンプレートに
          <base href=[(site_url)] />
          を指定している場合には base_href を補完する必要があるようです。

          逆に site_url を使わない主義の人はここを変更すると逆におかしくなります。
          /modx/blog/blog/article_1234727063.html
          ↑ このようにダブってしまいます

          テンプレートで <base href が指定されているかどうか判断する方法などはあるんでしょうか?

          <base href を使用するのが modx 流であるならばここは修正しておいたほうがいいということになります。
          作者の人は <base href を使わない流の人のようです。

          でも標準のスニペットなどは <base_href に動作が左右されるのか確認したことがないのですが実際はどうなんでしょうね。
          いい方法があれば教えてください。 wink
          標準のスニペットが何を基準にアドレスを作っているのか少し勉強してみます。

          たぶん、getPath(); の関数内でもうすこし工夫すればどちらの場合もいけそうには思いますが。。
          Quote from: yama at Feb 15, 2009, 07:19 PM

          ちなみにemeditorは多言語対応強いみたいです。
          ふだん常用してないですが、他国の言語ファイルをさわる時はemeditor立ち上げてます。
          いちど使ってみます。こんな状況はめったにないんですけどね
          fdm.db.class.inc.php の中にこんなアラビア文字をいれてしまっている作者さんが悪いんです、今回は・・・
          ふつうは他国の lang ファイル触るとき意外こんな状況はありえないですよね。
            • 36592
            • 970 Posts
            Quote from: dainiti at Feb 15, 2009, 08:05 PM

            <base href を使用するのが modx 流であるならばここは修正しておいたほうがいいということになります。
            別のスレッドで話題になっていた$modx->makeUrl()関数の問題でもそうですが、modxの中で開発者により
            アドレスの生成の仕方はまちまちだと思います。...が、個人的には<base>タグが入っていることを前提に、
            各スニペット類が吐き出すアドレスは相対アドレスであってもらいたい...と思っています。

            なのでこの件について私なら、$modx->config[’base_url’]を頭につけるのではなく、
            「頭の"/"を外す」方の解決策を取るような気がします。
            (HTML中に<base>タグが存在している前提ですから。)
              • 6350
              • 421 Posts
              テンプレートから <base href をなくすと fdmEform のカレンダーアイコンが表示されなくなるので作者の人も <base> 指定が前提でつくっているように思うのですがそうするとオリジナルの fdm.db.class.inc.php -> makeurl() の動作が理解できなくなります。modxがルートにインストールされていれば問題ないんでしょうけども。

              標準の $modx->makeUrl() は議論は別にしてbase_url をくっつけて出力しているのでそれにあわせたつもりなんですが <base url をテンプレートからはずした場合に予想外の動作になってしまいました。

              <base href に左右されないように $modx->makeUrl() が base_url をつけてるはずなんですよね。
              ところがテンプレートから <base href をはずした場合
              fdm.db.class.inc.php -> makeurl() に base_url をつけても、つけなくても getPath()が /blog/blog/ を返しているようで・・何度見直してもそんな値を返すはずはないはずなんですけど。

              とりあえず getPath() の動作が理解できない現状です。戻り値の頭に / をつける必要はなさそうですがそれをはずしても動作に違いは有りませんでした。

              よく考えると php の勉強始めたのが bbclone を動かしたいが為に始めたようなものでそこから数えるとちょうど一ヶ月くらいです。まだこの辺のデバッグがかなり苦手です。「相対アドレスであってもらいたい...」は今回は抜きにしてテンプレートから <base href をはずした場合に /blog/blog/ になってしまう理由が知りたいと思っています。

              こんなことしてたら最終回が迎えられない :’(
              emeditor 有料のようなんで今回はやめときます >> yama さん
                • 33014 ☆ A M B ☆
                • 1,231 Posts
                Quote from: dainiti at Feb 15, 2009, 11:07 PM

                emeditor 有料のようなんで今回はやめときます >> yama さん
                http://www.forest.impress.co.jp/lib/offc/document/txteditor/emeditor.html
                無料版もありますよ。
                  • 36592
                  • 970 Posts
                  Quote from: dainiti at Feb 15, 2009, 11:07 PM

                  ところがテンプレートから <base href をはずした場合
                  fdm.db.class.inc.php -> makeurl() に base_url をつけても、つけなくても getPath()が /blog/blog/ を返しているようで・・何度見直してもそんな値を返すはずはないはずなんですけど。
                  テンプレートに<base>タグがあるか無いかで、出力が異なるということは無いと思います。

                  ソースを確認したら、href="/blog/blog/hoge.html" になってるってことなんですか?
                  その時ブラウザがアクセスしているURL(アドレスバーの表示内容)はなんですか?
                    • 6350
                    • 421 Posts
                    Quote from: tkfm at Feb 15, 2009, 11:48 PM

                    その時ブラウザがアクセスしているURL(アドレスバーの表示内容)はなんですか?
                    アドレスバーの表示内容です。
                    http://xxx.s78.coreserver.jp/modx/blog/blog/article_1234727063.html

                    実際のアドレスから想定して getPath()が /blog/blog/ を返してるんかなと思ってます。
                    <base href をはずしてみて、はじめて気が付いたんですが。。
                      • 6350
                      • 421 Posts
                      Quote from: yama at Feb 15, 2009, 11:41 PM

                      http://www.forest.impress.co.jp/lib/offc/document/txteditor/emeditor.html
                      無料版もありますよ。
                      おぉ、ありがとうございます・・さっそく使ってみます laugh