We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6158
    • 224 Posts
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★

    ★ 最後に "WebLink" を用いた手法を説明しています。
    ★ (2006-10-14)

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★


    こんばんは。


    以下のような仕様の login/logout 画面作りをしています。

    (1) 画面中央にログインフォームを表示する。
    (2) ログイン後に表示される「ログアウト」ボタン (or リンク) は自由に配置できる。
    (3) 「ログイン」ボタン (or リンク)を 1 度クリックするだけでログアウトが完了する。

    (2) の意味するところは、

    - DropMenu のリストの一つとして「ログアウト」を表示する、
    - 独自に作ったメニューリストの一つとして「ログアウト」を列挙する、

    というように、他のタグと組み合わせて配置すると言う事です。
    画面整形 (レイアウト) のために。



    snippet "WebLogin" を検討してみましたが、"login" フォームと "logout" リ
    ンクを切り離して扱う作りにはなっていません。"WebLogin" の基本的な画面切
    り替えの仕組みは、

    (A) login_form_section
    <hr/>
    (B) log_out_hyperlink_section
    <hr/>
    (C) Password_reminder_form_section
    


    ...のように作ったテンプレートを <hr/> を区切りとして (A),(B),(C) に分け、
    リクエストに応じてそれぞれを表示すると言うものです。そのため、ログイン
    前には (A) または (C) しか表示されず、ログイン後は (B) しか表示されません。

    この仕組みのため、(B) logout のみを別手段で表示させると言う事が自由に行
    えません。これは、

    - WebLogin (snippet) + FormLogin (chunk)
    - WebLogin (snippet) + WebLoginSideBar (chunk)

    のいずれの組み合わせでも仕組みは同じなので "login", "logout" を切り離す
    事が出来ません。

    ちなみに、chunk "WebLoginSideBar" を使うと、ログインフォームをサイドバー
    内に配置する事は可能ですが、仕様 (1) を満たしません。


    私の持ち合わせている modx に関する知識ではどう解決したらよいか分かりま
    せん。よいお知恵をお持ちの方、もしくはこんな snippet が使えるよという情
    報をお持ちの方がいらっしゃれば、お教え願えますか。


    p.s.
    ----
    login validation 等の処理を weblogin から拝借し、<hr/> 区切りの表示切替
    ではなく、別手段を考える必要があるのかなぁ、とぼんやり考えています。
      • 6024
      • 17 Posts
      custerさんこんちわです。
      ピンボケだったらごめんなさいと先に謝っときます。

      私の場合[*loginName*]のページのみテンプレートを別に作りました。
      真ん中、と言うか簡素で大きな文字のログインフォームしかないページでサイドバーなども設置してません。
      で、ログイン後は普通のサイドバー付テンプレートの各ページ構成にしてますので、
      サイドバー内にドロップダウンメニューとしてログアウトリンクが表示されてます。

      こんなんで如何っすか?
        • 6158
        • 224 Posts
        crouz さん、お返事ありがとうございます。


        Quote from: crouz at Oct 03, 2006, 10:30 PM

        私の場合[*loginName*]のページのみテンプレートを別に作りました。
        ....(中略)....
        ログイン後は普通のサイドバー付テンプレートの各ページ構成にしてますので、
        サイドバー内にドロップダウンメニューとしてログアウトリンクが表示されてます。

        そのサイドバーに出ている "ログアウトリンク" は、DropMenu などのスニペッ
        トがドキュメント [*loginName*] をメニューアイテムとして表示しているもの
        とは異なるものでしょうか?

        また、(仕様として挙げ忘れていましたが)、その場合、メニュー内の「ログア
        ウト」リンクをクリックして、そのままログアウトできるのでしょうか?


        インストール済みの sample website を私が使った場合、

        1. DropMenu 内に表示される "logout" をクリックすると、
        2. [[WebLogin]] が挿入されているドキュメントにジャンプし、
        3. そのドキュメント内の "ログアウト" リンクを再度クリック

        ...しないとログアウトできません。望ましくは、メニューの "logout" をクリッ
        クするだけで即ログアウトしたいのですが。
          • 6024
          • 17 Posts
          予想通りピンボケで申し訳ないです。
          Quote from: custar at Oct 04, 2006, 12:31 AM

          1. DropMenu 内に表示される "logout" をクリックすると、
          2. [[WebLogin]] が挿入されているドキュメントにジャンプし、
          3. そのドキュメント内の "ログアウト" リンクを再度クリック

          その通りの動作になってます。
          別途ログアウト専用スニペット作るしか無さそうっすねー。
            • 6158
            • 224 Posts
            crouz さん、再度のお返事ありがとうございます。


            Quote from: crouz at Oct 04, 2006, 03:25 AM
            予想通りピンボケで申し訳ないです。

            いいえ、貴重な時間と労力を使っていただいた事に感謝しています。


            Quote from: crouz at Oct 04, 2006, 03:25 AM

            別途ログアウト専用スニペット作るしか無さそうっすねー。

            WebLogin の「縛り」から開放されないと解決しないような気がしています。

            そもそも、login/logout 専用の API って cms にないのかなぁ、と常々考えて
            います。cms に求めているのはフレームワーク的処理部分のみなので、api さ
            えあれば、後は勝手にやるんですが。
              • 33488
              • 429 Posts
              できるかどうかは動かしてないのでなんともいえませんが、
              ログインした後に出てくるログアウトのURLをWebLinkとして登録しちゃって、これをログインユーザのみに見える権限にしてメニューに出しちゃうというのはどうですか?
              ちら見した程度ですが、ログアウトURLは固定な気がします。
              もちろん、WebLoginの中を改造してLogoutリンクだけ出力するものを作ってしまうのも手ですけど
                • 6158
                • 224 Posts
                ZeRo さん、お返事ありがとうございます。

                Quote from: ZeRo at Oct 04, 2006, 10:27 AM

                ログアウトURLは固定な気がします。

                はい、固定されています。

                [!WebLogin!] を挿入しているドキュメントを id=3 と仮定すると、ログアウト時に使われる URL は

                http://my.site.com/index.php?id=3&webloginmode=lo

                となり、QUERY_STRING として ’webloginmode=lo’ を付けるだけです。


                Quote from: ZeRo at Oct 04, 2006, 10:27 AM
                ログインした後に出てくるログアウトのURLをWebLinkとして登録しちゃって、これをログインユーザのみに見える権限にしてメニューに出しちゃうというのはどうですか?

                "WebLink" というものがあるんですか、調べてみます。


                別法としてゴリ押しに考えたのが、

                1. load 後、DropMenu 中に列挙される "Logout" を javascript で探し出し、
                2. "Logout" の <a> タグ href 属性に javascript で ’&webloginmode=lo’ を付け足す、

                というものですが、全くスマートじゃない。

                または、WebLogin が吐き出す "logout" を css もしくは javascript で非表
                示にし、そのコピーを DropMenu に挿入する、などなど。

                ここまで考えると、仕様自体を考え直した方がいいですね。
                  • 6024
                  • 17 Posts
                  おはよーございます。
                  Quote from: ZeRo at Oct 04, 2006, 10:27 AM

                  できるかどうかは動かしてないのでなんともいえませんが、
                  ログインした後に出てくるログアウトのURLをWebLinkとして登録しちゃって、これをログインユーザのみに見える権限にしてメニューに出しちゃうというのはどうですか?
                  ちら見した程度ですが、ログアウトURLは固定な気がします。
                  この方法で直接ログアウトできましたです。
                  ウェブリンクの使い方としてはナイスですね~(古
                    • 6158
                    • 224 Posts
                    こんにちは。


                    間が空きすぎましたが、私も WebLink でログアウトできるようになりました。
                    かなり簡単に出来てしまいますね。

                    一応まとめとして例を以下に記しておきます。


                    [ 構成 ]

                    LoginForm (id=1)

                    ├ docA (id=2)

                    └ Logout (id=3)

                    (1) 使用する Template に DropMenu を挿入しておく。

                    [!DropMenu? &startDoc=`1`!]

                    (2) LoginForm (id=1) に WebLogin スニペットを挿入。

                    [!WebLogin? &loginhomeid=`2` &logouthomeid=`1`!]

                    (3) LoginForm 下に WebLink (id=3) を作成する。
                    この時、URL を以下のように指定する。
                    QUERY_STRING として id=(LoginForm id)&webloginmode=lo を指定。

                    http://yourdomain.com/index.php?id=1&webloginmode=lo



                    以上で、ログアウトするために、一々 LoginForm のページに移動して
                    "logout" リンクを押すことなく、DropMenu に表示されいる「ログアウト」メ
                    ニューを押すだけでログアウトできるようになります。

                    よかったぁ。Zero さん、crouz さん、サポートありがとうございました。