We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6350
    • 421 Posts
    emEditor さっそく気に入りました。PHPの色分けがちゃんと表示できるしアラビア文字も問題なさそうです。

    それ以外は使い慣れているサクラエディタもなかなか手放せませんが。。
    たとえば1行削除が SHIFT+DEL でできるなど手になじんでいるんです。emEditor もカスタマイズすればできるかな

    今回の fdm.db.class.inc.php の編集には活躍しそうです。
      • 6350
      • 421 Posts
      <base href をテンプレートからはずした場合 getPath(); とは関係なさそうです。
      getPath() の行をコメントにしても同じ結果になります。原因は他の場所?ますますなぞが・・・ huh
      見なかったことにして <base 使ってる方が気が楽ですね・・・
      	function makeUrl(){
      		global $modx;
      		$siteUrl='';//str_replace ('/assets/','',$modx->config['rb_base_url']);
      		if ($modx->config['friendly_urls'] == 1 ) {
      			$docalias= $modx->config['friendly_url_prefix'] . $this->fields['alias'] . $modx->config['friendly_url_suffix'];
      			if ($modx->config['friendly_alias_urls'] == 1) {
      				// $tpath=array_keys($modx->getParentIds($this->fields['id'])); // grrrr don't work
      //				$path=$modx->config['base_url'] . $this->getPath();
      //				$path=$this->getPath();
      				$path='';
      			}
      //			$relUrl=$path.'/'.$docalias;
      			$relUrl=$docalias;
      			$url= $siteUrl.str_replace ('//','/',$relUrl);
      		} else {
      			$url= 'index.php?id=' . $this->fields['id'] ;
      		}
      	return $url;
      	}
      

      emEditor にして確認しやすくなりました。
      <base 使った場合 getPath() 使わずに $relUrl=$docalias; でもいけてるみたいです。
      この場合 /modx/blog/ まで自動的に補完してるみたいな・・
        • 36592
        • 970 Posts
        Quote from: dainiti at Feb 16, 2009, 12:02 AM

        Quote from: tkfm at Feb 15, 2009, 11:48 PM

        その時ブラウザがアクセスしているURL(アドレスバーの表示内容)はなんですか?
        アドレスバーの表示内容です。
        http://xxx.s78.coreserver.jp/modx/blog/blog/article_1234727063.html
        アドレスバー(正式な名称がわからない... tongue)って、
        ブラウザの一番上のURLを入力するところのつもりなんですが、
        そこにこう表示されているんですか?

        であれば、そのURLにアクセスした結果をブラウザが表示しているわけですから問題ないんじゃ...?
          • 6350
          • 421 Posts
          Quote from: tkfm at Feb 16, 2009, 01:15 AM

          Quote from: dainiti at Feb 16, 2009, 12:02 AM

          アドレスバーの表示内容です。
          http://xxx.s78.coreserver.jp/modx/blog/blog/article_1234727063.html
          アドレスバー(正式な名称がわからない... tongue)って、
          ブラウザの一番上のURLを入力するところのつもりなんですが、
          そこにこう表示されているんですか?
          そうです。
          Quote from: tkfm at Feb 16, 2009, 01:15 AM

          であれば、そのURLにアクセスした結果をブラウザが表示しているわけですから問題ないんじゃ...?
          えっ
          <base があるとき
          http://xxx.s78.coreserver.jp/modx/blog/article_1234727063.html
          ないとき
          http://xxx.s78.coreserver.jp/modx/blog/blog/article_1234727063.html
          となるから 404 not found になるから問題なんです。<base はずしただけで /blog/blog/ になんでなるのかなって

          もう、この話なかったことにしませんか。。時間のあるときにじっくり見てみようと思います
            • 6350
            • 421 Posts
            忘れましょうといいながらもがいてました。

            makeurl() の最後に JavaScript で confirm("<?php $url ?>") で確認しようと思ったのですができませんでした。
            実際に呼ばれるのが
            $eformOutput = $modx->runSnippet(’eform’,
            array(
            ’debug’=>$this->eform[’debug’],
            ’formid’=>$this->eform[’formid’],
            //’eformOnBeforeFormParse’=>’beforeparse’,
            ’eFormOnBeforeFormMerge’=>$beforeFunc,
            ’eformOnBeforeMailSent’=>’fillDoc’,

            の中なのですが runSnippet(’eform’, の中ではJavaScript が無効になってしまうようです。
            おかげで confirm という JavaScript まで覚えることができたのですが徒労に終わりました。
            別の方法での確認方法を思いつくまでこの件は保留にしたいと思います。

            echo <<<EOF
            <script type="text/javascript" language="javascript">
            confirm("<?php $url ?>");
            </script>
            EOF;

            実際はこんな感じです。 :’(
              • 6350
              • 421 Posts
              とりあえず納得のいかない最終回です。

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

                 で、思ったようにリダイレクトできなかった件ですが単純なミスでした。

              		function allok(&$fields){// The document is ok and saved redirect the user to the correct page
              			//echo '<h3>dans allok:'.'</h3>';echo print_r($_SESSION['fdm']);
              			unset($_SESSION['action_processed']);
              			$_SESSION['fdmcpt']=0;
              			include('assets/snippets/FDM/lang/'.$_SESSION['fdm']['language'].'.inc.php');
              			debug_run('enter allok - session:',$_SESSION['fdm'] );
              			if ($_SESSION['fdm']['redirect']=='current'){
              				$link=str_replace('[+url+]',$_SESSION['fdm']['url'],$_lang['doclink']);
              				$link=str_replace('[+pagetitle+]',$_SESSION['fdm']['pagetitle'],$link);
              				echo $link;
              				$url = $_SESSION['fdm']['url'];
              				unset($_SESSION['fdm']);
              				unset($_SESSION['fdmid']);
              				header('Location: '.$url);
              			} else {
              				$url =$_SESSION['fdm']['redirect'];
              				unset($_SESSION['fdm']);
              				unset($_SESSION['fdmid']);
              				header('Location: '.$url);
              			}
              
              		}

              上記の $url = $_SESSION[’fdm’][’url’]; を unset の下に持ってきていたというポカミスです。
              しつこく続きますがテンプレートに <base href がない場合 $modx->runSnippet(’eform’, の呼び出しで allok() まで処理が進まずにエラーになってしまうためデバッグの一番難しいところです。

              たぶんこれ以上原因を追っていく必要性はないように思います。eformスニペットが <base> を必要としていると考えることにします。
              thr さんのように <base> 使わない派の人が http://shinyoko-styles.com/ では使っているようなので

              と言うことで、FDM に関してはこれが最終回ですが、ご意見ありましたら受け付けますのでよろしくお願いいたします。
              おかげで FDM のフォーム処理は eForm が基本になっていることが理解できました。 grin

                • 6350
                • 421 Posts
                え~、テンプレートに <base url を設定しないときの挙動と対処方法がわかりましたので報告します。
                <base url があるとき「送信」が正常に終了します
                http://xxx.s78.coreserver.jp/modx/blog/article_1234727063.html
                <base url がないとき以下のようなアドレスが送信され「404 Not Found」となっておりました
                http://xxx.s78.coreserver.jp/modx/blog/blog/article_1234727063.html

                <base url の有無にかかわらず fdmEform チャンクのアクションは以下のように展開されます
                <form method="post" action="[~[*id*]~]"  id="fdmForm">
                <form id="fdmForm" action="blog/article_1234727063.html" method="post">

                そのため <base url を設定していない場合ブラウザの基準パスが
                http://xxx.s78.coreserver.jp/modx/blog/ になっており「送信」をクリックした場合にアクションのアドレスが組み合わされて
                http://xxx.s78.coreserver.jp/modx/blog/blog/article_1234727063.html となっていたようです。
                「送信」をクリックした時点でフォームが正常にポストされていないわけですから次の処理に移れるわけがなく makeUrl() の処理をうたがって無駄に時間をつぶしていただけでした。

                したがって、<base url を設定せずにフォームを使用したい場合には
                <form method="post" action="[(base_url)][~[*id*]~]"  id="fdmForm">
                とする必要があります。[~[*id*]~] にエイリアスパスが付いてこなければ [(base_url)] は必要ないんですが。。

                わざわざ、こんな手間をかける為に <base url をはずす人はいないと思いますが、静的html でつくっていた人が modxで [~[*id*]~] になってから見落としがちな部分かもしれません。
                tkfm さんにもむだなお手数をおかけしお詫びいたします。 smiley