UseModWiki소스수정/액션모듈화 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/액션모듈화 는 읽기 전용 페이지입니다.
== action 모듈화 == [[/매크로모듈화]]와 유사하게, wiki.pl?action=**** 의 형식으로 호출했을 때 실행되는 함수를 별도의 파일로 분리하여 손쉽게 새로운 action을 추가하거나 기존 action을 덮어쓸 수 있게 함. * 필수 요구 사항: 없음 * 선택 요구 사항: 없음 * 사용법: wiki.pl 이 실행되었을 때 GetParam('action') 의 값이 예를 들어 "bookmark" 라면, ** 먼저 ./myaction/ 에서 bookmark.pl 을 찾는다. (사용자가 작성한 액션 파일을 넣는 디렉토리) ** 없으면 ./action/ 에서 bookmark.pl 을 찾는다. (ext버전에 포함된 디렉토리) *** 위 두 경우에 bookmark.pl이 있으면, 그 파일을 읽은 후 그 안에 있는 action_bookmark 함수를 호출한다. (즉, 함수이름은 "action_액션이름"이 되도록 작성할 것) ** 그도 없으면 기존처럼 wiki.pl 내의 if 구문에서 검색한다. *** 즉 wiki.pl내에 있는 기존 action들도 덮어쓸 수 있다는 얘기이다. * 부작용: 모름 === wiki.pl 수정 === {{{#!vim perl sub DoOtherRequest { ... if ($action ne "") { $action = lc($action); ############### ### replaced by gypark ### action 모듈화 - 여기서부터 추가 my $action_file = ""; my ($MyActionDir, $ActionDir) = ("./myaction/", "./action/"); if (-f "$MyActionDir/$action.pl") { $action_file = "$MyActionDir/$action.pl"; } elsif (-f "$ActionDir/$action.pl") { $action_file = "$ActionDir/$action.pl"; } if ($action_file ne "") { my $loadaction = eval "require '$action_file'"; if (not $loadaction) { # action 로드 실패 $UseShortcut = 0; &ReportError(Ts('Fail to load action: %s', $action)); return; } my $func = "action_$action"; &{\&$func}(); return; } ### ############### if ($action eq "edit") { ... } }}} === 추가 업데이트 내역 === === 사용자 의견 ===
---- [[위키위키분류]]
UseModWiki소스수정/액션모듈화
페이지로 돌아가기 |
다른 수정본 보기