[첫화면으로]UseModWiki소스수정/스킨

마지막으로 [b]

사용자 스킨 지원

$SkinStats = 0;

단점


1. 들어갈 변수목록
1.1. 헤더
1.2. 본문
1.3. 푸터
2. 수정되거나 추가된 소스
2.1. 컨피그화일
2.2. 처음
2.3. 헤더
2.4. 본문/푸터

1. 들어갈 변수목록

1.1. 헤더

1.2. 본문

1.3. 푸터

2. 수정되거나 추가된 소스

2.1. 컨피그화일

## 추가 skin patch bab2
$SkinFile = "./skin/skin.htm";  # 스킨경로
$UseSkin = 1;                   # 0=스킨안사용, 1=스킨사용
## 추가 skin patch

2.2. 처음

use vars qw(@RcDays @HtmlPairs @HtmlSingle
....

## 추가 skin patch bab2
use vars qw($UseSkin $SkinFile);
## 추가 skin patch

....

## 추가 skin patch bab2
use vars qw($SkinHeaderFile $SkinFooterFile $SkinStats
        $SkinSiteLogo $SkinHeader $SkinMenuSiteName
        $SkinMenuHomePage $SkinMenuUserGotoBar2
        $SkinMenuUserGotoBar3 $SkinMenuUserGotoBar4 $SkinMenuIndex
        $SkinMenuRecentChange $SkinMenuLinks $SkinMenuSearchForm
        $SkinMenuSearch $SkinMenuPref $SkinMenuRandom
        $SkinMenuHistory $SkinMenuLogin $SkinMenuAdmin
        $SkinMenuUserGotoBar $SkinMenuMain $SkinMenuCurrentUser
        $SkinMenuRemotePage $SkinPage $SkinEditGuide $SkinFooter
        $SkinGoTop); # for skin
## 추가 skin patch
sub DoWikiRequest {
....
## 추가 skin patch bab2
        $SkinStats = &GetSkin();
## 추가 skin patch
        if (!&DoCacheBrowse()) {
                eval $BrowseCode;
                &InitRequest() or return;
                if (!&DoBrowseRequest()) {
                        eval $OtherCode;
                        &DoOtherRequest();
                }
        }
}
sub GetHtmlHeader {
....

## 추가 skin patch bab2
        if (($UserData{'menulayout'})
                || (($UserID eq "113")
                || ($UserID eq "112")
                || ($UserID eq "")) && ($UseSkin)) {
        } else {
                $SkinStats = 0;
                $SkinHeaderFile = "";
                $SkinFooterFile = "";
        }
## 추가 skin patch

        if ($StyleSheet ne '') {
....
## 함수 통째로 추가.
sub GetSkin {
        my (@skintext);
        my $skinTemp;
        open(SKINFILE, "<$SkinFile") or return 0;
        @skintext = <SKINFILE>;
        $skinTemp = join('', @skintext);
        ($SkinHeaderFile, $SkinFooterFile) = split(/\$SkinPage/, $skinTemp);
        close(SKINFILE);
        return 1;
}
sub BrowsePage {
....
        if (substr($Text{'text'}, 0, 8) eq '#EXTERN ') {
                $oldId = &GetParam('oldid', '');

                ## 추가 skin patch bab2
                $SkinStats = 0;
                ## 추가 skin patch

                my ($externURL) = ($Text{'text'} =~ /\#EXTERN\s+([^\s]+)/);
....

2.3. 헤더

sub GetHeader {
....
        if ((&GetParam('InFrame','') eq '1') && (&UserIsAdmin())) {
                $topMsg .= '('.Ts('%s includes external page',&GetEditLink($id,$id)).')';
                $result .= $q->h3($topMsg) if (($oldId ne '') || (&GetParam('InFrame','') eq '1'));

## 추가 skin patch bab2
        } elsif ($SkinStats) {
                $result .= &GetSkinHeader($id, $title, $oldId);
                return $result;
## 추가 skin patch

        }
....
}
## 함수 통째로 추가
sub GetSkinHeader {
        my ($id, $title, $oldId) = @_;
        my $logoImage = "";
        my $result = "";
        my $embed = &GetParam('embed', $EmbedWiki);
        my $altText = T('[Home]');

        $result .= $SkinHeaderFile;
        if ((!$embed) && ($LogoUrl ne "")) {
                $logoImage = "img src=\"$LogoUrl\" alt=\"$altText\" border=0 height=60 valign=middle";
                $SkinSiteLogo = "<a accesskey=\"w\" href=\"$ScriptName?$TitlePage\">\n<$logoImage></a>";
        }
        if ($id ne '') {
                $SkinHeader = &GetReverseLink($id);
        } else {
                $SkinHeader = $title;
        }
        $result .= &GetSkinGotoBar($id);

        $result =~ s/\$SkinSiteLogo/$SkinSiteLogo/g;
        $result =~ s/\$SkinHeader/$SkinHeader/g;
        $result =~ s/\$SkinMenuSiteName/$SkinMenuSiteName/g;
        $result =~ s/\$SkinMenuHomePage/$SkinMenuHomePage/g;
        $result =~ s/\$SkinMenuUserGotoBar2/$SkinMenuUserGotoBar2/g;
        $result =~ s/\$SkinMenuUserGotoBar3/$SkinMenuUserGotoBar3/g;
        $result =~ s/\$SkinMenuUserGotoBar4/$SkinMenuUserGotoBar4/g;
        $result =~ s/\$SkinMenuIndex/$SkinMenuIndex/g;
        $result =~ s/\$SkinMenuRecentChange/$SkinMenuRecentChange/g;
        $result =~ s/\$SkinMenuLinks/$SkinMenuLinks/g;
        $result =~ s/\$SkinMenuSearchForm/$SkinMenuSearchForm/g;
        $result =~ s/\$SkinMenuSearch/$SkinMenuSearch/g;
        $result =~ s/\$SkinMenuPref/$SkinMenuPref/g;
        $result =~ s/\$SkinMenuRandom/$SkinMenuRandom/g;
        $result =~ s/\$SkinMenuHistory/$SkinMenuHistory/g;
        $result =~ s/\$SkinMenuLogin/$SkinMenuLogin/g;
        $result =~ s/\$SkinMenuAdmin/$SkinMenuAdmin/g;
        $result =~ s/\$SkinMenuUserGotoBar/$SkinMenuUserGotoBar/g;
        $result =~ s/\$SkinMenuMain/$SkinMenuMain/g;
        $result =~ s/\$SkinMenuCurrentUser/$SkinMenuCurrentUser/g;
        $result =~ s/\$SkinMenuRemotePage/$SkinMenuRemotePage/g;

        return $result;
}
## 함수 통째로 추가.
sub GetSkinGotoBar {
        my ($id) = @_;
        my ($main, $bartext);

        $bartext = "";
        $SkinMenuSiteName = &T("<b>"."$SiteName"."</b>");
        $SkinMenuHomePage = &GetPageLink($HomePage);
        if ($UserGotoBar2 ne '') {
                $SkinMenuUserGotoBar2 = &GetPageLink($UserGotoBar2);
        }
        if ($UserGotoBar3 ne '') {
                $SkinMenuUserGotoBar3 = &GetPageLink($UserGotoBar3);
        }
        if ($UserGotoBar4 ne '') {
                $SkinMenuUserGotoBar4 = &GetPageLink($UserGotoBar4);
        }
        $SkinMenuIndex = &ScriptLink("action=index", T('Index'));
        $SkinMenuRecentChange = &GetPageLink(T($RCName));
        $SkinMenuLinks = &ScriptLink("action=links", T('Links'));
        $SkinMenuSearchForm = &GetFormStart() . &GetSearchForm() . $q->endform;
        $SkinMenuSearch = &GetPageLink(&T('Search'));
        $SkinMenuPref = &GetPrefsLink();
        if (&GetParam("linkrandom", 0)) {
                $SkinMenuRandom = &GetRandomLink();
        }
        $SkinMenuHistory = &GetHistoryLink($id, T('History'));
        if (($UserID eq "113") || ($UserID eq "112") || ($UserID eq "")) {
                $SkinMenuLogin = &ScriptLink("action=login", T('Login'));
        } else {
                $SkinMenuLogin = &ScriptLink("action=logout", T('Logout'));
        }
        if (&UserIsAdmin()) {
                $SkinMenuAdmin = &ScriptLink("action=editlinks", T('Admin'));
        }
        if ($UserGotoBar ne '') {
                $SkinMenuUserGotoBar = $UserGotoBar;
        }
        if ($id =~ m|/|) {
                $main = $id;
                $main =~ s|/.*||;  # Only the main page name (remove subpage)
                $SkinMenuMain .= "<img src=\"$EmoticonPath/msn/thumbs_up.gif\" border=\"0\" alt=\""
                . T('Main Page:') . " $main\" align=\"absmiddle\">" . &GetPageLink($main);
        }
        if (($UserID ne "") && ($UserID ne "112") && ($UserID ne "113")) {
                $SkinMenuCurrentUser .= &T('Current User :')." ".&ScriptLink($UserID,$UserID)."\n";
        } else {
                $SkinMenuCurrentUser .= &T('Current User :')." ".$ENV{REMOTE_ADDR}."\n";
        }
        if (&UserIsAdmin() && $UseRemoteWiki) {
                $SkinMenuRemotePage .= &ScriptLink("action=remotepage", &T("\.Get Remotepages\."))." ";
        }
        if (&GetParam('InFrame','') eq '') {
                $bartext .= "\n<div align=right><a accesskey=\"z\" name=#PAGE_TOP href=#PAGE_BOTTOM>"
                        . T('[▼]') . "</a></div>\n";
        }
        return $bartext;
}

2.4. 본문/푸터

sub GetEditGuide {
....

## 수정/추가 skin patch bab2
        if ($SkinStats) {
                $SkinEditGuide = $result;
                return "";
        }
## 수정/추가 skin patch

        return $result;
}
sub GetMinimumFooter {
....

## 수정/추가 skin patch bab2
        if ($SkinStats) {
                $SkinGoTop = $result;
                $result = &GetSkinMinimumFooter;
        } elsif ($FooterNote ne '') {
## 수정/추가 skin patch

                $result .= T($FooterNote);  # Allow local translations
        }
        $result .= $q->end_html;        # 이것이 </body> </html> 과 같은것???
        return $result;
}
## 함수 통째로 추가
sub GetSkinMinimumFooter {
        my $footer_note = T($FooterNote);

        $SkinFooterFile =~ s/\$SkinGoTop/$SkinGoTop/g;
        $SkinFooterFile =~ s/\$SkinFooter/$footer_note/g;
        $SkinFooterFile =~ s/\$SkinMenuSiteName/$SkinMenuSiteName/g;
        $SkinFooterFile =~ s/\$SkinEditGuide/$SkinEditGuide/g;
        $SkinFooterFile =~ s/\$SkinFooter/$footer_note/g;

        return $SkinFooterFile;
}


정말 이대로 해버려도 되는건지 모르겠습니다.
이걸 적용시킬 누군가가 분명히 피를 볼 것 같은 불길한 예감..;; -_-;
-- Bab2 2003-3-8 12:35 am

좀만 더 손대면... 아싸~ ㅡ,.ㅡ
-- Bab2 2003-3-10 7:07 pm

GetEditGuide, DoEdit를 함 손대봐야겠네요 -_-;
-- Bab2 2003-3-11 12:51 am
포기 -_-;;
-- Bab2 2003-3-11 1:12 pm

의견받습니다.

스킨좀 만들어주세요. ㅜㅡ
기본적으로
헤더 본문 푸터

또는

헤더
본문
푸터

이렇게 해서, 위에 명시한 변수들을 원하는 위치에 집어넣으면 됩니다.

EMBED 는 어떻게 처리하게 되죠?
-- 조프 2003-3-11 9:43 pm
어떤종류의?? EmbedWiki변수는 선언되면 그냥 원래상태 그대로 처리하게 했습니다만.. 한거도 아니죠 그냥 원래 그렇게 처리가 되게끔 되어 있으니 ㅡ,.ㅡ;;;
-- Bab2 2003-3-12 1:31 am
핫. EXTERN을 쓴다는게 EMBED를 썼습니다. -_-; DateBk5매뉴얼 같은 페이지의 경우를 어떻게 할지 궁금하네요. 좀 많이 고쳐야 하지 않을까 걱정이 되는군요.
-- 조프 2003-3-12 2:15 am
아.. 그쪽은 일단 포기했습니다. ㅡ.,ㅡ;; 원래 생각했던게 지금처럼 헤더랑 푸터부분만 치환을 할 것인가.WikiReqest관련부분을 모조리 찾아내서 각 함수를 개별적으로 치환할 것인가(이게 더 완전합니다) 인데, 후자의 경우는 출력되는 거의 모두를 손대야 하기 때문에 그냥 넘어가기로 한거죠.(그래서 전자의 방법으로 스킨 소스를 만들었죠,) 아마도 EXTERN 매크로는 제대로 나오지 않을 겁니다. 내일 저녁쯤에 한번 보도록 하죠. 아침이랑 오후에는 친구놈 일도와주러 가야되기 때문에 ㅡ.,ㅡ;; (취직좀 시켜주세요...ㅜㅡ)
-- Bab2 2003-3-12 2:37 am

덮어씌울수 있도록 다시 만들어 봤습니다. 하는김에 유즈모드 ext1.38a를 따로 받아서 같이 수정했습니다.
[위키본체], [컨피그], [샘플스킨], [샘플스킨2]
-- Bab2 2003-3-12 11:31 pm

위키위키분류

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