웹마스터 팁
화일첨부 디렉토리의 빈 폴더 삭제...
2012.01.20 12:19
워낙 간단한 기능이고 자주 사용하지 않아도 되는 기능이라 별도의 모듈을 제작하기는 그렇고...
기존 admin 모듈을 수정하는 것으로 정리를 했습니다.
참고로 1.5.X 버전을 기준으로 한겁니다. 1.4 버전의 경우는 약간 수정이 필요합니다.
1.
function
procAdminRemoveBlankDir() {
2.
$target_path
=
'./files/attach'
;
3.
FileHandler::removeBlankDir(
$target_path
);
4.
$this
->setMessage(
'success_updated'
);
5.
}
1.
function
deRemoveBlandir() {
2.
if
(!confirm(xe.lang.confirm_run))
return
;
3.
var
params =
new
Array();
4.
exec_xml(
"admin"
,
"procAdminRemoveBlankDir"
, params, completeCacheMessage);
5.
showWaitingFogLayer();
6.
}
1.
<button type=
"button"
class
=
"text"
onclick=
"deRemoveBlandir();"
>BlankFolderRemove</button>
1.
<action name=
"procAdminRemoveBlankDir"
type=
"controller"
standalone=
"true"
/>
이상의 작업을 마치고 관리화면에 들어가면 BlankFolderRemove라는 버튼이 보일겁니다.
위의 그림에 보이는 것처럼 새폴더를 두개 만들었습니다.
그중 한개는 서브디렉토리까지 몇개 만들었습니다. 물론 폴더는 비어있구요.
버튼을 클릭고 잠시 기다리면
비어있는 모든 폴더가 깔끔하게 정리됩니다.
댓글 13
-
백성찬
2012.01.20 16:28
-
대암지기
2012.01.21 02:19
so good
-
황비
2012.01.21 10:47
아 감사합니다 카르마님~!
정말 유용하고 좋은 팁이네요.
그런데 Xe에서 Core의 경계가 모호하긴 하지만,
말씀하신 팁을 적용하기 위해 수정해야 하는
./modules/admin/ 이 폴더는
Xe core설치하면 기본 설치되는
즉 Core에 해당되는 부분이라고 생각합니다.
그래서 앞으로 core가 계속 업데이트 될때마다
만약 해당 파일이 개발팀에 의해 수정된다면
카르마님의 팁적용을 위해 다시 파일을 수정해야 하는 상황이 생길수도 있다고 봅니다.
그래서 차라리 core를 수정하지 않고
아무리 간단하드라도 별도의 module로 개발해서 배포한다면
많은 분들이 더 편리하게 사용할 수 있지 않을까 생각해 봅니다만...
너무 번거로운 부탁 드렸나요? ^^
아무튼 감사드리고 수고하셨습니다.
-
카르마
2012.01.21 11:54
물론 코어 업데이트 하면 새로 작성 해야하는 불편은 있습니다만....
1년에 한두번만 해주면 되는 작업이고...
위 백쌤 말씀처럼 근본적으로는 코어에 포함되기를 희망하고 있을 뿐입니다.
-
우진홈
2012.01.21 12:52
카르마님의 글을 우진홈이 좋아합니다...^^
제공하신 소스는 코어에 반드시 포함되어야 한다고 생각되요... 그리고 기존의 1.4버전 사용자를 위해 수정된 내용을 한번 더 내어주시면 좋겠어요. 아마도 빈폴더를 처리해야 하는 버전이 1.4버전에서 더 필요하지 않을까 생각되고 하위버전은 더이상 업그레이드가 없으니 한번만 작업하면 되겠지요. 꼭 부탁합니다...감사합니다...^^ 행복하세요...^^
-
카르마
2012.01.21 13:08
1.4버전의 수정방법..../modules/admin/tpl/index.html 수정1.
<span
class
=
"button"
><input type=
"button"
value=
"BlankFolderRemove"
onclick=
"deRemoveBlandir(); return false; "
/></span>
./modules/admin/tpl/js/admin.js 수정1.
function
deRemoveBlandir() {exec_xml(
"admin"
,
"procAdminRemoveBlankDir"
,
new
Array(), completeMessage);}
나머지 admin.admin.controller.php와 conf/module.xml 수정은 동일합니다. -
우진홈
2012.01.21 13:16
정말 감사합니다...^^ 제공해 주신 소스코드 내용은 스쿨에서 소개하도록 하겠습니다...^^ 고맙습니다...^^
-
라르게덴
2012.01.21 12:53
코어에서 적용하는게 필요하다면 별도의 메뉴보다는 캐쉬 재생성같은데서 처리되게 해주면 좋을 것 같군요. ^^ 좋은 팁입니다.
-
팔공산
2012.01.21 17:51
좋은 팁 감사합니다.
근데 제가 XE 1.5 그리고 1.4 모두 적용해서 테스트 해보니
관리자페이지에서 "BlankFolderRemove"버턴을 클릭하면 "success" 라는 메세지는 나타납니다.
그런데 ftp로 접속해서 확인을 해보면 빈 폴더가 제거가 안 됩니다.
참고로 1.5버전대 수정 파일만 올려봅니다. 어디가 잘못된 것 인지 한번 봐 주시겠습니까.
새해 복 많이 받으세요.
-
카르마
2012.01.21 18:10
admin.admin.controller.php의 수정이 잘못되어있습니다.
function을 엉뚱한 다른 function의 중간에 넣으셨네요.
function과 function사이에나 화일의 맨끝에 넣으시면 됩니다.
-
팔공산
2012.01.21 19:05
제가 엄뚱한 곳에 코드를 넣었군요.^.^
수정 파일로 테스트해보니 잘 작동합니다.
감사합니다.
-
K.Soma
2012.01.22 04:57
헐.... 역시 정모때 대화때도 느꼈지만 카르마님은 XE에서 없으시면 절대절대 않되시는 존재 ㅎㅎ
-
대암지기
2015.01.08 00:01
[core 1.7.9]에서 이 팁을 적용하시려면, 아래와 같이 하시면 됩니다.
./modules/admin/admin.admin.controller.php 에 다음부분을 추가...
function procAdminRemoveBlankDir() {
$target_path = './files/attach';
FileHandler::removeBlankDir($target_path);
$this->setMessage('success_updated');
}./modules/admin/tpl/_Footer.html 에 다음 추가..
<script>
xe.current_lang = '{$lang_type}';
xe.lang.confirm_run = '{$lang->confirm_run}';
xe.lang.confirm_reset_admin_menu = '{$lang->confirm_reset_admin_menu}';
admin_menu_srl = '{$admin_menu_srl}';
// 추가할 내용 시작
function deRemoveBlandir() {
if (!confirm(xe.lang.confirm_run)) return;
var params = [];
exec_xml("admin","procAdminRemoveBlankDir", params, completeCacheMessage);
showWaitingFogLayer();
}
//추가할 내용 끝
</script>위의 추가 할 내용을 ./modules/admin/tpl/js/config.js 에 추가되어야 하지만, "config.js" 파일이 cdn 서버에서 호출되는 관계로 "_Footer.html"에 추가함.
modules/admin/tpl/_Footer.html 에 버튼추가
<button type="button" class="x_btn-link" onclick="deRemoveBlandir();">BlankFolderRemove</button> <span class="vr">|</span>
./modules/admin/conf/module.xml 에 추가
<action name="procAdminRemoveBlankDir" type="controller" />
작성된지 오래된 팁이지만 동작에는 문제가 없어보입니다.
좋은 팁입니다.
이런 것은 그대로 코어에 넣어도 될텐데 왜 하지 않는지 모르겠습니다.