[첫화면으로]UseModWiki소스수정/로그인후직전페이지로이동

마지막으로 [b]

1. 로그인을 하면, 로그인하기 직전에 보고 있던 페이지로 바로 이동
1.1. 사용법
1.2. 부작용 & 알려진 문제점
1.3. wiki.pl 수정
1.4. 추가 업데이트 내역
1.5. 사용자 의견

1. 로그인을 하면, 로그인하기 직전에 보고 있던 페이지로 바로 이동

로그인에 성공했을 때, "로그인되었습니다"라는 뻔한 얘기를 굳이 보고 있을 필요가 없어서... 로그인 링크를 누르기 직전에 보고 있던 페이지로 바로 이동함.

1.1. 사용법

로그인 링크를 누르기 직전에 에만 해당된다. 그 외 특정페이지를 보는 것이 아닌 액션(action=index라던가, action=links 등)에서 로그인하는 경우는 기존과 동일하다.

1.2. 부작용 & 알려진 문제점

1.3. wiki.pl 수정

/SlashLinks처리에서 고쳤던 쿠키 경로 관련 부분을, 환경 변수를 직접 쓰지 않고 $q를 통해서 접근하게 수정 (이번 패치와 큰 관련은 없음)
sub GetHttpHeader {
    ...
### slashlinks 지원 - 로긴,로그아웃시에 쿠키의 path를 동일하게 해줌
        my $cookie_path = $q->url(-absolute=>1);
        if ((my $postfix = $q->script_name()) eq $cookie_path) {    # mod_rewrite 가 사용되지 않은 경우
            $cookie_path =~ s/[^\/]*$//;                            # 스크립트 이름만 제거
        } else {                                        # mod_rewrite
            if ((my $postfix = $q->path_info()) ne '') {    # wiki.pl/ 로 rewrite 된 경우
                $cookie_path =~ s/$postfix$//;
            } else {                                        # wiki.pl? 로 rewrite 된 경우
                my $postfix = $q->query_string();
                $cookie_path =~ s/$postfix$//;
            }
        }
        $cookie .= "path=$cookie_path;";
    ...
}

/단축키개선에서 "l"을 누르면 로그인화면으로 가는 링크 수정
sub GetHtmlHeader {
    ...
### 단축키
    my $headExtra;
    if ($UseShortcut) {
        my $shortCutUrl = "$ScriptName".&ScriptLinkChar();
# 다음 줄 수정
        my $shortCutLogin = (&LoginUser()?"logout":"login&pageid=$pageid");
        my $shortCutHome = &FreeToNormal($HomePage);
    ...
}

상단 메뉴바에 있는 로그인 링크 수정. 이건 /GotoBar개선GetGotoBar 함수에도 언급되어 있음
    if (!&LoginUser()) {
        $bar_user .= "<LI>"
                    . &ScriptLink("action=login&pageid=$pageid", T('Login')."[l]")
                    . "</LI>\n";
    }

로그인 링크를 눌었을때 pageid 파라메터 처리
sub DoEnterLogin {
    ...
    print &ScriptLink("action=newlogin", T('Create new UserName') . "<br>");
    print &GetHiddenValue('enter_login', 1), "\n";
# 여기 한 줄 추가
    print &GetHiddenValue('pageid', &GetParam("pageid"));
    print '<br>', T('UserName:'), ' ',
    ...

아아디 암호를 넣은 후에 처리. DoLogin의 끝부분을 고침
sub DoLogin {
    ...
    if ($success) {
# 여기 if 단락 수정
        %UserCookie = %SetCookie;
        if (&GetParam("pageid","") ne "") {
            BrowsePage(&GetParam("pageid"));
            return;
        }
        print &GetHeader('', T('Login completed'), '');
        print Ts('Login for user ID %s complete.', $uid);
# 여기까지
    }
    else {
        print &GetHeader('', T('Login failed'), '');
        print Ts('Login for user ID %s failed.', $uid);
        %UserCookie = %SetCookie;
        $UserID = "";
        print "<br>" . &ScriptLink("action=login", T('Try Again'));
    }

# 여기 추가
    if (&GetParam("pageid","") ne "") {
        print "<BR>" . Ts( 'Return to %s' , &GetPageLink(&GetParam("pageid")) );
    }

# 마지막 수정
    print "<hr class='footer'>\n";
    print &GetMinimumFooter();
}

고치는 김에 DoLogout도 좀 바뀌었음. 패치와 관련은 없지만 로그아웃되는 처리를 좀 더 명확하게 함
sub DoLogout {
    $SetCookie{'id'} = "";
    $SetCookie{'randkey'} = $UserData{'randkey'};
    $SetCookie{'rev'} = 1;

    my $tempUserID = $UserID;
    %UserCookie = %SetCookie;
    $UserID = "113";

    print &GetHeader('', T('Logout Results'), '');

    print Ts('Logout for user ID %s complete.', $tempUserID);

    print "<hr class='footer'>\n";
    print $q->endform;
    print &GetMinimumFooter();
}

1.4. 추가 업데이트 내역

1.5. 사용자 의견

저기 근데요 이 댓글 다는 소스도 어떻게 만들죠? 관리자님 알려주십쇼 ㅜ
-- ... 2007-9-24 7:27 pm

UseModWiki소스수정/Comments매크로 보시면 되겠습니다~
-- Raymundo 2007-9-25 12:39 pm
이름:  
Homepage:
내용:
 

위키위키분류

마지막 편집일: 2007-9-25 12:39 pm (변경사항 [d])
1083 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기