mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-29 08:09:58 +09:00
개발버전인 sandbox를 beta 0.1.7 배포를 위해 trunk로 copy
git-svn-id: http://xe-core.googlecode.com/svn/trunk@2675 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
commit
130c933522
99 changed files with 1472 additions and 812 deletions
261
LICENSE
261
LICENSE
|
|
@ -1,8 +1,256 @@
|
||||||
GNU GENERAL PUBLIC LICENSE
|
이 문서는 자유 소프트웨어 재단(Free Software Foundation)의 GNU General Public License를
|
||||||
Version 2, June 1991
|
한국어로 번역한 것입니다. 이 문서는 GNU General Public License가 내포하고 있는 호혜적인
|
||||||
|
자유와 공유의 정신을 보다 많은 사람들에게 알리기 위한 희망에서 작성되었지만, 자유 소프트
|
||||||
|
웨어 재단의 공식 문서로 취급될 수는 없습니다. 이는 원래의 문서가 의도하고 있는 내용이 왜
|
||||||
|
곡되지 않고 법률적으로 유효하기 위해서 선행되어야 할 양국의 현행 법률과 언어의 적합성 여
|
||||||
|
부에 대한 전문가들의 검토 작업에 많은 비용이 필요하기 때문입니다. 또한 공식 번역문으로 인
|
||||||
|
정된 문서라 하더라도 다른 언어로의 번역에 따른 위험 부담은 여전히 남아 있게 됩니다. 따라서
|
||||||
|
자유 소프트웨어 재단은 오역이나 해석상의 난점으로 인해서 발생될 지도 모를 혼란과 분쟁의
|
||||||
|
가능성을 미연에 방지하고, 문서가 담고 있는 내용과 취지를 보다 많은 사람들에게 알리려는 상
|
||||||
|
반된 목적을, 한국어 번역문을 공식적으로 승인하지 않는 방법으로 양립시키고 있습니다.
|
||||||
|
|
||||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
자유 소프트웨어 재단은 어떠한 언어에 대한 번역문도 공식적으로 인정하지 않고 있으며,
|
||||||
675 Mass Ave, Cambridge, MA 02139, USA
|
그러한 계획 또한 갖고 있지 않습니다. 자유 소프트웨어 재단은 GNU General Public License를
|
||||||
|
실무에 적용할 경우, 오직 영문판에 의해서만 그 법률적 효력이 올바르게 발생될 수 있음을 권고하고
|
||||||
|
있습니다. 이 번역문은 법률적 검토와 문서간의 동일성 여부에 대한 검증을 거치지 않은 것이며,
|
||||||
|
이로 인해서 야기될 수 있을 지도 모를 법률적인 문제에 대해서 어떠한 형태의 보증도 제공하지
|
||||||
|
않습니다. GNU General Public License를 상업적인 목적으로 사용하려고 할 경우에는 변호사나
|
||||||
|
변리사에게 직접 자문을 구하기 바랍니다. 그러나 대부분의 일반 사용자들에게는 이 번역문이 전달하려고
|
||||||
|
하는 내용과 취지를 이해하는 것만으로도 충분할 것입니다.
|
||||||
|
|
||||||
|
본 문서는 한글 번역된 GPL과 원본 영문 GPL을 전부 포함하고 있습니다.
|
||||||
|
--------------------------------------------------------------------------------------------------------------------------
|
||||||
|
GNU 일반 공중 사용 허가서
|
||||||
|
(GNU GENERAL PUBLIC LICENSE)
|
||||||
|
제 2판, 1991년 6월
|
||||||
|
(Version 2, June 1991)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
|
||||||
|
누구든지 본 사용 허가서를 있는 그대로 복제하고 배포할 수 있습니다.
|
||||||
|
그러나 본문에 대한 수정은 허용되지 않습니다.
|
||||||
|
|
||||||
|
|
||||||
|
전 문
|
||||||
|
소프트웨어에 적용되는 대부분의 사용 허가서(license)들은 소프트웨어에 대한 수정과 공유의 자유를 제한
|
||||||
|
하려는 것을 그 목적으로 합니다. 그러나 GNU 일반 공중 사용 허가서(이하, ``GPL''이라고 칭합니다.)는 자
|
||||||
|
유 소프트웨어에 대한 수정과 공유의 자유를 모든 사용자들에게 보장하기 위해서 성립된 것입니다. 자유 소
|
||||||
|
프트웨어 재단이 제공하는 대부분의 소프트웨어들은 GPL에 의해서 관리되고 있으며, 몇몇 소프트웨어에는
|
||||||
|
별도의 사용 허가서인 GNU 라이브러리 일반 공중 사용 허가서(GNU Library General Public License)를 대신
|
||||||
|
적용하기도 합니다. 자유 소프트웨어란, 이를 사용하려고 하는 모든 사람에 대해서 동일한 자유와 권리가
|
||||||
|
함께 양도되는 소프트웨어를 말하며 프로그램 저작자의 의지에 따라 어떠한 종류의 프로그램에도 GPL을 적
|
||||||
|
용할 수 있습니다. 따라서 여러분이 만든 프로그램에도 GPL을 적용할 수 있습니다.
|
||||||
|
|
||||||
|
자유 소프트웨어를 언급할 때 사용되는 ``자유''라는 단어는 무료(無料)를 의미하는 금전적인 측면의 자유
|
||||||
|
가 아니라 구속되지 않는다는 관점에서의 자유를 의미하며, GPL은 자유 소프트웨어를 이용한 복제와 개작,
|
||||||
|
배포와 수익 사업 등의 가능한 모든 형태의 자유를 실질적으로 보장하고 있습니다. 여기에는 원시 코드
|
||||||
|
(source code)의 전부 또는 일부를 원용해서 개선된 프로그램을 만들거나 새로운 프로그램을 창작할 수 있
|
||||||
|
는 자유가 포함되며, 자신에게 양도된 이러한 자유와 권리를 보다 명확하게 인식할 수 있도록 하기 위한 규
|
||||||
|
정도 포함되어 있습니다.
|
||||||
|
|
||||||
|
GPL은 GPL 안에 소프트웨어를 양도받을 사용자의 권리를 제한하는 조항과 단서를 별항으로 추가시키지 못하
|
||||||
|
게 함으로써 사용자들의 자유와 권리를 실제적으로 보장하고 있습니다. 자유 소프트웨어의 개작과 배포에
|
||||||
|
관계하고 있는 사람들은 이러한 무조건적인 권리 양도 규정을 준수해야만 합니다.
|
||||||
|
|
||||||
|
예를 들어 GPL 프로그램을 배포할 경우에는 프로그램의 유료 판매나 무료 배포에 관계없이 자신이 해당 프
|
||||||
|
로그램에 대해서 가질 수 있었던 모든 권리를, 프로그램을 받게될 사람에게 그대로 양도해 주어야 합니다.
|
||||||
|
이 경우, 프로그램의 원시 코드를 함께 제공하거나 원시 코드를 구할 수 있는 방법을 확실히 알려주어야 하
|
||||||
|
고 이러한 모든 사항들을 사용자들이 분명히 알 수 있도록 명시해야 합니다.
|
||||||
|
|
||||||
|
자유 소프트웨어 재단은 다음과 같은 두 가지 단계를 통해서 사용자들을 권리를 보호합니다. (1) 소프트웨
|
||||||
|
어에 저작권을 설정합니다. (2) 저작권의 양도에 관한 실정법에 의해서 유효한 법률적 효력을 갖는 GPL을
|
||||||
|
통해 소프트웨어를 복제하거나 개작 및 배포할 수 있는 권리를 사용자들에게 부여합니다.
|
||||||
|
|
||||||
|
자유 소프트웨어를 사용하는 사람들은 반복적인 재배포 과정을 통해 소프트웨어 자체에 수정과 변형이 일어
|
||||||
|
날 수도 있으며, 이는 최초의 저작자가 만든 소프트웨어가 갖고 있는 문제가 아닐 수 있다는 개연성을 인식
|
||||||
|
하고 있어야 합니다. 우리는 개작과 재배포 과정에서 다른 사람에 의해 발생된 문제로 인해 프로그램 원저
|
||||||
|
작자들의 신망이 훼손되는 것을 원하지 않습니다. GPL에 자유 소프트웨어에 대한 어떠한 형태의 보증도 규
|
||||||
|
정하지 않는 이유는 이러한 점들이 고려되었기 때문이며, 이는 프로그램 원저작자와 자유 소프트웨어 재단
|
||||||
|
의 자유로운 활동을 보장하는 현실적인 수단이기도 합니다.
|
||||||
|
|
||||||
|
특허 제도는 자유 소프트웨어의 발전을 위협하는 요소일 수밖에 없습니다. 자유 프로그램을 재배포하는 사
|
||||||
|
람들이 개별적으로 특허를 취득하게 되면, 결과적으로 그 프로그램이 독점 소프트웨어가 될 가능성이 있습
|
||||||
|
니다. 자유 소프트웨어 재단은 이러한 문제에 대처하기 위해서 어떠한 특허에 대해서도 그 사용 권리를 모
|
||||||
|
든 사람들(이하, ``공중(公衆)''이라고 칭합니다.)에게 자유롭게 허용하는 경우에 한해서만 자유 소프트웨
|
||||||
|
어와 함께 사용할 수 있다는 것을 명확히 밝히고 있습니다.
|
||||||
|
|
||||||
|
복제(copying)와 개작(modification) 및 배포(distribution)에 관련된 구체적인 조건과 규정은 다음과 같습
|
||||||
|
니다.
|
||||||
|
|
||||||
|
|
||||||
|
복제와 개작 및 배포에 관한 조건과 규정
|
||||||
|
제 0 조. 본 허가서는 GNU 일반 공중 사용 허가서의 규정에 따라 배포될 수 있다는 사항이 저작권자에 의해
|
||||||
|
서 명시된 모든 컴퓨터 프로그램 저작물에 대해서 동일하게 적용됩니다. 컴퓨터 프로그램 저작물(이하, ``
|
||||||
|
프로그램''이라고 칭합니다.)이란 특정한 결과를 얻기 위해서 컴퓨터 등의 정보 처리 능력을 가진 장치(이
|
||||||
|
하, ``컴퓨터''라고 칭합니다.) 내에서 직접 또는 간접으로 사용되는 일련의 지시 및 명령으로 표현된 창작
|
||||||
|
물을 의미하고, ``2차적 프로그램''이란 전술한 프로그램 자신 또는 저작권법의 규정에 따라 프로그램의 전
|
||||||
|
부 또는 상당 부분을 원용하거나 다른 언어로의 번역을 포함할 수 있는 개작 과정을 통해서 창작된 새로운
|
||||||
|
프로그램과 이와 관련된 저작물을 의미합니다. (이후로 다른 언어로의 번역은 별다른 제한없이 개작의 범위
|
||||||
|
에 포함되는 것으로 간주합니다.) ``피양도자''란 GPL의 규정에 따라 프로그램을 양도받은 사람을 의미하
|
||||||
|
고, ``원(原)프로그램''이란 프로그램을 개작하거나 2차적 프로그램을 만들기 위해서 사용된 최초의 프로그
|
||||||
|
램을 의미합니다.
|
||||||
|
|
||||||
|
본 허가서는 프로그램에 대한 복제와 개작 그리고 배포 행위에 대해서만 적용됩니다. 따라서 프로그램을 실
|
||||||
|
행시키는 행위에 대한 제한은 없습니다. 프로그램의 결과물(output)에는, 그것이 프로그램을 실행시켜서 생
|
||||||
|
성된 것인지 아닌지의 여부에 상관없이 결과물의 내용이 원프로그램으로부터 파생된 2차적 프로그램을 구성
|
||||||
|
했을 때에 한해서 본 허가서의 규정들이 적용됩니다. 2차적 프로그램의 구성 여부는 2차적 프로그램 안에서
|
||||||
|
의 원프로그램의 역할을 토대로 판단합니다.
|
||||||
|
|
||||||
|
제 1 조. 적절한 저작권 표시와 프로그램에 대한 보증이 제공되지 않는다는 사실을 각각의 복제물에 명시하
|
||||||
|
는 한, 피양도자는 프로그램의 원시 코드를 자신이 양도받은 상태 그대로 어떠한 매체를 통해서도 복제하고
|
||||||
|
배포할 수 있습니다. 복제와 배포가 이루어 질 때는 본 허가서와 프로그램에 대한 보증이 제공되지 않는다
|
||||||
|
는 사실에 대해서 언급되었던 모든 내용을 그대로 유지시켜야 하며, 영문판 GPL을 함께 제공해야 합니다.
|
||||||
|
|
||||||
|
배포자는 복제물을 물리적으로 인도하는데 소요된 비용을 청구할 수 있으며, 선택 사항으로 독자적인 유료
|
||||||
|
보증을 설정할 수 있습니다.
|
||||||
|
|
||||||
|
제 2 조. 피양도자는 자신이 양도받은 프로그램의 전부나 일부를 개작할 수 있으며, 이를 통해서 2차적 프
|
||||||
|
로그램을 창작할 수 있습니다. 개작된 프로그램이나 창작된 2차적 프로그램은 다음의 사항들을 모두 만족시
|
||||||
|
키는 조건에 한해서, 제1조의 규정에 따라 또다시 복제되고 배포될 수 있습니다.
|
||||||
|
|
||||||
|
제 1 항. 파일을 개작할 때는 파일을 개작한 사실과 그 날짜를 파일 안에 명시해야 합니다.
|
||||||
|
제 2 항. 배포하거나 공표하려는 저작물의 전부 또는 일부가 양도받은 프로그램으로부터 파생된 것이라면,
|
||||||
|
저작물 전체에 대한 사용 권리를 본 허가서의 규정에 따라 공중에게 무상으로 허용해야 합니다.
|
||||||
|
|
||||||
|
제 3 항. 개작된 프로그램의 일반적인 실행 형태가 대화형 구조로 명령어를 읽어 들이는 방식을 취하고 있
|
||||||
|
을 경우에는, 적절한 저작권 표시와 프로그램에 대한 보증이 제공되지 않는다는 사실, (별도의 보증을 설정
|
||||||
|
한 경우라면 해당 내용) 그리고 양도받은 프로그램을 본 규정에 따라 재배포할 수 있다는 사실과 GPL 사본
|
||||||
|
을 참고할 수 있는 방법이 함께 포함된 문구가 프로그램이 대화형 구조로 평이하게 실행된 직후에 화면 또
|
||||||
|
는 지면으로 출력되도록 작성되어야 합니다. (예외 규정: 양도받은 프로그램이 대화형 구조를 갖추고 있다
|
||||||
|
하더라도 통상적인 실행 환경에서 전술한 사항들이 출력되지 않는 형태였을 경우에는 이를 개작한 프로그램
|
||||||
|
또한 관련 사항들을 출력시키지 않아도 무방합니다.)
|
||||||
|
|
||||||
|
위의 조항들은 개작된 프로그램 전체에 적용됩니다. 만약, 개작된 프로그램에 포함된 특정 부분이 원프로그
|
||||||
|
램으로부터 파생된 것이 아닌 별도의 독립 저작물로 인정될 만한 상당한 이유가 있을 경우에는 해당 저작물
|
||||||
|
의 개별적인 배포에는 본 허가서의 규정들이 적용되지 않습니다. 그러나 이러한 저작물이 2차적 프로그램의
|
||||||
|
일부로서 함께 배포된다면 개별적인 저작권과 배포 기준에 상관없이 저작물 모두에 본 허가서가 적용되어야
|
||||||
|
하며, 전체 저작물에 대한 사용 권리는 공중에게 무상으로 양도됩니다.
|
||||||
|
|
||||||
|
이러한 규정은 개별적인 저작물에 대한 저작자의 권리를 침해하거나 인정하지 않으려는 것이 아니라, 원프
|
||||||
|
로그램으로부터 파생된 2차적 프로그램이나 수집 저작물의 배포를 일관적으로 규제할 수 있는 권리를 행사
|
||||||
|
하기 위한 것입니다.
|
||||||
|
|
||||||
|
원프로그램이나 원프로그램으로부터 파생된 2차적 프로그램을 이들로부터 파생되지 않은 다른 저작물과 함
|
||||||
|
께 단순히 저장하거나 배포할 목적으로 동일한 매체에 모아 놓은 집합물의 경우에는, 원프로그램으로부터
|
||||||
|
파생되지 않은 다른 저작물에는 본 허가서의 규정들이 적용되지 않습니다.
|
||||||
|
|
||||||
|
제 3 조. 피양도자는 다음 중 하나의 항목을 만족시키는 조건에 한해서 제1조와 제2조의 규정에 따라 프로
|
||||||
|
그램(또는 제2조에서 언급된 2차적 프로그램)을 목적 코드(object code)나 실행물(executable form)의 형태
|
||||||
|
로 복제하고 배포할 수 있습니다.
|
||||||
|
|
||||||
|
제 1 항. 목적 코드나 실행물에 상응하는 컴퓨터가 인식할 수 있는 완전한 원시 코드를 함께 제공해야 합니
|
||||||
|
다. 원시 코드는 제1조와 제2조의 규정에 따라 배포될 수 있어야 하며, 소프트웨어의 교환을 위해서 일반적
|
||||||
|
으로 사용되는 매체를 통해 제공되어야 합니다.
|
||||||
|
제 2 항. 배포에 필요한 최소한의 비용만을 받고 목적 코드나 실행물에 상응하는 완전한 원시 코드를 배포
|
||||||
|
하겠다는, 최소한 3년간 유효한 약정서를 함께 제공해야 합니다. 이 약정서는 약정서를 갖고 있는 어떠한
|
||||||
|
사람에 대해서도 유효해야 합니다. 원시 코드는 컴퓨터가 인식할 수 있는 형태여야 하고 제1조와 제2조의
|
||||||
|
규정에 따라 배포될 수 있어야 하며, 소프트웨어의 교환을 위해서 일반적으로 사용되는 매체를 통해 제공되
|
||||||
|
어야 합니다.
|
||||||
|
|
||||||
|
제 3 항. 목적 코드나 실행물에 상응하는 원시 코드를 배포하겠다는 약정에 대해서 자신이 양도받은 정보를
|
||||||
|
함께 제공해야 합니다. (제3항은 위의 제2항에 따라 원시 코드를 배포하겠다는 약정을 프로그램의 목적 코
|
||||||
|
드나 실행물과 함께 제공 받았고, 동시에 비상업적인 배포를 하고자 할 경우에 한해서만 허용됩니다.)
|
||||||
|
|
||||||
|
저작물에 대한 원시 코드란 해당 저작물을 개작하기에 적절한 형식을 의미합니다. 실행물에 대한 완전한 원
|
||||||
|
시 코드란 실행물에 포함된 모든 모듈들의 원시 코드와 이와 관련된 인터페이스 정의 파일 모두, 그리고 실
|
||||||
|
행물의 컴파일과 설치를 제어하는데 사용된 스크립트 전부를 의미합니다. 그러나 특별한 예외의 하나로서,
|
||||||
|
실행물이 실행될 운영체제의 주요 부분(컴파일러나 커널 등)과 함께 (원시 코드나 바이너리의 형태로) 일반
|
||||||
|
적으로 배포되는 구성 요소들은 이러한 구성 요소 자체가 실행물에 수반되지 않는 한 원시 코드의 배포 대
|
||||||
|
상에서 제외되어도 무방합니다.
|
||||||
|
|
||||||
|
목적 코드나 실행물을 지정한 장소로부터 복제해 갈 수 있게 하는 방식으로 배포할 경우, 동일한 장소로부
|
||||||
|
터 원시 코드를 복제할 수 있는 동등한 접근 방법을 제공한다면 이는 원시 코드를 목적 코드와 함께 복제되
|
||||||
|
도록 설정하지 않았다고 하더라도 원시 코드를 배포하는 것으로 간주됩니다.
|
||||||
|
|
||||||
|
제 4 조. 본 허가서에 의해 명시적으로 이루어 지지 않는 한 프로그램에 대한 복제와 개작 및 하위 허가권
|
||||||
|
설정과 배포가 성립될 수 없습니다. 이와 관련된 어떠한 행위도 무효이며 본 허가서가 보장한 권리는 자동
|
||||||
|
으로 소멸됩니다. 그러나 본 허가서의 규정에 따라 프로그램의 복제물이나 권리를 양도받았던 제3자는 본
|
||||||
|
허가서의 규정들을 준수하는 한, 배포자의 권리 소멸에 관계없이 사용상의 권리를 계속해서 유지할 수 있습
|
||||||
|
니다.
|
||||||
|
|
||||||
|
제 5 조. 본 허가서는 서명이나 날인이 수반되는 형식을 갖고 있지 않기 때문에 피양도자가 본 허가서의 내
|
||||||
|
용을 반드시 받아들여야 할 필요는 없습니다. 그러나 프로그램이나 프로그램에 기반한 2차적 프로그램에 대
|
||||||
|
한 개작 및 배포를 허용하는 것은 본 허가서에 의해서만 가능합니다. 만약 본 허가서에 동의하지 않을 경우
|
||||||
|
에는 이러한 행위들이 법률적으로 금지됩니다. 따라서 프로그램(또는 프로그램에 기반한 2차적 프로그램)을
|
||||||
|
개작하거나 배포하는 행위는 이에 따른 본 허가서의 내용에 동의한다는 것을 의미하며, 복제와 개작 및 배
|
||||||
|
포에 관한 본 허가서의 조건과 규정들을 모두 받아들이겠다는 의미로 간주됩니다.
|
||||||
|
|
||||||
|
제 6 조. 피양도자에 의해서 프로그램(또는 프로그램에 기반한 2차적 프로그램)이 반복적으로 재배포될 경
|
||||||
|
우, 각 단계에서의 피양도자는 본 허가서의 규정에 따른 프로그램의 복제와 개작 및 배포에 대한 권리를 최
|
||||||
|
초의 양도자로부터 양도받은 것으로 자동적으로 간주됩니다. 프로그램(또는 프로그램에 기반한 2차적 프로
|
||||||
|
그램)을 배포할 때는 피양도자의 권리의 행사를 제한할 수 있는 어떠한 사항도 추가할 수 없습니다. 그러나
|
||||||
|
피양도자에게, 재배포가 일어날 시점에서의 제3의 피양도자에게 본 허가서를 준수하도록 강제할 책임은 부
|
||||||
|
과되지 않습니다.
|
||||||
|
|
||||||
|
제 7 조. 법원의 판결이나 특허권 침해에 대한 주장 또는 특허 문제에 국한되지 않은 그밖의 이유들로 인해
|
||||||
|
서 본 허가서의 규정에 배치되는 사항이 발생한다 하더라도 그러한 사항이 선행하거나 본 허가서의 조건과
|
||||||
|
규정들이 면제되는 것은 아닙니다. 따라서 법원의 명령이나 합의 등에 의해서 본 허가서에 위배되는 사항들
|
||||||
|
이 발생한 상황이라도 양측 모두를 만족시킬 수 없다면 프로그램은 배포될 수 없습니다. 예를 들면, 특정한
|
||||||
|
특허 관련 허가가 프로그램의 복제물을 직접 또는 간접적인 방법으로 양도받은 임의의 제3자에게 해당 프로
|
||||||
|
그램을 무상으로 재배포할 수 있게 허용하지 않는다면, 그러한 허가와 본 사용 허가를 동시에 만족시키면서
|
||||||
|
프로그램을 배포할 수 있는 방법은 없습니다.
|
||||||
|
|
||||||
|
본 조항은 특정한 상황에서 본 조항의 일부가 유효하지 않거나 적용될 수 없을 경우에도 본 조항의 나머지
|
||||||
|
부분들을 적용하기 위한 의도로 만들어 졌습니다. 따라서 그 이외의 상황에서는 본 조항을 전체적으로 적용
|
||||||
|
하면 됩니다.
|
||||||
|
|
||||||
|
본 조항의 목적은 특허나 저작권 침해 등의 행위를 조장하거나 해당 권리를 인정하지 않으려는 것이 아니
|
||||||
|
라, GPL을 통해서 구현되어 있는 자유 소프트웨어의 배포 체계를 통합적으로 보호하기 위한 것입니다. 많은
|
||||||
|
사람들이 배포 체계에 대한 신뢰있는 지원을 계속해 줌으로써 소프트웨어의 다양한 분야에 많은 공헌을 해
|
||||||
|
주었습니다. 소프트웨어를 어떠한 배포 체계로 배포할 것인가를 결정하는 것은 전적으로 저작자와 기증자들
|
||||||
|
의 의지에 달려있는 것이지, 일반 사용자들이 강요할 수 있는 문제는 아닙니다.
|
||||||
|
|
||||||
|
본 조항은 본 허가서의 다른 조항들에서 무엇이 중요하게 고려되어야 하는 지를 명확하게 설명하기 위한 목
|
||||||
|
적으로 만들어진 것입니다.
|
||||||
|
|
||||||
|
제 8 조. 특허나 저작권이 설정된 인터페이스로 인해서 특정 국가에서 프로그램의 배포와 사용이 함께 또는
|
||||||
|
개별적으로 제한되어 있는 경우, 본 사용 허가서를 프로그램에 적용한 최초의 저작권자는 문제가 발생하지
|
||||||
|
않는 국가에 한해서 프로그램을 배포한다는 배포상의 지역적 제한 조건을 명시적으로 설정할 수 있으며, 이
|
||||||
|
러한 사항은 본 허가서의 일부로 간주됩니다.
|
||||||
|
|
||||||
|
제 9 조. 자유 소프트웨어 재단은 때때로 본 사용 허가서의 개정판이나 신판을 공표할 수 있습니다. 새롭게
|
||||||
|
공표될 판은 당면한 문제나 현안을 처리하기 위해서 세부적인 내용에 차이가 발생할 수 있지만, 그 근본 정
|
||||||
|
신에는 변함이 없을 것입니다.
|
||||||
|
|
||||||
|
각각의 판들은 판번호를 사용해서 구별됩니다. 특정한 판번호와 그 이후 판을 따른다는 사항이 명시된 프로
|
||||||
|
그램에는 해당 판이나 그 이후에 발행된 어떠한 판을 선택해서 적용해도 무방하고, 판번호를 명시하고 있지
|
||||||
|
않은 경우에는 자유 소프트웨어 재단이 공표한 어떠한 판번호의 판을 적용해도 무방합니다.
|
||||||
|
|
||||||
|
제 10 조. 프로그램의 일부를 본 허가서와 배포 기준이 다른 자유 프로그램과 함께 결합하고자 할 경우에는
|
||||||
|
해당 프로그램의 저작자로부터 서면 승인을 받아야 합니다. 자유 소프트웨어 재단이 저작권을 갖고 있는 소
|
||||||
|
프트웨어의 경우에는 자유 소프트웨어 재단의 승인을 얻어야 합니다. 우리는 이러한 요청을 수락하기 위해
|
||||||
|
서 때때로 예외 기준을 만들기도 합니다. 자유 소프트웨어 재단은 일반적으로 자유 소프트웨어의 2차적 저
|
||||||
|
작물들을 모두 자유로운 상태로 유지시키려는 목적과 소프트웨어의 공유와 재활용을 증진시키려는 두가지
|
||||||
|
목적을 기준으로 승인 여부를 결정할 것입니다.
|
||||||
|
|
||||||
|
|
||||||
|
보증의 결여 (제11조, 제12조)
|
||||||
|
제 11 조. 본 허가서를 따르는 프로그램은 무상으로 양도되기 때문에 관련 법률이 허용하는 한도 내에서 어
|
||||||
|
떠한 형태의 보증도 제공되지 않습니다. 프로그램의 저작권자와 배포자가 공동 또는 개별적으로 별도의 보
|
||||||
|
증을 서면으로 제공할 때를 제외하면, 특정한 목적에 대한 프로그램의 적합성이나 상업성 여부에 대한 보증
|
||||||
|
을 포함한 어떠한 형태의 보증도 명시적이나 묵시적으로 설정되지 않은 ``있는 그대로의'' 상태로 이 프로
|
||||||
|
그램을 배포합니다. 프로그램과 프로그램의 실행에 따라 발생할 수 있는 모든 위험은 피양도자에게 인수되
|
||||||
|
며 이에 따른 보수 및 복구를 위한 제반 경비 또한 피양도자가 모두 부담해야 합니다.
|
||||||
|
|
||||||
|
제 12 조. 저작권자나 배포자가 프로그램의 손상 가능성을 사전에 알고 있었다 하더라도 발생된 손실이 관
|
||||||
|
련 법규에 의해 보호되고 있거나 이에 대한 별도의 서면 보증이 설정된 경우가 아니라면, 저작권자나 프로
|
||||||
|
그램을 원래의 상태 또는 개작한 상태로 제공한 배포자는 프로그램의 사용이나 비작동으로 인해 발생된 손
|
||||||
|
실이나 프로그램 자체의 손실에 대해 책임지지 않습니다. 이러한 면책 조건은 사용자나 제3자가 프로그램을
|
||||||
|
조작함으로써 발생된 손실이나 다른 소프트웨어와 프로그램을 함께 동작시키는 것으로 인해서 발생된 데이
|
||||||
|
터의 상실 및 부정확한 산출 결과에만 국한되는 것이 아닙니다. 발생된 손실의 일반성이나 특수성 뿐 아니
|
||||||
|
라 원인의 우발성 및 필연성도 전혀 고려되지 않습니다.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
@ -15,7 +263,7 @@ software--to make sure the software is free for all its users. This
|
||||||
General Public License applies to most of the Free Software
|
General Public License applies to most of the Free Software
|
||||||
Foundation's software and to any other program whose authors commit to
|
Foundation's software and to any other program whose authors commit to
|
||||||
using it. (Some other Free Software Foundation software is covered by
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
the GNU Library General Public License instead.) You can apply it to
|
the GNU Lesser General Public License instead.) You can apply it to
|
||||||
your programs, too.
|
your programs, too.
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
|
@ -276,6 +524,3 @@ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGES.
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@
|
||||||
|
|
||||||
// 포인트를 구해옴
|
// 포인트를 구해옴
|
||||||
$point = $config->module_point[$module_srl]['insert_document'];
|
$point = $config->module_point[$module_srl]['insert_document'];
|
||||||
if(!$point) $point = $config->insert_document;
|
if($point == null) $point = $config->insert_document;
|
||||||
|
|
||||||
// 포인트 증감
|
// 포인트 증감
|
||||||
$cur_point += $point;
|
$cur_point += $point;
|
||||||
|
|
@ -67,7 +67,7 @@
|
||||||
|
|
||||||
// 포인트를 구해옴
|
// 포인트를 구해옴
|
||||||
$point = $config->module_point[$module_srl]['insert_document'];
|
$point = $config->module_point[$module_srl]['insert_document'];
|
||||||
if(!$point) $point = $config->insert_document;
|
if($point == null) $point = $config->insert_document;
|
||||||
|
|
||||||
// 포인트 차감
|
// 포인트 차감
|
||||||
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
||||||
|
|
@ -90,7 +90,7 @@
|
||||||
|
|
||||||
// 포인트를 구해옴
|
// 포인트를 구해옴
|
||||||
$point = $config->module_point[$module_srl]['insert_comment'];
|
$point = $config->module_point[$module_srl]['insert_comment'];
|
||||||
if(!$point) $point = $config->insert_comment;
|
if($point == null) $point = $config->insert_comment;
|
||||||
|
|
||||||
// 포인트 증감
|
// 포인트 증감
|
||||||
$cur_point += $point;
|
$cur_point += $point;
|
||||||
|
|
@ -109,7 +109,7 @@
|
||||||
|
|
||||||
// 포인트를 구해옴
|
// 포인트를 구해옴
|
||||||
$point = $config->module_point[$module_srl]['insert_comment'];
|
$point = $config->module_point[$module_srl]['insert_comment'];
|
||||||
if(!$point) $point = $config->insert_comment;
|
if($point == null) $point = $config->insert_comment;
|
||||||
|
|
||||||
// 포인트 증감
|
// 포인트 증감
|
||||||
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
||||||
|
|
@ -130,7 +130,7 @@
|
||||||
|
|
||||||
// 포인트를 구해옴
|
// 포인트를 구해옴
|
||||||
$point = $config->module_point[$module_srl]['upload_file'];
|
$point = $config->module_point[$module_srl]['upload_file'];
|
||||||
if(!$point) $point = $config->upload_file;
|
if($point == null) $point = $config->upload_file;
|
||||||
|
|
||||||
// 포인트 증감
|
// 포인트 증감
|
||||||
$cur_point += $point;
|
$cur_point += $point;
|
||||||
|
|
@ -152,7 +152,7 @@
|
||||||
|
|
||||||
// 포인트를 구해옴
|
// 포인트를 구해옴
|
||||||
$point = $config->module_point[$module_srl]['upload_file'];
|
$point = $config->module_point[$module_srl]['upload_file'];
|
||||||
if(!$point) $point = $config->upload_file;
|
if($point == null) $point = $config->upload_file;
|
||||||
|
|
||||||
// 포인트 차감
|
// 포인트 차감
|
||||||
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
$cur_point = $oPointModel->getPoint($target_member_srl, true);
|
||||||
|
|
@ -178,18 +178,18 @@
|
||||||
|
|
||||||
// 포인트를 구해옴
|
// 포인트를 구해옴
|
||||||
$point = $config->module_point[$module_srl]['download_file'];
|
$point = $config->module_point[$module_srl]['download_file'];
|
||||||
if(!$point) $point = $config->download_file;
|
if($point == null) $point = $config->download_file;
|
||||||
|
|
||||||
// 포인트가 0보다 작고 포인트가 없으면 파일 다운로드가 안되도록 했다면 오류
|
// 포인트가 0보다 작고 포인트가 없으면 파일 다운로드가 안되도록 했다면 오류
|
||||||
if($cur_point + $point < 0 && $config->disable_download == 'Y') {
|
if($cur_point + $point < 0 && $config->disable_download == 'Y') {
|
||||||
$this->stop('msg_cannot_download');
|
$this->stop('msg_cannot_download');
|
||||||
|
} else {
|
||||||
|
// 포인트 차감
|
||||||
|
$cur_point += $point;
|
||||||
|
$oPointController = &getController('point');
|
||||||
|
$oPointController->setPoint($member_srl,$cur_point);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 포인트 차감
|
|
||||||
$cur_point += $point;
|
|
||||||
$oPointController = &getController('point');
|
|
||||||
$oPointController->setPoint($member_srl,$cur_point);
|
|
||||||
|
|
||||||
// 글 삭제일 경우 대상 글의 사용자 번호 저장
|
// 글 삭제일 경우 대상 글의 사용자 번호 저장
|
||||||
} elseif(strpos($config->delete_document_act,$this->act)!==false) {
|
} elseif(strpos($config->delete_document_act,$this->act)!==false) {
|
||||||
$document_srl = Context::get('document_srl');
|
$document_srl = Context::get('document_srl');
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,15 @@
|
||||||
// 상대 경로 설정
|
// 상대 경로 설정
|
||||||
$this->path = $this->getRequestUri();
|
$this->path = $this->getRequestUri();
|
||||||
|
|
||||||
|
// 기본 JS/CSS 등록
|
||||||
|
$this->addJsFile("./common/js/x.js");
|
||||||
|
$this->addJsFile("./common/js/common.js");
|
||||||
|
$this->addJsFile("./common/js/xml_handler.js");
|
||||||
|
$this->addJsFile("./common/js/xml_js_filter.js");
|
||||||
|
$this->addCSSFile("./common/css/default.css");
|
||||||
|
$this->addCSSFile("./common/css/button.css");
|
||||||
|
if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0) $this->addCssFile("./modules/admin/tpl/css/admin.css");
|
||||||
|
|
||||||
// rewrite module때문에 javascript에서 location.href 문제 해결을 위해 직접 실제 경로 설정
|
// rewrite module때문에 javascript에서 location.href 문제 해결을 위해 직접 실제 경로 설정
|
||||||
if($_SERVER['REQUEST_METHOD'] == 'GET') {
|
if($_SERVER['REQUEST_METHOD'] == 'GET') {
|
||||||
if($this->get_vars) {
|
if($this->get_vars) {
|
||||||
|
|
@ -676,6 +685,8 @@
|
||||||
**/
|
**/
|
||||||
function _addJsFile($file) {
|
function _addJsFile($file) {
|
||||||
if(in_array($file, $this->js_files)) return;
|
if(in_array($file, $this->js_files)) return;
|
||||||
|
|
||||||
|
if(!eregi("^http:\/\/",$file)) $file = str_replace(realpath("."), ".", realpath($file));
|
||||||
$this->js_files[] = $file;
|
$this->js_files[] = $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -691,7 +702,9 @@
|
||||||
* @brief js file 목록을 return
|
* @brief js file 목록을 return
|
||||||
**/
|
**/
|
||||||
function _getJsFile() {
|
function _getJsFile() {
|
||||||
return $this->js_files;
|
require_once("./classes/optimizer/Optimizer.class.php");
|
||||||
|
$oOptimizer = new Optimizer();
|
||||||
|
return $oOptimizer->getOptimizedFiles($this->js_files, "js");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -707,6 +720,8 @@
|
||||||
**/
|
**/
|
||||||
function _addCSSFile($file) {
|
function _addCSSFile($file) {
|
||||||
if(in_array($file, $this->css_files)) return;
|
if(in_array($file, $this->css_files)) return;
|
||||||
|
|
||||||
|
if(!eregi("^http:\/\/",$file)) $file = str_replace(realpath("."), ".", realpath($file));
|
||||||
$this->css_files[] = $file;
|
$this->css_files[] = $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -722,7 +737,9 @@
|
||||||
* @brief CSS file 목록 return
|
* @brief CSS file 목록 return
|
||||||
**/
|
**/
|
||||||
function _getCSSFile() {
|
function _getCSSFile() {
|
||||||
return $this->css_files;
|
require_once("./classes/optimizer/Optimizer.class.php");
|
||||||
|
$oOptimizer = new Optimizer();
|
||||||
|
return $oOptimizer->getOptimizedFiles($this->css_files, "css");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -923,5 +940,18 @@
|
||||||
return WidgetHandler::execute($widget, $vars);
|
return WidgetHandler::execute($widget, $vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief gzip encoding 여부 체크
|
||||||
|
**/
|
||||||
|
function isGzEnabled() {
|
||||||
|
if(
|
||||||
|
(defined('__OB_GZHANDLER_ENABLE__') && __OB_GZHANDLER_ENABLE__ == 1) &&
|
||||||
|
strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')!==false &&
|
||||||
|
function_exists('ob_gzhandler') &&
|
||||||
|
extension_loaded('zlib')
|
||||||
|
) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -289,6 +289,9 @@
|
||||||
case 'number' :
|
case 'number' :
|
||||||
if(!eregi('^[0-9]+$', $val)) return new Object(-1, sprintf($lang->filter->invalid_number, $lang->{$key}?$lang->{$key}:$key));
|
if(!eregi('^[0-9]+$', $val)) return new Object(-1, sprintf($lang->filter->invalid_number, $lang->{$key}?$lang->{$key}:$key));
|
||||||
break;
|
break;
|
||||||
|
case 'numbers' :
|
||||||
|
if(!eregi('^[0-9,]+$', $val)) return new Object(-1, sprintf($lang->filter->invalid_number, $lang->{$key}?$lang->{$key}:$key));
|
||||||
|
break;
|
||||||
case 'alpha' :
|
case 'alpha' :
|
||||||
if(!eregi('^[a-z]+$', $val)) return new Object(-1, sprintf($lang->filter->invalid_alpha, $lang->{$key}?$lang->{$key}:$key));
|
if(!eregi('^[a-z]+$', $val)) return new Object(-1, sprintf($lang->filter->invalid_alpha, $lang->{$key}?$lang->{$key}:$key));
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -22,12 +22,7 @@
|
||||||
function printContent(&$oModule) {
|
function printContent(&$oModule) {
|
||||||
|
|
||||||
// gzip encoding 지원 여부 체크
|
// gzip encoding 지원 여부 체크
|
||||||
if(
|
$this->gz_enabled = Context::isGzEnabled();
|
||||||
(defined('__OB_GZHANDLER_ENABLE__') && __OB_GZHANDLER_ENABLE__ == 1) &&
|
|
||||||
strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')!==false &&
|
|
||||||
function_exists('ob_gzhandler') &&
|
|
||||||
extension_loaded('zlib')
|
|
||||||
) $this->gz_enabled = true;
|
|
||||||
|
|
||||||
// header 출력
|
// header 출력
|
||||||
$this->_printHeader();
|
$this->_printHeader();
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@
|
||||||
if(@!$fp = fopen($file_name,$mode)) return false;
|
if(@!$fp = fopen($file_name,$mode)) return false;
|
||||||
fwrite($fp, $buff);
|
fwrite($fp, $buff);
|
||||||
fclose($fp);
|
fclose($fp);
|
||||||
|
@chmod($file_name, 0644);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -116,6 +117,14 @@
|
||||||
@rmdir($path);
|
@rmdir($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @biref 지정된 디렉토리를 제외한 모든 파일을 삭제
|
||||||
|
**/
|
||||||
|
function removeFilesInDir($path) {
|
||||||
|
FileHandler::removedir($path);
|
||||||
|
FileHandler::makeDir($path);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief byte단위의 파일크기를 적절하게 변환해서 return
|
* @brief byte단위의 파일크기를 적절하게 변환해서 return
|
||||||
**/
|
**/
|
||||||
|
|
@ -150,7 +159,7 @@
|
||||||
$url_info['path'] = $path;
|
$url_info['path'] = $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = sprintf("GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s://%s\r\nRequestUrl: %s\r\nConnection: Close\r\n\r\n", $url_info['path'], $url_info['host'], $url_info['scheme'], $url_info['host'], Context::getRequestUri());
|
$header = sprintf("GET %s?%s HTTP/1.0\r\nHost: %s\r\nReferer: %s://%s\r\nRequestUrl: %s\r\nConnection: Close\r\n\r\n", $url_info['path'], $url_info['query'], $url_info['host'], $url_info['scheme'], $url_info['host'], Context::getRequestUri());
|
||||||
|
|
||||||
@fwrite($fp, $header);
|
@fwrite($fp, $header);
|
||||||
|
|
||||||
|
|
@ -214,6 +223,7 @@
|
||||||
if($resize_height>0 && $height >= $resize_height) $height_per = $resize_height / $height;
|
if($resize_height>0 && $height >= $resize_height) $height_per = $resize_height / $height;
|
||||||
if($width_per < $height_per) $per = $height_per;
|
if($width_per < $height_per) $per = $height_per;
|
||||||
else $per = $width_per;
|
else $per = $width_per;
|
||||||
|
if(!$per) $per = 1;
|
||||||
|
|
||||||
// 원본 이미지의 타입으로 임시 이미지 생성
|
// 원본 이미지의 타입으로 임시 이미지 생성
|
||||||
switch($type) {
|
switch($type) {
|
||||||
|
|
@ -246,14 +256,12 @@
|
||||||
$new_width = (int)($width * $per);
|
$new_width = (int)($width * $per);
|
||||||
$new_height = (int)($height * $per);
|
$new_height = (int)($height * $per);
|
||||||
|
|
||||||
$x = ($resize_width/2 - $new_width/2);
|
$x = (int)($resize_width/2 - $new_width/2);
|
||||||
$y = ($resize_height/2 - $new_height/2);
|
$y = (int)($resize_height/2 - $new_height/2);
|
||||||
|
|
||||||
if($source) {
|
if($source) {
|
||||||
if($new_width != $width || $new_height != $height) {
|
if(function_exists('imagecopyresampled')) @imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height);
|
||||||
if(function_exists('imagecopyresampled')) @imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height);
|
else @imagecopyresized($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height);
|
||||||
else @imagecopyresized($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height);
|
|
||||||
} else $thumb = $source;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 파일을 쓰고 끝냄
|
// 파일을 쓰고 끝냄
|
||||||
|
|
|
||||||
148
classes/optimizer/Optimizer.class.php
Normal file
148
classes/optimizer/Optimizer.class.php
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @class Optimizer
|
||||||
|
* @author zero (zero@nzeo.com)
|
||||||
|
* @brief JS/CSS파일등을 특정한 규칙에 맞게 하나의 파일로 만들어서 client에서 가져갈 수 있도록 성능향상을 지원하는 클래스
|
||||||
|
*
|
||||||
|
* 일단 내부적인 코드가 아무리 튜닝이 되어도 모듈/애드온/위젯/에디터컴포넌트등 각 요소들의 JS/CSs파일들을 잘라서 호출하는 구조이기에
|
||||||
|
* 사용자의 브라우저에서는 최소 10이상의 파일을 별도로 서버에 요청을 하게 된다.
|
||||||
|
* 이를 방지하기 위해서 서버내의 로컬 파일일 경우 하나로 묶어서 클라이언트에서 가져갈 수 있도록 하여 그 효과를 증대시킴.
|
||||||
|
**/
|
||||||
|
|
||||||
|
class Optimizer {
|
||||||
|
|
||||||
|
var $cache_path = "./files/cache/optimized/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief optimizer에서 캐싱파일을 저장할 곳을 찾아서 없으면 만듬
|
||||||
|
**/
|
||||||
|
function Optimizer() {
|
||||||
|
if(!is_dir($this->cache_path)) {
|
||||||
|
FileHandler::makeDir($this->cache_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief optimize 대상 파일을 받아서 처리 후 optimize 된 파일이름을 return
|
||||||
|
**/
|
||||||
|
function getOptimizedFiles($source_files, $type = "js") {
|
||||||
|
if(!is_dir($this->cache_path)) return $source_files;
|
||||||
|
|
||||||
|
$file_count = count($source_files);
|
||||||
|
for($i=0;$i<$file_count;$i++) {
|
||||||
|
$file = trim($source_files[$i]);
|
||||||
|
if(!$file) continue;
|
||||||
|
$file = str_replace("\\","/",$file);
|
||||||
|
if(eregi("^http:\/\/",$file) || $file == './common/css/button.css') $files[] = $file;
|
||||||
|
else $targets[] = $file;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!count($targets)) return $files;
|
||||||
|
|
||||||
|
$hashed_filename = $this->getHashFilename($targets);
|
||||||
|
|
||||||
|
$filename = sprintf("%s%s.%s.php", $this->cache_path, $hashed_filename, $type);
|
||||||
|
|
||||||
|
$this->doOptimizedFile($filename, $targets, $type);
|
||||||
|
|
||||||
|
$files[] = $filename;
|
||||||
|
|
||||||
|
return $files;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief optimize는 대상 파일을 \n로 연결후 md5 hashing하여 파일이름의 중복을 피함
|
||||||
|
**/
|
||||||
|
function getHashFilename($files) {
|
||||||
|
$buff = implode("\n", $files);
|
||||||
|
return md5($buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 이미 저장된 캐시 파일과의 시간등을 검사하여 새로 캐싱해야 할지를 체크
|
||||||
|
**/
|
||||||
|
function doOptimizedFile($filename, $targets, $type) {
|
||||||
|
if(!file_exists($filename)) return $this->makeOptimizedFile($filename, $targets, $type);
|
||||||
|
|
||||||
|
$file_count = count($targets);
|
||||||
|
|
||||||
|
$mtime = filemtime($filename);
|
||||||
|
for($i=0;$i<$file_count;$i++) {
|
||||||
|
if($mtime < filemtime($targets[$i])) return $this->makeOptimizedFile($filename, $targets, $type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief css나 js파일을 묶어서 하나의 파일로 만들고 gzip 압축이나 헤더등을 통제하기 위해서 php파일을 별도로 만들어서 진행함
|
||||||
|
**/
|
||||||
|
function makeOptimizedFile($filename, $targets, $type) {
|
||||||
|
/**
|
||||||
|
* 실제 css나 js의 내용을 합친 것을 구함
|
||||||
|
**/
|
||||||
|
// 대상 파일의 내용을 구해오고 css 파일일 경우 url()내의 경로를 변경
|
||||||
|
$file_count = count($targets);
|
||||||
|
for($i=0;$i<$file_count;$i++) {
|
||||||
|
$file = $targets[$i];
|
||||||
|
$str = FileHandler::readFile($file);
|
||||||
|
|
||||||
|
// css 일경우 background:url() 변경
|
||||||
|
if($type == "css") $str = $this->replaceCssPath($file, $str);
|
||||||
|
|
||||||
|
$content_buff .= $str."\r\n";
|
||||||
|
}
|
||||||
|
if(Context::isGzEnabled()) $content_buff = ob_gzhandler($content_buff, 5);
|
||||||
|
|
||||||
|
$content_file = eregi_replace("\.php$","",$filename);
|
||||||
|
$content_filename = str_replace($this->cache_path, '', $content_file);
|
||||||
|
|
||||||
|
FileHandler::writeFile($content_file, $content_buff);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 압축을 지원하고 캐시 타임을 제대로 이용하기 위한 헤더 파일 구함
|
||||||
|
**/
|
||||||
|
// php의 헤더파일 생성
|
||||||
|
$modified_time = gmdate("D, d M Y H:i:s");
|
||||||
|
|
||||||
|
// gzip 압축 체크
|
||||||
|
if(Context::isGzEnabled()) $gzip_header = 'header("Content-Encoding: gzip");';
|
||||||
|
|
||||||
|
// 확장자별 content-type 체크
|
||||||
|
if($type == 'css') $content_type = 'text/css';
|
||||||
|
elseif($type == 'js') $content_type = 'text/javascript';
|
||||||
|
|
||||||
|
$header_buff = <<<EndOfBuff
|
||||||
|
<?php
|
||||||
|
header("Content-Type: {$content_type}; charset=UTF-8");
|
||||||
|
header("Last-Modified: {$modified_time} GMT");
|
||||||
|
{$gzip_header}
|
||||||
|
if(@file_exists("{$content_filename}")) {
|
||||||
|
@fpassthru(fopen("{$content_filename}", "rb"));
|
||||||
|
}
|
||||||
|
exit();
|
||||||
|
?>
|
||||||
|
EndOfBuff;
|
||||||
|
|
||||||
|
FileHandler::writeFile($filename, $header_buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief css의 경우 import/ background 등의 속성에서 사용되는 url내의 경로를 변경시켜줌
|
||||||
|
**/
|
||||||
|
function replaceCssPath($file, $str) {
|
||||||
|
$this->tmp_css_path = Context::getRequestUri().ereg_replace("^\.\/","",dirname($file))."/";
|
||||||
|
$str = preg_replace_callback('!url\(("|\'){0,1}([^\)]+)("|\'){0,1}\)!is', array($this, '_replaceCssPath'), $str);
|
||||||
|
|
||||||
|
$str = preg_replace('!\/([^\/]*)\/\.\.\/!is','/', $str);
|
||||||
|
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _replaceCssPath($matches) {
|
||||||
|
if(eregi("^http",$matches[2])) return $matches[0];
|
||||||
|
if(eregi("^\.\/common\/",$matches[2])) return $matches[0];
|
||||||
|
return sprintf('url(%s)', $this->tmp_css_path.$matches[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
{@ $js_files = Context::getJsFile() }{@ $css_files = Context::getCssFile() }<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
<html lang="{Context::getLangType()}" xmlns="http://www.w3.org/1999/xhtml">
|
<html lang="{Context::getLangType()}" xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||||
|
|
@ -9,16 +9,9 @@
|
||||||
<!--@end--><!--@if($layout->author)--><meta name="layout_maker" content="{$layout_info->author->name} ({$layout_info->author->homepage})" />
|
<!--@end--><!--@if($layout->author)--><meta name="layout_maker" content="{$layout_info->author->name} ({$layout_info->author->homepage})" />
|
||||||
<!--@end--><meta http-equiv="imagetoolbar" content="no" />
|
<!--@end--><meta http-equiv="imagetoolbar" content="no" />
|
||||||
<title>{Context::getBrowserTitle()}</title>
|
<title>{Context::getBrowserTitle()}</title>
|
||||||
<script type="text/javascript" src="./common/js/x.js?rnd={time()}"></script>
|
<!--@foreach($js_files as $key => $js_file)--><script type="text/javascript" src="{$js_file}"></script>
|
||||||
<script type="text/javascript" src="./common/js/common.js?rnd={time()}"></script>
|
<!--@end--><!--@foreach($css_files as $key => $css_file)--><link rel="stylesheet" href="{$css_file}" type="text/css" />
|
||||||
<script type="text/javascript" src="./common/js/xml_handler.js?rnd={time()}"></script>
|
|
||||||
<script type="text/javascript" src="./common/js/xml_js_filter.js?rnd={time()}"></script>
|
|
||||||
<!--@foreach(Context::getJsFile() as $key => $js_file)--><script type="text/javascript" src="{$js_file}?rnd={time()}"></script>
|
|
||||||
<!--@end--><!--@if($rss_url)--><link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{$rss_url}" />
|
<!--@end--><!--@if($rss_url)--><link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="{$rss_url}" />
|
||||||
<!--@end--><link rel="stylesheet" href="./common/css/default.css?rnd={time()}" type="text/css" />
|
|
||||||
<link rel="stylesheet" href="./common/css/button.css?rnd={time()}" type="text/css" />
|
|
||||||
<!--@foreach(Context::getCssFile() as $key => $css_file)--><link rel="stylesheet" href="{$css_file}?rnd={time()}" type="text/css" />
|
|
||||||
<!--@end--><!--@if($module=='admin' || strpos($act,'Admin')>0)--><link rel="stylesheet" href="./modules/admin/tpl/css/admin.css?rnd={time()}" type="text/css" />
|
|
||||||
<!--@end--><script type="text/javascript">//<![CDATA[
|
<!--@end--><script type="text/javascript">//<![CDATA[
|
||||||
var current_url = "{$current_url}";
|
var current_url = "{$current_url}";
|
||||||
var request_uri = "{$request_uri}";
|
var request_uri = "{$request_uri}";
|
||||||
|
|
@ -32,8 +25,6 @@
|
||||||
<body>
|
<body>
|
||||||
{$zbxe_final_content}
|
{$zbxe_final_content}
|
||||||
|
|
||||||
{Context::getHtmlFooter()}
|
|
||||||
|
|
||||||
<div id="waitingforserverresponse" style="visibility:hidden"></div>
|
<div id="waitingforserverresponse" style="visibility:hidden"></div>
|
||||||
<div id="fororiginalimagearea" style="visibility:hidden">
|
<div id="fororiginalimagearea" style="visibility:hidden">
|
||||||
<div id="fororiginalimageareabg">
|
<div id="fororiginalimageareabg">
|
||||||
|
|
@ -43,5 +34,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="membermenuarea"></div>
|
<div id="membermenuarea"></div>
|
||||||
|
|
||||||
|
{Context::getHtmlFooter()}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<!--%import("css/popup.css")-->
|
<!--%import("css/popup.css")-->
|
||||||
|
<!--%import("../../modules/admin/tpl/css/admin.css")-->
|
||||||
<div id="popup_content">{$content}</div>
|
<div id="popup_content">{$content}</div>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
|
* 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며
|
||||||
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함
|
* config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함
|
||||||
**/
|
**/
|
||||||
define('__ZBXE_VERSION__', '0.1.6');
|
define('__ZBXE_VERSION__', '0.1.7');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 디버깅 메세지 출력
|
* @brief 디버깅 메세지 출력
|
||||||
|
|
|
||||||
|
|
@ -220,21 +220,27 @@
|
||||||
$year = (int)substr($str,0,4);
|
$year = (int)substr($str,0,4);
|
||||||
$month = (int)substr($str,4,2);
|
$month = (int)substr($str,4,2);
|
||||||
$day = (int)substr($str,6,2);
|
$day = (int)substr($str,6,2);
|
||||||
|
if(strlen($str) <= 8)
|
||||||
|
{
|
||||||
|
$gap = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$time_zone = $GLOBALS['_time_zone'];
|
||||||
|
if($time_zone<0) $to = -1; else $to = 1;
|
||||||
|
$t_hour = substr($time_zone,1,2)*$to;
|
||||||
|
$t_min = substr($time_zone,3,2)*$to;
|
||||||
|
|
||||||
$time_zone = $GLOBALS['_time_zone'];
|
$server_time_zone = date("O");
|
||||||
if($time_zone<0) $to = -1; else $to = 1;
|
if($server_time_zone<0) $so = -1; else $so = 1;
|
||||||
$t_hour = substr($time_zone,1,2)*$to;
|
$c_hour = substr($server_time_zone,1,2)*$so;
|
||||||
$t_min = substr($time_zone,3,2)*$to;
|
$c_min = substr($server_time_zone,3,2)*$so;
|
||||||
|
|
||||||
$server_time_zone = date("O");
|
$g_min = $t_min - $c_min;
|
||||||
if($server_time_zone<0) $so = -1; else $so = 1;
|
$g_hour = $t_hour - $c_hour;
|
||||||
$c_hour = substr($server_time_zone,1,2)*$so;
|
|
||||||
$c_min = substr($server_time_zone,3,2)*$so;
|
|
||||||
|
|
||||||
$g_min = $t_min - $c_min;
|
$gap = $g_min*60 + $g_hour*60*60;
|
||||||
$g_hour = $t_hour - $c_hour;
|
}
|
||||||
|
|
||||||
$gap = $g_min*60 + $g_hour*60*60;
|
|
||||||
|
|
||||||
return mktime($hour, $min, $sec, $month?$month:1, $day?$day:1, $year)+$gap;
|
return mktime($hour, $min, $sec, $month?$month:1, $day?$day:1, $year)+$gap;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
16
index.php
16
index.php
|
|
@ -19,7 +19,21 @@
|
||||||
* - SVN Repository : http://svn.zeroboard.com/zeroboard_xe/trunk
|
* - SVN Repository : http://svn.zeroboard.com/zeroboard_xe/trunk
|
||||||
* - document : http://doc.zeroboard.com
|
* - document : http://doc.zeroboard.com
|
||||||
* - pdf 문서 : http://doc.zeroboard.com/zeroboard_xe.pdf
|
* - pdf 문서 : http://doc.zeroboard.com/zeroboard_xe.pdf
|
||||||
*
|
* \n
|
||||||
|
* \n
|
||||||
|
* Copyright (C) 2007년 고영수(skklove@gmail.com) \n
|
||||||
|
* \n
|
||||||
|
* "Zeroboard™ XE"는 자유 소프트웨어입니다. \n
|
||||||
|
* 소프트웨어의 피양도자는 자유 소프트웨어 재단이 공표한 GNU 일반 공중 사용 허가서 2판 또는 \n
|
||||||
|
* 그 이후 판을 임의로 선택해서, 그 규정에 따라 프로그램을 개작하거나 재배포할 수 있습니다. \n
|
||||||
|
* \n
|
||||||
|
* 이 프로그램은 유용하게 사용될 수 있으리라는 희망에서 배포되고 있지만, 특정한 목적에 맞는 적합성 \n
|
||||||
|
* 여부나 판매용으로 사용할 수 있으리라는 묵시적인 보증을 포함한 어떠한 형태의 보증도 제공하지 않습니다. \n
|
||||||
|
* 보다 자세한 사항에 대해서는 GNU 일반 공중 사용 허가서를 참고하시기 바랍니다. \n
|
||||||
|
* \n
|
||||||
|
* GNU 일반 공중 사용 허가서는 이 프로그램과 함께 제공됩니다. 만약, 이 문서가 누락되어 있다면 자유 소프트웨어\n
|
||||||
|
* 재단으로 문의하시기 바랍니다. \n
|
||||||
|
* (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA)
|
||||||
**/
|
**/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -50,5 +50,13 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
$oAddonController = &getAdminController('addon');
|
||||||
|
$oAddonController->makeCacheFile();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -55,5 +55,19 @@
|
||||||
$output = executeQuery('admin.insertShortCut', $args);
|
$output = executeQuery('admin.insertShortCut', $args);
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 모든 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function procAdminRecompileCacheFile() {
|
||||||
|
$oModuleModel = &getModel('module');
|
||||||
|
$module_list = $oModuleModel->getModuleList();
|
||||||
|
|
||||||
|
foreach($module_list as $module) {
|
||||||
|
$oModule = null;
|
||||||
|
$oModule = &getClass($module->module);
|
||||||
|
if(method_exists($oModule, 'recompileCache')) $oModule->recompileCache();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -42,5 +42,29 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
|
||||||
|
// 템플릿 컴파일 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/template_compiled");
|
||||||
|
|
||||||
|
// optimized 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/optimized");
|
||||||
|
|
||||||
|
// js_filter_compiled 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/js_filter_compiled");
|
||||||
|
|
||||||
|
// queries 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/queries");
|
||||||
|
|
||||||
|
// ./files/cache/news* 파일 삭제
|
||||||
|
$directory = dir("./files/cache/");
|
||||||
|
while($entry = $directory->read()) {
|
||||||
|
if(substr($entry,0,11)=='newest_news') @unlink("./files/cache/".$entry);
|
||||||
|
}
|
||||||
|
$directory->close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,6 @@
|
||||||
|
|
||||||
<action name="procAdminInsertShortCut" type="controller" standalone="true" />
|
<action name="procAdminInsertShortCut" type="controller" standalone="true" />
|
||||||
<action name="procAdminDeleteShortCut" type="controller" standalone="true" />
|
<action name="procAdminDeleteShortCut" type="controller" standalone="true" />
|
||||||
|
<action name="procAdminRecompileCacheFile" type="controller" standalone="true" />
|
||||||
</actions>
|
</actions>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
||||||
|
|
@ -67,12 +67,15 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div class="tRight gap1">
|
<div class="fl tLeft gap1">
|
||||||
|
<span class="button"><input type="button" value="{$lang->cmd_remake_cache}" onclick="doRecompileCacheFile(); return false;"/></span>
|
||||||
|
</div>
|
||||||
|
<div class="fr tRight gap1">
|
||||||
<span class="button"><input type="submit" value="{$lang->cmd_save}" /></span>
|
<span class="button"><input type="submit" value="{$lang->cmd_save}" /></span>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="admin_news">
|
<div class="admin_news clear">
|
||||||
<!--@if($news)-->
|
<!--@if($news)-->
|
||||||
<table cellspacing="0" class="tableType1">
|
<table cellspacing="0" class="tableType1">
|
||||||
<caption>{$lang->newest_news}</caption>
|
<caption>{$lang->newest_news}</caption>
|
||||||
|
|
|
||||||
|
|
@ -29,3 +29,8 @@ function fixAdminNaviHeight() {
|
||||||
else xHeight('content',naviHeight);
|
else xHeight('content',naviHeight);
|
||||||
setTimeout(fixAdminNaviHeight, 500);
|
setTimeout(fixAdminNaviHeight, 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 캐시파일 모두 재 생성
|
||||||
|
function doRecompileCacheFile() {
|
||||||
|
exec_xml("admin","procAdminRecompileCacheFile");
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,5 +49,28 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// 블로그 모듈의 캐시 파일 모두 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/blog_category");
|
||||||
|
|
||||||
|
$oModuleModel = &getModel('module');
|
||||||
|
$oBlogAdminController = &getAdminController('blog');
|
||||||
|
|
||||||
|
// 블로그 모듈 목록을 모두 구함
|
||||||
|
$args->module = 'blog';
|
||||||
|
$output = executeQueryArray("module.getMidList", $args);
|
||||||
|
$list = $output->data;
|
||||||
|
if(!count($list)) return;
|
||||||
|
|
||||||
|
// 블로그 모듈에서 사용되는 모든 메뉴 목록을 재 생성
|
||||||
|
foreach($list as $blog_item) {
|
||||||
|
$module_srl = $blog_item->module_srl;
|
||||||
|
$oBlogAdminController->makeXmlFile($module_srl);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -73,5 +73,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,12 @@
|
||||||
$oCommentController = &getController('comment');
|
$oCommentController = &getController('comment');
|
||||||
|
|
||||||
// comment_srl이 존재하는지 체크
|
// comment_srl이 존재하는지 체크
|
||||||
$comment = $oCommentModel->getComment($obj->comment_srl, $this->grant->manager);
|
// 만일 comment_srl이 n/a라면 getNextSequence()로 값을 얻어온다.
|
||||||
|
if(!$obj->comment_srl) {
|
||||||
|
$obj->comment_srl = getNextSequence();
|
||||||
|
} else {
|
||||||
|
$comment = $oCommentModel->getComment($obj->comment_srl, $this->grant->manager);
|
||||||
|
}
|
||||||
|
|
||||||
// comment_srl이 없을 경우 신규 입력
|
// comment_srl이 없을 경우 신규 입력
|
||||||
if($comment->comment_srl != $obj->comment_srl) {
|
if($comment->comment_srl != $obj->comment_srl) {
|
||||||
|
|
@ -146,7 +151,7 @@
|
||||||
$this->setMessage('success_registed');
|
$this->setMessage('success_registed');
|
||||||
$this->add('mid', Context::get('mid'));
|
$this->add('mid', Context::get('mid'));
|
||||||
$this->add('document_srl', $obj->document_srl);
|
$this->add('document_srl', $obj->document_srl);
|
||||||
$this->add('comment_srl', $comment_srl);
|
$this->add('comment_srl', $obj->comment_srl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// 글 보기 권한을 체크해서 권한이 없으면 오류 메세지 출력하도록 처리
|
// 글 보기 권한을 체크해서 권한이 없으면 오류 메세지 출력하도록 처리
|
||||||
if(!$this->grant->view) {
|
if(!$this->grant->view && !$oDocument->isGranted()) {
|
||||||
|
|
||||||
$oDocument = null;
|
$oDocument = null;
|
||||||
$oDocument = $oDocumentModel->getDocument(0, $this->grant->manager);
|
$oDocument = $oDocumentModel->getDocument(0, $this->grant->manager);
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<!--#include("header.html")-->
|
<!--#include("header.html")-->
|
||||||
|
|
||||||
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
||||||
<!--@if($oDocument->isExists() && $grant->view)-->
|
<!--@if($oDocument->isExists())-->
|
||||||
<!--#include("./view_document.html")-->
|
<!--#include("./view_document.html")-->
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
|
@ -61,11 +61,7 @@
|
||||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
||||||
|
|
@ -106,11 +102,8 @@
|
||||||
<!--@if($grant->is_admin)-->
|
<!--@if($grant->is_admin)-->
|
||||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
<!--@if($grant->view)-->
|
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText(8,'')}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies">(<strong>{$document->getCommentCount()}</strong>)</span>
|
<span class="replyAndTrackback" title="Replies">(<strong>{$document->getCommentCount()}</strong>)</span>
|
||||||
|
|
@ -137,52 +130,52 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- 페이지 네비게이션 -->
|
||||||
|
<div class="pageNavigation">
|
||||||
|
|
||||||
|
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||||
|
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||||
|
<!--@if($page == $page_no)-->
|
||||||
|
<span class="current">{$page_no}</span>
|
||||||
|
<!--@else-->
|
||||||
|
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
||||||
|
<!--@end-->
|
||||||
|
<!--@end-->
|
||||||
|
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 글쓰기, 목록 버튼 -->
|
||||||
|
<div class="buttonBox">
|
||||||
|
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','')}"><img src="./images/common/btn_list.gif" alt="{$lang->cmd_list}" /></a>
|
||||||
|
<!--@if($grant->write_document)-->
|
||||||
|
<a href="{getUrl('act','dispBoardWrite','document_srl','')}"><img src="./images/common/btn_write.gif" alt="{$lang->cmd_write}" /></a>
|
||||||
|
<!--@end-->
|
||||||
|
<!--@if($grant->is_admin)-->
|
||||||
|
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;"><img src="./images/common/btn_manage.gif" alt="{$lang->cmd_manage_document}" /></a>
|
||||||
|
<!--@end-->
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
<!-- 검색 -->
|
||||||
<!--@if($grant->view)-->
|
<!--@if($grant->view)-->
|
||||||
<!-- 페이지 네비게이션 -->
|
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearch">
|
||||||
<div class="pageNavigation">
|
<input type="hidden" name="mid" value="{$mid}" />
|
||||||
|
<input type="hidden" name="category" value="{$category}" />
|
||||||
|
|
||||||
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
<fieldset>
|
||||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
<select name="search_target">
|
||||||
<!--@if($page == $page_no)-->
|
<!--@foreach($search_option as $key => $val)-->
|
||||||
<span class="current">{$page_no}</span>
|
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||||
<!--@else-->
|
|
||||||
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
<!--@end-->
|
</select>
|
||||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
||||||
</div>
|
<ul class="searchButton">
|
||||||
|
<li><input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" /></li>
|
||||||
|
<li><a href="{getUrl('','mid',$mid)}"><img src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" /></a></li>
|
||||||
<!-- 글쓰기, 목록 버튼 -->
|
</ul>
|
||||||
<div class="buttonBox">
|
</fieldset>
|
||||||
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','')}"><img src="./images/common/btn_list.gif" alt="{$lang->cmd_list}" /></a>
|
</form>
|
||||||
<!--@if($grant->write_document)-->
|
|
||||||
<a href="{getUrl('act','dispBoardWrite','document_srl','')}"><img src="./images/common/btn_write.gif" alt="{$lang->cmd_write}" /></a>
|
|
||||||
<!--@end-->
|
|
||||||
<!--@if($grant->is_admin)-->
|
|
||||||
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;"><img src="./images/common/btn_manage.gif" alt="{$lang->cmd_manage_document}" /></a>
|
|
||||||
<!--@end-->
|
|
||||||
</div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
|
|
||||||
<!-- 검색 -->
|
|
||||||
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearch">
|
|
||||||
<input type="hidden" name="mid" value="{$mid}" />
|
|
||||||
<input type="hidden" name="category" value="{$category}" />
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<select name="search_target">
|
|
||||||
<!--@foreach($search_option as $key => $val)-->
|
|
||||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
|
||||||
<!--@end-->
|
|
||||||
</select>
|
|
||||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
|
||||||
<ul class="searchButton">
|
|
||||||
<li><input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" /></li>
|
|
||||||
<li><a href="{getUrl('','mid',$mid)}"><img src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" /></a></li>
|
|
||||||
</ul>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--#include("footer.html")-->
|
<!--#include("footer.html")-->
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<!--#include("header.html")-->
|
<!--#include("header.html")-->
|
||||||
|
|
||||||
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
||||||
<!--@if($oDocument->isExists() && $grant->view)-->
|
<!--@if($oDocument->isExists())-->
|
||||||
<!--#include("./view_document.html")-->
|
<!--#include("./view_document.html")-->
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
|
@ -18,6 +18,13 @@
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<table cellspacing="0" summary="board list" class="boardList">
|
<table cellspacing="0" summary="board list" class="boardList">
|
||||||
|
<!--@if($module_info->display_number!='N')--><col width="80" /><!--@end-->
|
||||||
|
<col />
|
||||||
|
<!--@if($module_info->display_author!='N')--><col width="120" /><!--@end-->
|
||||||
|
<!--@if($module_info->display_readed_count!='N')--><col width="70" /><!--@end-->
|
||||||
|
<!--@if($module_info->display_voted_count!='N')--><col width="70" /><!--@end-->
|
||||||
|
<!--@if($module_info->display_regdate != 'N')--><col width="90" /><!--@end-->
|
||||||
|
<!--@if($module_info->display_last_update == 'Y')--><col width="90" /><!--@end-->
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<!--@if($module_info->display_number!='N')-->
|
<!--@if($module_info->display_number!='N')-->
|
||||||
|
|
@ -79,11 +86,7 @@
|
||||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
||||||
|
|
@ -92,6 +95,8 @@
|
||||||
<!--@if($document->getTrackbackCount())-->
|
<!--@if($document->getTrackbackCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies & Trackbacks">[T<strong>{$document->getTrackbackCount()}</strong>]</span>
|
<span class="replyAndTrackback" title="Replies & Trackbacks">[T<strong>{$document->getTrackbackCount()}</strong>]</span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
{$document->printExtraImages(60*60*2)}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<!--@if($module_info->display_author!='N')--><td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td><!--@end-->
|
<!--@if($module_info->display_author!='N')--><td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td><!--@end-->
|
||||||
|
|
@ -103,52 +108,52 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- 페이지 네비게이션 -->
|
||||||
|
<div class="pageNavigation">
|
||||||
|
|
||||||
|
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||||
|
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||||
|
<!--@if($page == $page_no)-->
|
||||||
|
<span class="current">{$page_no}</span>
|
||||||
|
<!--@else-->
|
||||||
|
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
||||||
|
<!--@end-->
|
||||||
|
<!--@end-->
|
||||||
|
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 글쓰기, 목록 버튼 -->
|
||||||
|
<div class="buttonBox">
|
||||||
|
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','')}"><img src="./images/common/btn_list.gif" alt="{$lang->cmd_list}" /></a>
|
||||||
|
<!--@if($grant->write_document)-->
|
||||||
|
<a href="{getUrl('act','dispBoardWrite','document_srl','')}"><img src="./images/common/btn_write.gif" alt="{$lang->cmd_write}" /></a>
|
||||||
|
<!--@end-->
|
||||||
|
<!--@if($grant->is_admin)-->
|
||||||
|
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;"><img src="./images/common/btn_manage.gif" alt="{$lang->cmd_manage_document}" /></a>
|
||||||
|
<!--@end-->
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
<!-- 검색 -->
|
||||||
<!--@if($grant->view)-->
|
<!--@if($grant->view)-->
|
||||||
<!-- 페이지 네비게이션 -->
|
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearch">
|
||||||
<div class="pageNavigation">
|
<input type="hidden" name="mid" value="{$mid}" />
|
||||||
|
<input type="hidden" name="category" value="{$category}" />
|
||||||
|
|
||||||
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
<fieldset>
|
||||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
<select name="search_target">
|
||||||
<!--@if($page == $page_no)-->
|
<!--@foreach($search_option as $key => $val)-->
|
||||||
<span class="current">{$page_no}</span>
|
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||||
<!--@else-->
|
|
||||||
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
<!--@end-->
|
</select>
|
||||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
||||||
</div>
|
<ul class="searchButton">
|
||||||
|
<li><input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" /></li>
|
||||||
|
<li><a href="{getUrl('','mid',$mid)}"><img src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" /></a></li>
|
||||||
<!-- 글쓰기, 목록 버튼 -->
|
</ul>
|
||||||
<div class="buttonBox">
|
</fieldset>
|
||||||
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','')}"><img src="./images/common/btn_list.gif" alt="{$lang->cmd_list}" /></a>
|
</form>
|
||||||
<!--@if($grant->write_document)-->
|
|
||||||
<a href="{getUrl('act','dispBoardWrite','document_srl','')}"><img src="./images/common/btn_write.gif" alt="{$lang->cmd_write}" /></a>
|
|
||||||
<!--@end-->
|
|
||||||
<!--@if($grant->is_admin)-->
|
|
||||||
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;"><img src="./images/common/btn_manage.gif" alt="{$lang->cmd_manage_document}" /></a>
|
|
||||||
<!--@end-->
|
|
||||||
</div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
|
|
||||||
<!-- 검색 -->
|
|
||||||
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearch">
|
|
||||||
<input type="hidden" name="mid" value="{$mid}" />
|
|
||||||
<input type="hidden" name="category" value="{$category}" />
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<select name="search_target">
|
|
||||||
<!--@foreach($search_option as $key => $val)-->
|
|
||||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
|
||||||
<!--@end-->
|
|
||||||
</select>
|
|
||||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
|
||||||
<ul class="searchButton">
|
|
||||||
<li><input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" /></li>
|
|
||||||
<li><a href="{getUrl('','mid',$mid)}"><img src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" /></a></li>
|
|
||||||
</ul>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--#include("footer.html")-->
|
<!--#include("footer.html")-->
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<!--#include("header.html")-->
|
<!--#include("header.html")-->
|
||||||
|
|
||||||
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
||||||
<!--@if($oDocument->isExists() && $grant->view)-->
|
<!--@if($oDocument->isExists())-->
|
||||||
<!--#include("./view_document.html")-->
|
<!--#include("./view_document.html")-->
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
|
@ -61,11 +61,7 @@
|
||||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
||||||
|
|
@ -74,6 +70,8 @@
|
||||||
<!--@if($document->getTrackbackCount())-->
|
<!--@if($document->getTrackbackCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies & Trackbacks">[T<strong>{$document->getTrackbackCount()}</strong>]</span>
|
<span class="replyAndTrackback" title="Replies & Trackbacks">[T<strong>{$document->getTrackbackCount()}</strong>]</span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
{$document->printExtraImages(60*60*2)}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
||||||
|
|
@ -102,11 +100,7 @@
|
||||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
<span class="replyAndTrackback" title="Replies & Trackbacks">[R<strong>{$document->getCommentCount()}</strong>]</span>
|
||||||
|
|
@ -115,6 +109,8 @@
|
||||||
<!--@if($document->getTrackbackCount())-->
|
<!--@if($document->getTrackbackCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies & Trackbacks">[T<strong>{$document->getTrackbackCount()}</strong>]</span>
|
<span class="replyAndTrackback" title="Replies & Trackbacks">[T<strong>{$document->getTrackbackCount()}</strong>]</span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
{$document->printExtraImages(60*60*2)}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="author noline"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
<td class="author noline"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
||||||
|
|
@ -130,52 +126,52 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- 페이지 네비게이션 -->
|
||||||
|
<div class="pageNavigation">
|
||||||
|
|
||||||
|
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
||||||
|
<!--@while($page_no = $page_navigation->getNextPage())-->
|
||||||
|
<!--@if($page == $page_no)-->
|
||||||
|
<span class="current">{$page_no}</span>
|
||||||
|
<!--@else-->
|
||||||
|
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
||||||
|
<!--@end-->
|
||||||
|
<!--@end-->
|
||||||
|
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 글쓰기, 목록 버튼 -->
|
||||||
|
<div class="buttonBox">
|
||||||
|
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','')}"><img src="./images/common/btn_list.gif" alt="{$lang->cmd_list}" /></a>
|
||||||
|
<!--@if($grant->write_document)-->
|
||||||
|
<a href="{getUrl('act','dispBoardWrite','document_srl','')}"><img src="./images/common/btn_write.gif" alt="{$lang->cmd_write}" /></a>
|
||||||
|
<!--@end-->
|
||||||
|
<!--@if($grant->is_admin)-->
|
||||||
|
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;"><img src="./images/common/btn_manage.gif" alt="{$lang->cmd_manage_document}" /></a>
|
||||||
|
<!--@end-->
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
|
<!-- 검색 -->
|
||||||
<!--@if($grant->view)-->
|
<!--@if($grant->view)-->
|
||||||
<!-- 페이지 네비게이션 -->
|
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearch">
|
||||||
<div class="pageNavigation">
|
<input type="hidden" name="mid" value="{$mid}" />
|
||||||
|
<input type="hidden" name="category" value="{$category}" />
|
||||||
|
|
||||||
<a href="{getUrl('page','','document_srl','')}" class="goToFirst"><img src="./images/common/icon_gofirst.gif" alt="{$lang->first_page}" width="7" height="5" /></a>
|
<fieldset>
|
||||||
<!--@while($page_no = $page_navigation->getNextPage())-->
|
<select name="search_target">
|
||||||
<!--@if($page == $page_no)-->
|
<!--@foreach($search_option as $key => $val)-->
|
||||||
<span class="current">{$page_no}</span>
|
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||||
<!--@else-->
|
|
||||||
<a href="{getUrl('page',$page_no,'document_srl','')}">{$page_no}</a>
|
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
<!--@end-->
|
</select>
|
||||||
<a href="{getUrl('page',$page_navigation->last_page,'document_srl','')}" class="goToLast"><img src="./images/common/icon_golast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
||||||
</div>
|
<ul class="searchButton">
|
||||||
|
<li><input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" /></li>
|
||||||
|
<li><a href="{getUrl('','mid',$mid)}"><img src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" /></a></li>
|
||||||
<!-- 글쓰기, 목록 버튼 -->
|
</ul>
|
||||||
<div class="buttonBox">
|
</fieldset>
|
||||||
<a href="{getUrl('','mid',$mid,'page',$page,'document_srl','')}"><img src="./images/common/btn_list.gif" alt="{$lang->cmd_list}" /></a>
|
</form>
|
||||||
<!--@if($grant->write_document)-->
|
|
||||||
<a href="{getUrl('act','dispBoardWrite','document_srl','')}"><img src="./images/common/btn_write.gif" alt="{$lang->cmd_write}" /></a>
|
|
||||||
<!--@end-->
|
|
||||||
<!--@if($grant->is_admin)-->
|
|
||||||
<a href="{getUrl('act','dispBoardAdminManageDocument')}" onclick="popopen(this.href,'manageDocument'); return false;"><img src="./images/common/btn_manage.gif" alt="{$lang->cmd_manage_document}" /></a>
|
|
||||||
<!--@end-->
|
|
||||||
</div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
|
|
||||||
<!-- 검색 -->
|
|
||||||
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search" class="boardSearch">
|
|
||||||
<input type="hidden" name="mid" value="{$mid}" />
|
|
||||||
<input type="hidden" name="category" value="{$category}" />
|
|
||||||
|
|
||||||
<fieldset>
|
|
||||||
<select name="search_target">
|
|
||||||
<!--@foreach($search_option as $key => $val)-->
|
|
||||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
|
||||||
<!--@end-->
|
|
||||||
</select>
|
|
||||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
|
||||||
<ul class="searchButton">
|
|
||||||
<li><input type="image" src="./images/common/btn_search.gif" alt="{$lang->cmd_search}" /></li>
|
|
||||||
<li><a href="{getUrl('','mid',$mid)}"><img src="./images/common/btn_cancel.gif" alt="{$lang->cmd_cancel}" /></a></li>
|
|
||||||
</ul>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--#include("footer.html")-->
|
<!--#include("footer.html")-->
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<!--#include("header.html")-->
|
<!--#include("header.html")-->
|
||||||
|
|
||||||
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
||||||
<!--@if($oDocument->isExists() && $grant->view)-->
|
<!--@if($oDocument->isExists())-->
|
||||||
<!--#include("./view_document.html")-->
|
<!--#include("./view_document.html")-->
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
|
@ -60,11 +60,8 @@
|
||||||
<!--@if($grant->is_admin)-->
|
<!--@if($grant->is_admin)-->
|
||||||
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
<input type="checkbox" value="{$document->document_srl}" onclick="doAddCart('{$mid}',this)" <!--@if($check_list[$document->document_srl])-->checked="checked"<!--@end--> />
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
<!--@if($grant->view)-->
|
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
||||||
|
|
@ -73,6 +70,8 @@
|
||||||
<!--@if($document->getTrackbackCount())-->
|
<!--@if($document->getTrackbackCount())-->
|
||||||
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
{$document->printExtraImages(60*60*2)}
|
||||||
</td>
|
</td>
|
||||||
<td class="reading">{$document->get('readed_count')}</td>
|
<td class="reading">{$document->get('readed_count')}</td>
|
||||||
<td class="recommend">{$document->get('voted_count')}</td>
|
<td class="recommend">{$document->get('voted_count')}</td>
|
||||||
|
|
@ -136,7 +135,6 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
|
||||||
<div class="clear">
|
<div class="clear">
|
||||||
<!-- 글쓰기, 목록 버튼 -->
|
<!-- 글쓰기, 목록 버튼 -->
|
||||||
<div class="gap1 fr">
|
<div class="gap1 fr">
|
||||||
|
|
@ -170,25 +168,26 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- 검색 -->
|
<!-- 검색 -->
|
||||||
|
<!--@if($grant->view)-->
|
||||||
<div class="boardSearch">
|
<div class="boardSearch">
|
||||||
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
|
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
|
||||||
<input type="hidden" name="mid" value="{$mid}" />
|
<input type="hidden" name="mid" value="{$mid}" />
|
||||||
<input type="hidden" name="category" value="{$category}" />
|
<input type="hidden" name="category" value="{$category}" />
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{$lang->cmd_search}</legend>
|
<legend>{$lang->cmd_search}</legend>
|
||||||
<select name="search_target">
|
<select name="search_target">
|
||||||
<!--@foreach($search_option as $key => $val)-->
|
<!--@foreach($search_option as $key => $val)-->
|
||||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
</select>
|
</select>
|
||||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
||||||
<a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a>
|
<a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a>
|
||||||
<a href="{getUrl('','mid',$mid)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
<a href="{getUrl('','mid',$mid)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<!--@end-->
|
||||||
</div>
|
</div>
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--#include("footer.html")-->
|
<!--#include("footer.html")-->
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<!--#include("header.html")-->
|
<!--#include("header.html")-->
|
||||||
|
|
||||||
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
||||||
<!--@if($oDocument->isExists() && $grant->view)-->
|
<!--@if($oDocument->isExists())-->
|
||||||
<!--#include("./view_document.html")-->
|
<!--#include("./view_document.html")-->
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
|
@ -94,11 +94,7 @@
|
||||||
<a href="{getUrl('','document_srl',$document->document_srl)}" class="thumbnailMedium"><img src="{$document->getThumbnail(100)}" border="0" alt="" /></a>
|
<a href="{getUrl('','document_srl',$document->document_srl)}" class="thumbnailMedium"><img src="{$document->getThumbnail(100)}" border="0" alt="" /></a>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
||||||
|
|
@ -107,6 +103,8 @@
|
||||||
<!--@if($document->getTrackbackCount())-->
|
<!--@if($document->getTrackbackCount())-->
|
||||||
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
{$document->printExtraImages(60*60*2)}
|
||||||
</td>
|
</td>
|
||||||
<!--@if($module_info->display_author!='N')--><td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td><!--@end-->
|
<!--@if($module_info->display_author!='N')--><td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td><!--@end-->
|
||||||
<!--@if($module_info->display_readed_count!='N')--><td class="reading">{$document->get('readed_count')>0?$document->get('readed_count'):' '}</td><!--@end-->
|
<!--@if($module_info->display_readed_count!='N')--><td class="reading">{$document->get('readed_count')>0?$document->get('readed_count'):' '}</td><!--@end-->
|
||||||
|
|
@ -118,7 +116,6 @@
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
|
||||||
<div class="clear">
|
<div class="clear">
|
||||||
|
|
||||||
<!-- 글쓰기, 목록 버튼 -->
|
<!-- 글쓰기, 목록 버튼 -->
|
||||||
|
|
@ -153,23 +150,24 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- 검색 -->
|
<!-- 검색 -->
|
||||||
|
<!--@if($grant->view)-->
|
||||||
<div class="boardSearch">
|
<div class="boardSearch">
|
||||||
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
|
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
|
||||||
<input type="hidden" name="mid" value="{$mid}" />
|
<input type="hidden" name="mid" value="{$mid}" />
|
||||||
<input type="hidden" name="category" value="{$category}" />
|
<input type="hidden" name="category" value="{$category}" />
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{$lang->cmd_search}</legend>
|
<legend>{$lang->cmd_search}</legend>
|
||||||
<select name="search_target">
|
<select name="search_target">
|
||||||
<!--@foreach($search_option as $key => $val)-->
|
<!--@foreach($search_option as $key => $val)-->
|
||||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
</select>
|
</select>
|
||||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/><a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a><a href="{getUrl('','mid',$mid)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/><a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a><a href="{getUrl('','mid',$mid)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<!--@end-->
|
||||||
</div>
|
</div>
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--#include("footer.html")-->
|
<!--#include("footer.html")-->
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<!--#include("header.html")-->
|
<!--#include("header.html")-->
|
||||||
|
|
||||||
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
<!-- 선택된 게시물이 있고 권한이 있으면 내용 출력 -->
|
||||||
<!--@if($oDocument->isExists() && $grant->view)-->
|
<!--@if($oDocument->isExists())-->
|
||||||
<!--#include("./view_document.html")-->
|
<!--#include("./view_document.html")-->
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
|
@ -77,11 +77,8 @@
|
||||||
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
||||||
<strong class="category">{$category_list[$document->get('category_srl')]->title}</strong>
|
<strong class="category">{$category_list[$document->get('category_srl')]->title}</strong>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
<!--@if($grant->view)-->
|
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
||||||
|
|
@ -90,6 +87,8 @@
|
||||||
<!--@if($document->getTrackbackCount())-->
|
<!--@if($document->getTrackbackCount())-->
|
||||||
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
{$document->printExtraImages(60*60*2)}
|
||||||
</td>
|
</td>
|
||||||
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
||||||
<td class="reading">{$document->get('readed_count')}</td>
|
<td class="reading">{$document->get('readed_count')}</td>
|
||||||
|
|
@ -115,11 +114,8 @@
|
||||||
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
<!--@if($module_info->use_category == "Y" && $document->get('category_srl'))-->
|
||||||
<strong>{$category_list[$document->get('category_srl')]->title}</strong>
|
<strong>{$category_list[$document->get('category_srl')]->title}</strong>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
<!--@if($grant->view)-->
|
|
||||||
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
<a href="{getUrl('document_srl',$document->document_srl)}">{$document->getTitleText($module_info->subject_cut_size)}</a>
|
||||||
<!--@else-->
|
|
||||||
{$document->getTitleText($module_info->subject_cut_size)}
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($document->getCommentCount())-->
|
<!--@if($document->getCommentCount())-->
|
||||||
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
<span class="replyAndTrackback" title="Replies"><img src="./images/common/iconReply.gif" alt="" width="12" height="12" class="icon" /> <strong>{$document->getCommentCount()}</strong></span>
|
||||||
|
|
@ -128,6 +124,7 @@
|
||||||
<!--@if($document->getTrackbackCount())-->
|
<!--@if($document->getTrackbackCount())-->
|
||||||
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
<span class="replyAndTrackback" title="Trackbacks"><img src="./images/common/iconTrackback.gif" alt="" width="12" height="13" class="trackback icon" /> <strong>{$document->getTrackbackCount()}</strong></span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
{$document->printExtraImages(60*60*2)}
|
||||||
</td>
|
</td>
|
||||||
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
<td class="author"><div class="member_{$document->get('member_srl')}">{$document->getNickName()}</div></td>
|
||||||
<td class="reading">{$document->get('readed_count')}</td>
|
<td class="reading">{$document->get('readed_count')}</td>
|
||||||
|
|
@ -148,7 +145,6 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
<!--@if($grant->view)-->
|
|
||||||
<div class="clear">
|
<div class="clear">
|
||||||
<!-- 글쓰기, 목록 버튼 -->
|
<!-- 글쓰기, 목록 버튼 -->
|
||||||
<div class="gap1 fr">
|
<div class="gap1 fr">
|
||||||
|
|
@ -182,25 +178,26 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- 검색 -->
|
<!-- 검색 -->
|
||||||
|
<!--@if($grant->view)-->
|
||||||
<div class="boardSearch">
|
<div class="boardSearch">
|
||||||
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
|
<form action="{getUrl()}" method="get" onsubmit="return procFilter(this, search)" id="fo_search">
|
||||||
<input type="hidden" name="mid" value="{$mid}" />
|
<input type="hidden" name="mid" value="{$mid}" />
|
||||||
<input type="hidden" name="category" value="{$category}" />
|
<input type="hidden" name="category" value="{$category}" />
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{$lang->cmd_search}</legend>
|
<legend>{$lang->cmd_search}</legend>
|
||||||
<select name="search_target">
|
<select name="search_target">
|
||||||
<!--@foreach($search_option as $key => $val)-->
|
<!--@foreach($search_option as $key => $val)-->
|
||||||
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
</select>
|
</select>
|
||||||
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText"/>
|
||||||
<a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a>
|
<a href="#" onclick="xGetElementById('fo_search').submit();return false;" class="button"><span>{$lang->cmd_search}</span></a>
|
||||||
<a href="{getUrl('','mid',$mid)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
<a href="{getUrl('','mid',$mid)}" class="button"><span>{$lang->cmd_cancel}</span></a>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<!--@end-->
|
||||||
</div>
|
</div>
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--#include("footer.html")-->
|
<!--#include("footer.html")-->
|
||||||
|
|
|
||||||
|
|
@ -32,5 +32,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -40,5 +40,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -105,5 +105,10 @@
|
||||||
return new Object(0,'success_updated');
|
return new Object(0,'success_updated');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -270,7 +270,7 @@
|
||||||
return $oTrackbackModel->getTrackbackList($this->document_srl, $is_admin);
|
return $oTrackbackModel->getTrackbackList($this->document_srl, $is_admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
function thumbnailExists($width, $height) {
|
function thumbnailExists($width = 80, $height = 0) {
|
||||||
if(!$this->getThumbnail($width, $height)) return false;
|
if(!$this->getThumbnail($width, $height)) return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -341,6 +341,62 @@
|
||||||
return Context::getRequestUri().$thumbnail_file;
|
return Context::getRequestUri().$thumbnail_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 새글, 최신 업데이트글, 비밀글, 이미지/동영상/첨부파일등의 아이콘 출력용 함수
|
||||||
|
* $time_interval 에 지정된 시간(초)로 새글/최신 업데이트글의 판별
|
||||||
|
**/
|
||||||
|
function getExtraImages($time_interval = 7200) {
|
||||||
|
|
||||||
|
// 아이콘 목록을 담을 변수 미리 설정
|
||||||
|
$buffs = array();
|
||||||
|
|
||||||
|
// 최신 시간 설정
|
||||||
|
$time_check = date("YmdHis", time()-$time_interval);
|
||||||
|
|
||||||
|
// 새글 체크
|
||||||
|
if($this->get('regdate')>$time_check) $buffs[] = "new";
|
||||||
|
else if($this->get('last_update')>$time_check) $buffs[] = "update";
|
||||||
|
|
||||||
|
// 비밀글 체크
|
||||||
|
if($this->isSecret()) $buffs[] = "secret";
|
||||||
|
|
||||||
|
$check_files = false;
|
||||||
|
|
||||||
|
// 사진 이미지 체크
|
||||||
|
if(preg_match('!<img([^>]*?)>!is', $this->get('content'))) {
|
||||||
|
$buffs[] = "image";
|
||||||
|
$check_files = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 동영상 체크
|
||||||
|
if(preg_match('!<embed([^>]*?)>!is', $this->get('content'))) {
|
||||||
|
$buffs[] = "movie";
|
||||||
|
$check_files = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 첨부파일 체크
|
||||||
|
if(!$check_files && $this->hasUploadedFiles()) $buffs[] = "file";
|
||||||
|
|
||||||
|
return $buffs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief getExtraImages로 구한 값을 이미지 태그를 씌워서 리턴
|
||||||
|
**/
|
||||||
|
function printExtraImages($time_check = 7200) {
|
||||||
|
// 아이콘 디렉토리 구함
|
||||||
|
$path = sprintf('%s%s',getUrl(), 'modules/document/tpl/icons/');
|
||||||
|
|
||||||
|
$buffs = $this->getExtraImages($time_check);
|
||||||
|
if(!count($buffs)) return;
|
||||||
|
|
||||||
|
$buff = null;
|
||||||
|
foreach($buffs as $key => $val) {
|
||||||
|
$buff .= sprintf('<img src="%s%s.gif" alt="%s" title="%s" width="13" height="13" align="absmiddle"/>', $path, $val, $val, $val);
|
||||||
|
}
|
||||||
|
return $buff;
|
||||||
|
}
|
||||||
|
|
||||||
function hasUploadedFiles() {
|
function hasUploadedFiles() {
|
||||||
if($this->isSecret() && !$this->isGranted()) return false;
|
if($this->isSecret() && !$this->isGranted()) return false;
|
||||||
return $this->get('uploaded_count')? true : false;
|
return $this->get('uploaded_count')? true : false;
|
||||||
|
|
|
||||||
BIN
modules/document/tpl/icons/file.gif
Normal file
BIN
modules/document/tpl/icons/file.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 545 B |
BIN
modules/document/tpl/icons/image.gif
Normal file
BIN
modules/document/tpl/icons/image.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 522 B |
BIN
modules/document/tpl/icons/movie.gif
Normal file
BIN
modules/document/tpl/icons/movie.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 524 B |
BIN
modules/document/tpl/icons/new.gif
Normal file
BIN
modules/document/tpl/icons/new.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 78 B |
BIN
modules/document/tpl/icons/secret.gif
Normal file
BIN
modules/document/tpl/icons/secret.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 338 B |
BIN
modules/document/tpl/icons/update.gif
Normal file
BIN
modules/document/tpl/icons/update.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 B |
|
|
@ -48,5 +48,13 @@
|
||||||
function moduleUpdate() {
|
function moduleUpdate() {
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// 에디터 컴포넌트 캐시 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/editor");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1,162 +0,0 @@
|
||||||
<!--%import("js/editor.js")-->
|
|
||||||
<!--%import("css/editor.css")-->
|
|
||||||
<!--%import("./lang")-->
|
|
||||||
<!-- 에디터 활성화 -->
|
|
||||||
<script type="text/javascript">//<![CDATA[
|
|
||||||
var editor_height = '{$editor_height}';
|
|
||||||
var editor_path = "{$editor_path}";
|
|
||||||
var auto_saved_msg = "{$lang->msg_auto_saved}";
|
|
||||||
editorInit("{$upload_target_srl}", {$enable_resizable}, {$editor_height});
|
|
||||||
//]]></script>
|
|
||||||
|
|
||||||
<!-- 자동저장용 폼 -->
|
|
||||||
<!--@if($enable_autosave)-->
|
|
||||||
<input type="hidden" name="_saved_doc_title" value="{htmlspecialchars($saved_doc->title)}" />
|
|
||||||
<input type="hidden" name="_saved_doc_content" value="{htmlspecialchars($saved_doc->content)}" />
|
|
||||||
<input type="hidden" name="_saved_doc_message" value="{$lang->msg_load_saved_doc}" />
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!-- 에디터 -->
|
|
||||||
<div class="xeEditor">
|
|
||||||
|
|
||||||
<div id="xeEditorOption_{$upload_target_srl}">
|
|
||||||
<!--@if($enable_default_component)-->
|
|
||||||
<div class="optionABC">
|
|
||||||
<div class="optionA">
|
|
||||||
<div class="selectGroup">
|
|
||||||
<select onchange="editorChangeFontName(this,'{$upload_target_srl}')" id="editor_font_{$upload_target_srl}">
|
|
||||||
<option value="">{$lang->edit->fontname}</option>
|
|
||||||
<!--@foreach($lang->edit->fontlist as $key=>$obj)-->
|
|
||||||
<option style="font-family:{$obj}" value="{$obj}">{$obj}</option>
|
|
||||||
<!--@end-->
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select onchange="editorChangeFontSize(this,'{$upload_target_srl}')" id="editor_fontsize_{$upload_target_srl}">
|
|
||||||
<option value="" selected="selected">{$lang->edit->fontsize}</option>
|
|
||||||
<option value="1">8pt</option>
|
|
||||||
<option value="2">10pt</option>
|
|
||||||
<option value="3">12pt</option>
|
|
||||||
<option value="4">14pt</option>
|
|
||||||
<option value="5">18pt</option>
|
|
||||||
<option value="6">24pt</option>
|
|
||||||
<option value="7">36pt</option>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select onchange="editorChangeHeader(this,'{$upload_target_srl}')" id="editor_header_{$upload_target_srl}">
|
|
||||||
<option value="">{$lang->edit->header}</option>
|
|
||||||
<!--@foreach($lang->edit->header_list as $key=>$obj)-->
|
|
||||||
<option value="{$key}">{$obj}</option>
|
|
||||||
<!--@end-->
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="buttonGroup">
|
|
||||||
<img src="./images/editor_btn_b.gif" width="23" height="63" title="{$lang->edit->help_bold}" alt="{$lang->edit->help_bold}" id="component_{$upload_target_srl}_Bold" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_i.gif" width="23" height="63" title="{$lang->edit->help_italic}" alt="{$lang->edit->help_italic}" id="component_{$upload_target_srl}_Italic" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_u.gif" width="23" height="63" title="{$lang->edit->help_underline}" alt="{$lang->edit->help_underline}" id="component_{$upload_target_srl}_Underline" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_c.gif" width="23" height="63" title="{$lang->edit->help_fontcolor}" alt="{$lang->edit->help_fontcolor}" id="component_{$upload_target_srl}_colorpicker_text" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_bg.gif" width="23" height="63" title="{$lang->edit->help_fontbgcolor}" alt="{$lang->edit->help_fontbgcolor}" id="component_{$upload_target_srl}_colorpicker_bg" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="optionB">
|
|
||||||
<div class="buttonGroup">
|
|
||||||
<img src="./images/editor_btn_al.gif" width="23" height="63" title="{$lang->edit->help_align_left}" alt="{$lang->edit->help_align_left}" id="component_{$upload_target_srl}_justifyleft" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_ac.gif" width="23" height="63" title="{$lang->edit->help_align_center}" alt="{$lang->edit->help_align_center}" id="component_{$upload_target_srl}_justifycenter" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_ar.gif" width="23" height="63" title="{$lang->edit->help_align_right}" alt="{$lang->edit->help_align_right}" id="component_{$upload_target_srl}_justifyright" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<!--<img src="./images/editor_btn_aj.gif" width="23" height="63" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />-->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<div class="buttonGroup">
|
|
||||||
<img src="./images/editor_btn_od.gif" title="{$lang->edit->help_remove_indent}" alt="{$lang->edit->help_remove_indent}" id="component_{$upload_target_srl}_outdent" width="23" height="63" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_id.gif" width="23" height="63" title="{$lang->edit->help_add_indent}" alt="{$lang->edit->help_add_indent}" id="component_{$upload_target_srl}_indent" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="buttonGroup">
|
|
||||||
<img src="./images/editor_btn_ol.gif" title="{$lang->edit->help_list_number}" alt="{$lang->edit->help_list_number}" id="component_{$upload_target_srl}_insertorderedlist" width="23" height="63" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<img src="./images/editor_btn_ul.gif" title="{$lang->edit->help_list_bullet}" alt="{$lang->edit->help_list_bullet}" id="component_{$upload_target_srl}_insertunorderedlist" width="23" height="63" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="buttonGroup">
|
|
||||||
<img src="./images/editor_btn_lh.gif" alt="Line hight" width="23" height="63" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<div class="optionC">
|
|
||||||
<div class="buttonGroup">
|
|
||||||
<img src="./images/editor_btn_tag.gif" alt="Tag" width="23" height="63" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
</div>
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<!--@if($enable_component)-->
|
|
||||||
<div class="optionDE">
|
|
||||||
<div class="optionE">
|
|
||||||
<div class="buttonGroup" id="editor_component_{$upload_target_srl}">
|
|
||||||
<!--@foreach($component_list as $component_name => $component)-->
|
|
||||||
<!--@if(substr($component_name,0,11)!="colorpicker")-->
|
|
||||||
<img src="../components/{$component_name}/icon.gif" alt="{$component->title}" title="{$component->title}" id="component_{$upload_target_srl}_{$component_name}" onmouseover="eOptionOver(this)" onmouseout="eOptionOut(this)" />
|
|
||||||
<!--@end-->
|
|
||||||
<!--@end-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--@end-->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--@if(!$_COOKIE['EditorInfo'])-->
|
|
||||||
<div id="editorInfo" class="editorInfo" >
|
|
||||||
{$lang->about_dblclick_in_editor}
|
|
||||||
<span id="for_ie_help_{$upload_target_srl}" style="display:none">{$lang->edit->help_use_paragrapth}</span>
|
|
||||||
<img src="./images/buttonClose.gif" alt="close" width="13" height="13" class="close" onclick="closeEditorInfo(); return false;" />
|
|
||||||
</div>
|
|
||||||
<!--@end-->
|
|
||||||
|
|
||||||
<div class="editor_info">
|
|
||||||
<div class="editor_option">
|
|
||||||
<input type="checkbox" id="use_html_{$upload_target_srl}" value="Y" onclick="editorChangeMode(this, '{$upload_target_srl}');" /> <label for="use_html_{$upload_target_srl}">HTML</label>
|
|
||||||
</div>
|
|
||||||
<div class="editor_autosaved_message" id="editor_autosaved_message_{$upload_target_srl}"> </div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="editor_iframe_box" id="editor_iframe_area_{$upload_target_srl}"></div>
|
|
||||||
|
|
||||||
<div class="textAreaDragIndicator"><div class="textAreaDragIndicatorBar" id="editor_drag_bar_{$upload_target_srl}"></div></div>
|
|
||||||
|
|
||||||
<!--@if($allow_fileupload)-->
|
|
||||||
<!-- 첨부파일 영역 -->
|
|
||||||
<!--%import("./js/uploader.js")-->
|
|
||||||
<script type="text/javascript">
|
|
||||||
var zbxe_session_name = "{session_name()}";
|
|
||||||
var uploader_setting = { "allowed_filesize" : {$file_config->allowed_filesize}, "allowed_filetypes" : "{$file_config->allowed_filetypes}", "allowed_filetypes_description" : "{$file_config->allowed_filetypes}" }
|
|
||||||
editor_upload_init("{$upload_target_srl}");
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div class="fileAttach">
|
|
||||||
<input type="hidden" name="upload_target_srl" value="{$upload_target_srl}" />
|
|
||||||
|
|
||||||
<div class="preview" id="preview_uploaded_{$upload_target_srl}">
|
|
||||||
<img src="./images/blank.gif" alt="preview" width="100" height="100" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 파일 업로드 영역 -->
|
|
||||||
<div class="fileListArea">
|
|
||||||
<select id="uploaded_file_list_{$upload_target_srl}" size="7" class="fileList" onclick="editor_preview(this, '{$upload_target_srl}');"></select>
|
|
||||||
<span class="file_attach_info" id="uploader_status_{$upload_target_srl}"></span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="fileUploadControl"><a href="#" onclick="editor_upload_file('{$upload_target_srl}');return false;" class="button"><span>{$lang->edit->upload_file}</span></a></div>
|
|
||||||
<div class="fileUploadControl"><a href="#" onclick="editor_remove_file('{$upload_target_srl}');return false;" class="button"><span>{$lang->edit->delete_selected}</span></a></div>
|
|
||||||
<div class="fileUploadControl"><a href="#" onclick="editor_insert_file('{$upload_target_srl}');return false;" class="button"><span>{$lang->edit->link_file}</span></a></div>
|
|
||||||
|
|
||||||
<div class="clear"></div>
|
|
||||||
</div>
|
|
||||||
<!--@end-->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -7,8 +7,6 @@
|
||||||
/**
|
/**
|
||||||
* 에디터에서 사용하는 iframe, textarea의 prefix
|
* 에디터에서 사용하는 iframe, textarea의 prefix
|
||||||
**/
|
**/
|
||||||
var iframe_id = 'editor_iframe_'; ///< 에디터로 사용하는 iframe의 prefix
|
|
||||||
var textarea_id = 'editor_textarea_'; ///< 에디터의 html편집 모드에서 사용하는 textarea의 prefix
|
|
||||||
var editor_mode = new Array(); ///<< 에디터의 html편집 모드 flag 세팅 변수
|
var editor_mode = new Array(); ///<< 에디터의 html편집 모드 flag 세팅 변수
|
||||||
var _editorSyncList = new Array(); ///< 에디터와 form 동기화를 위한 동기화 대상 목록
|
var _editorSyncList = new Array(); ///< 에디터와 form 동기화를 위한 동기화 대상 목록
|
||||||
var _autoSaveObj = {fo_obj:null, editor_sequence:0, title:'', content:'', locked:false} ///< 자동저장을 위한 정보를 가진 object
|
var _autoSaveObj = {fo_obj:null, editor_sequence:0, title:'', content:'', locked:false} ///< 자동저장을 위한 정보를 가진 object
|
||||||
|
|
@ -20,20 +18,19 @@ var editor_rel_keys = new Array(); ///< 에디터와 각 모듈과의 연동을
|
||||||
xAddEventListener(window, 'load', _editorSync); ///< 에디터의 동기화를 하는 함수를 window.load시 실행
|
xAddEventListener(window, 'load', _editorSync); ///< 에디터의 동기화를 하는 함수를 window.load시 실행
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 에디터의 상태나 객체를 구하기 위한 함수
|
* 에디터의 상태나 객체를 구하기 위한 함수
|
||||||
**/
|
**/
|
||||||
|
|
||||||
// editor_sequence값에 해당하는 iframe의 object를 return
|
// editor_sequence값에 해당하는 iframe의 object를 return
|
||||||
function editorGetIFrame(editor_sequence) {
|
function editorGetIFrame(editor_sequence) {
|
||||||
var obj_id = iframe_id + editor_sequence;
|
var obj_id = 'editor_iframe_'+ editor_sequence;
|
||||||
return xGetElementById(obj_id);
|
return xGetElementById(obj_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// editor_sequence값에 해당하는 textarea object를 return
|
// editor_sequence값에 해당하는 textarea object를 return
|
||||||
function editorGetTextArea(editor_sequence) {
|
function editorGetTextArea(editor_sequence) {
|
||||||
var obj_id = textarea_id + editor_sequence;
|
var obj_id = 'editor_textarea_' + editor_sequence;
|
||||||
return xGetElementById(obj_id);
|
return xGetElementById(obj_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -148,9 +145,15 @@ function editorStart(editor_sequence, primary_key, content_key, resizable, edito
|
||||||
// iframe내의 document element를 구함
|
// iframe내의 document element를 구함
|
||||||
var contentDocument = iframe_obj.contentWindow.document;
|
var contentDocument = iframe_obj.contentWindow.document;
|
||||||
|
|
||||||
/**
|
// 크기 변경 불가일 경우 드래그바 숨김
|
||||||
* 에디터를 위지윅 모드로 만들기 위해 내용 작성 후 designMode 활성화
|
if(resizable == false) xGetElementById("editor_drag_bar_"+editor_sequence).style.display = "none";
|
||||||
**/
|
else xGetElementById("editor_drag_bar_"+editor_sequence).style.display = "block";
|
||||||
|
|
||||||
|
// IE일 경우 ctrl-Enter 안내 문구를 노출
|
||||||
|
if(xIE4Up && xGetElementById('for_ie_help_'+editor_sequence)) {
|
||||||
|
xGetElementById('for_ie_help_'+editor_sequence).style.display = "block";
|
||||||
|
}
|
||||||
|
|
||||||
var contentHtml = ''+
|
var contentHtml = ''+
|
||||||
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'+
|
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'+
|
||||||
'<html lang="ko" xmlns="http://www.w3.org/1999/xhtml><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'+
|
'<html lang="ko" xmlns="http://www.w3.org/1999/xhtml><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'+
|
||||||
|
|
@ -165,15 +168,31 @@ function editorStart(editor_sequence, primary_key, content_key, resizable, edito
|
||||||
content+
|
content+
|
||||||
'</body></html>'+
|
'</body></html>'+
|
||||||
'';
|
'';
|
||||||
|
contentDocument.open("text/html","replace");
|
||||||
|
contentDocument.write(contentHtml);
|
||||||
|
contentDocument.close();
|
||||||
|
|
||||||
|
// editor_mode를 기본으로 설정
|
||||||
|
editor_mode[editor_sequence] = null;
|
||||||
|
|
||||||
|
// iframe에 focus가 될때 에디터 모드로 전환하도록 이벤트 지정
|
||||||
|
if(xIE4Up) xAddEventListener(iframe_obj, "focus", function() { editorSetDesignMode(iframe_obj, contentDocument, content, fo_obj, editor_sequence, editor_height); } );
|
||||||
|
else xAddEventListener(iframe_obj.contentWindow, "focus", function() { editorSetDesignMode(iframe_obj, contentDocument, content, fo_obj, editor_sequence, editor_height); } );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 에디터를 위지윅 모드로 만들기 위해 내용 작성 후 designMode 활성화
|
||||||
|
**/
|
||||||
|
var editor_is_started = new Array();
|
||||||
|
function editorSetDesignMode(iframe_obj, contentDocument, content, fo_obj, editor_sequence, editor_height) {
|
||||||
|
if(editor_is_started[editor_sequence]) return;
|
||||||
|
|
||||||
contentDocument.designMode = 'on';
|
contentDocument.designMode = 'on';
|
||||||
try {
|
try {
|
||||||
contentDocument.execCommand("undo", false, null);
|
contentDocument.execCommand("undo", false, null);
|
||||||
contentDocument.execCommand("useCSS", false, true);
|
contentDocument.execCommand("useCSS", false, true);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
}
|
}
|
||||||
contentDocument.open("text/html","replace");
|
|
||||||
contentDocument.write(contentHtml);
|
|
||||||
contentDocument.close();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 더블클릭이나 키눌림등의 각종 이벤트에 대해 listener 추가
|
* 더블클릭이나 키눌림등의 각종 이벤트에 대해 listener 추가
|
||||||
|
|
@ -189,11 +208,6 @@ function editorStart(editor_sequence, primary_key, content_key, resizable, edito
|
||||||
xAddEventListener(document,'mouseup',editorEventCheck);
|
xAddEventListener(document,'mouseup',editorEventCheck);
|
||||||
xAddEventListener(document,'mousedown',editorHideObject);
|
xAddEventListener(document,'mousedown',editorHideObject);
|
||||||
|
|
||||||
// IE일 경우 ctrl-Enter 안내 문구를 노출
|
|
||||||
if(xIE4Up && xGetElementById('for_ie_help_'+editor_sequence)) {
|
|
||||||
xGetElementById('for_ie_help_'+editor_sequence).style.display = "block";
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 에디터의 내용을 지속적으로 fo_obj.content의 값과 동기화를 시킴.
|
* 에디터의 내용을 지속적으로 fo_obj.content의 값과 동기화를 시킴.
|
||||||
* 차후 다른 에디터를 사용하더라도 fo_obj.content와 동기화만 된다면 어떤 에디터라도 사용 가능하도록 하기 위해
|
* 차후 다른 에디터를 사용하더라도 fo_obj.content와 동기화만 된다면 어떤 에디터라도 사용 가능하도록 하기 위해
|
||||||
|
|
@ -204,12 +218,7 @@ function editorStart(editor_sequence, primary_key, content_key, resizable, edito
|
||||||
// 자동저장 필드가 있다면 자동 저장 기능 활성화
|
// 자동저장 필드가 있다면 자동 저장 기능 활성화
|
||||||
if(typeof(fo_obj._saved_doc_title)!="undefined" ) editorEnableAutoSave(fo_obj, editor_sequence);
|
if(typeof(fo_obj._saved_doc_title)!="undefined" ) editorEnableAutoSave(fo_obj, editor_sequence);
|
||||||
|
|
||||||
// 크기 변경 불가일 경우 드래그바 숨김
|
editor_is_started[editor_sequence] = true;
|
||||||
if(resizable == false) xGetElementById("editor_drag_bar_"+editor_sequence).style.display = "none";
|
|
||||||
else xGetElementById("editor_drag_bar_"+editor_sequence).style.display = "block";
|
|
||||||
|
|
||||||
// editor_mode를 기본으로 설정
|
|
||||||
editor_mode[editor_sequence] = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -819,4 +828,3 @@ function closeEditorInfo(editor_sequence) {
|
||||||
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
|
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
|
||||||
xSetCookie('EditorInfo', '1', expire);
|
xSetCookie('EditorInfo', '1', expire);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,5 +45,11 @@
|
||||||
function moduleUpdate() {
|
function moduleUpdate() {
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<column name="upload_target_srl" />
|
<column name="upload_target_srl" />
|
||||||
</columns>
|
</columns>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="in" column="module_srl" var="module_srls" notnull="notnull" filter="number" />
|
<condition operation="in" column="module_srl" var="module_srls" notnull="notnull" filter="numbers" />
|
||||||
<condition operation="equal" column="direct_download" var="direct_download" pipe="and" />
|
<condition operation="equal" column="direct_download" var="direct_download" pipe="and" />
|
||||||
<condition operation="equal" column="isvalid" var="isvalid" pipe="and" />
|
<condition operation="equal" column="isvalid" var="isvalid" pipe="and" />
|
||||||
</conditions>
|
</conditions>
|
||||||
|
|
|
||||||
|
|
@ -55,5 +55,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -32,5 +32,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -28,5 +28,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -43,5 +43,10 @@
|
||||||
return new Object(0, 'success_updated');
|
return new Object(0, 'success_updated');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -36,5 +36,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -39,5 +39,11 @@
|
||||||
function moduleUpdate() {
|
function moduleUpdate() {
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@
|
||||||
'email_address' => 'Email Address',
|
'email_address' => 'Email Address',
|
||||||
'regdate' => 'Join Date',
|
'regdate' => 'Join Date',
|
||||||
'last_login' => 'Latest Login Date',
|
'last_login' => 'Latest Login Date',
|
||||||
|
'extra_vars' => 'Extra Vars',
|
||||||
);
|
);
|
||||||
|
|
||||||
$lang->message_box = array(
|
$lang->message_box = array(
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@
|
||||||
'email_address' => 'Dirección de Email',
|
'email_address' => 'Dirección de Email',
|
||||||
'regdate' => 'Fecha del registro',
|
'regdate' => 'Fecha del registro',
|
||||||
'last_login' => 'Fecha de su última conección',
|
'last_login' => 'Fecha de su última conección',
|
||||||
|
'extra_vars' => 'Variables Extra',
|
||||||
);
|
);
|
||||||
|
|
||||||
$lang->message_box = array(
|
$lang->message_box = array(
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@
|
||||||
'email_address' => 'メールアドレス',
|
'email_address' => 'メールアドレス',
|
||||||
'regdate' => '加入日',
|
'regdate' => '加入日',
|
||||||
'last_login' => '最近のログイン',
|
'last_login' => '最近のログイン',
|
||||||
|
'extra_vars' => '拡張変数',
|
||||||
);
|
);
|
||||||
|
|
||||||
$lang->message_box = array(
|
$lang->message_box = array(
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,8 @@
|
||||||
'email_address' => '메일주소',
|
'email_address' => '메일주소',
|
||||||
'regdate' => '가입일시',
|
'regdate' => '가입일시',
|
||||||
'last_login' => '최근로그인일시',
|
'last_login' => '최근로그인일시',
|
||||||
|
'last_login' => '최근로그인일시',
|
||||||
|
'extra_vars' => '확장변수',
|
||||||
);
|
);
|
||||||
|
|
||||||
$lang->message_box = array(
|
$lang->message_box = array(
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@
|
||||||
'email_address' => '邮箱地址',
|
'email_address' => '邮箱地址',
|
||||||
'regdate' => '注册日期',
|
'regdate' => '注册日期',
|
||||||
'last_login' => '最近登录',
|
'last_login' => '最近登录',
|
||||||
|
'extra_vars' => '扩展变数',
|
||||||
);
|
);
|
||||||
|
|
||||||
$lang->message_box = array(
|
$lang->message_box = array(
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
**/
|
**/
|
||||||
function procMemberAdminInsert() {
|
function procMemberAdminInsert() {
|
||||||
// 필수 정보들을 미리 추출
|
// 필수 정보들을 미리 추출
|
||||||
$args = Context::gets('member_srl','user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing','allow_message','denied','is_admin','description','group_srl_list');
|
$args = Context::gets('member_srl','user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing','allow_message','denied','is_admin','description','group_srl_list','limit_date');
|
||||||
|
|
||||||
// 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제
|
// 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제
|
||||||
$all_args = Context::getRequestVars();
|
$all_args = Context::getRequestVars();
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,9 @@
|
||||||
case 'last_login' :
|
case 'last_login' :
|
||||||
$args->s_last_login = $search_keyword;
|
$args->s_last_login = $search_keyword;
|
||||||
break;
|
break;
|
||||||
|
case 'extra_vars' :
|
||||||
|
$args->s_extra_vars = $search_keyword;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -154,5 +154,11 @@
|
||||||
|
|
||||||
return new Object(0, 'success_updated');
|
return new Object(0, 'success_updated');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
/**
|
/**
|
||||||
* @brief user_id, password를 체크하여 로그인 시킴
|
* @brief user_id, password를 체크하여 로그인 시킴
|
||||||
**/
|
**/
|
||||||
function procMemberLogin() {
|
function procMemberLogin($user_id = null, $password = null, $remember_user_id = null) {
|
||||||
// 변수 정리
|
// 변수 정리
|
||||||
if(!$user_id) $user_id = Context::get('user_id');
|
if(!$user_id) $user_id = Context::get('user_id');
|
||||||
$user_id = trim($user_id);
|
$user_id = trim($user_id);
|
||||||
|
|
@ -24,6 +24,9 @@
|
||||||
if(!$password) $password = Context::get('password');
|
if(!$password) $password = Context::get('password');
|
||||||
$password = trim($password);
|
$password = trim($password);
|
||||||
|
|
||||||
|
if($remember_user_id) $remember_user_id = Context::get('remember_user_id');
|
||||||
|
if($remember_user_id != 'Y') setcookie('user_id','');
|
||||||
|
|
||||||
// 아이디나 비밀번호가 없을때 오류 return
|
// 아이디나 비밀번호가 없을때 오류 return
|
||||||
if(!$user_id) return new Object(-1,'null_user_id');
|
if(!$user_id) return new Object(-1,'null_user_id');
|
||||||
if(!$password) return new Object(-1,'null_password');
|
if(!$password) return new Object(-1,'null_password');
|
||||||
|
|
@ -599,6 +602,9 @@
|
||||||
unset($all_args->is_admin);
|
unset($all_args->is_admin);
|
||||||
unset($all_args->description);
|
unset($all_args->description);
|
||||||
unset($all_args->group_srl_list);
|
unset($all_args->group_srl_list);
|
||||||
|
unset($all_args->body);
|
||||||
|
unset($all_args->accept_agreement);
|
||||||
|
unset($all_args->signature);
|
||||||
|
|
||||||
// 모든 request argument에서 필수 정보만 제외 한 후 추가 데이터로 입력
|
// 모든 request argument에서 필수 정보만 제외 한 후 추가 데이터로 입력
|
||||||
$extra_vars = delObjectVars($all_args, $args);
|
$extra_vars = delObjectVars($all_args, $args);
|
||||||
|
|
@ -636,6 +642,9 @@
|
||||||
unset($all_args->is_admin);
|
unset($all_args->is_admin);
|
||||||
unset($all_args->description);
|
unset($all_args->description);
|
||||||
unset($all_args->group_srl_list);
|
unset($all_args->group_srl_list);
|
||||||
|
unset($all_args->body);
|
||||||
|
unset($all_args->accept_agreement);
|
||||||
|
unset($all_args->signature);
|
||||||
|
|
||||||
// 모든 request argument에서 필수 정보만 제외 한 후 추가 데이터로 입력
|
// 모든 request argument에서 필수 정보만 제외 한 후 추가 데이터로 입력
|
||||||
$extra_vars = delObjectVars($all_args, $args);
|
$extra_vars = delObjectVars($all_args, $args);
|
||||||
|
|
@ -964,7 +973,7 @@
|
||||||
if($member_info->denied == 'Y') return new Object(-1,'msg_user_denied');
|
if($member_info->denied == 'Y') return new Object(-1,'msg_user_denied');
|
||||||
|
|
||||||
// denied_date가 현 시간보다 적으면 알림
|
// denied_date가 현 시간보다 적으면 알림
|
||||||
if($member_info->limit_date && $member_info->limit_date >= date("YmdHis")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y-m-d H:i")));
|
if($member_info->limit_date && $member_info->limit_date >= date("Ymd")) return new Object(-1,sprintf(Context::getLang('msg_user_limited'),zdate($member_info->limit_date,"Y-m-d")));
|
||||||
|
|
||||||
// 사용자 정보의 최근 로그인 시간을 기록
|
// 사용자 정보의 최근 로그인 시간을 기록
|
||||||
$args->member_srl = $member_info->member_srl;
|
$args->member_srl = $member_info->member_srl;
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
|
<condition operation="like" column="user_name" var="s_user_name" pipe="or" />
|
||||||
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
|
<condition operation="like" column="nick_name" var="s_nick_name" pipe="or" />
|
||||||
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
|
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
|
||||||
|
<condition operation="like" column="extra_vars" var="s_extra_vars" pipe="or" />
|
||||||
<condition operation="like_prefix" column="regdate" var="s_regdate" pipe="or" />
|
<condition operation="like_prefix" column="regdate" var="s_regdate" pipe="or" />
|
||||||
<condition operation="like_prefix" column="last_login" var="s_last_login" pipe="or" />
|
<condition operation="like_prefix" column="last_login" var="s_last_login" pipe="or" />
|
||||||
</group>
|
</group>
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
<condition operation="like" column="member.user_name" var="s_user_name" pipe="or" />
|
<condition operation="like" column="member.user_name" var="s_user_name" pipe="or" />
|
||||||
<condition operation="like" column="member.nick_name" var="s_nick_name" pipe="or" />
|
<condition operation="like" column="member.nick_name" var="s_nick_name" pipe="or" />
|
||||||
<condition operation="like" column="member.email_address" var="s_email_address" pipe="or" />
|
<condition operation="like" column="member.email_address" var="s_email_address" pipe="or" />
|
||||||
|
<condition operation="like" column="extra_vars" var="s_extra_vars" pipe="or" />
|
||||||
<condition operation="like_prefix" column="member.regdate" var="s_regdate" pipe="or" />
|
<condition operation="like_prefix" column="member.regdate" var="s_regdate" pipe="or" />
|
||||||
<condition operation="like_prefix" column="member.last_login" var="s_last_login" pipe="or" />
|
<condition operation="like_prefix" column="member.last_login" var="s_last_login" pipe="or" />
|
||||||
</group>
|
</group>
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
<column name="allow_mailing" var="allow_mailing" default="Y" />
|
<column name="allow_mailing" var="allow_mailing" default="Y" />
|
||||||
<column name="allow_message" var="allow_message" default="Y" />
|
<column name="allow_message" var="allow_message" default="Y" />
|
||||||
<column name="denied" var="denied" />
|
<column name="denied" var="denied" />
|
||||||
|
<column name="limit_date" var="limit_date" />
|
||||||
<column name="is_admin" var="is_admin" />
|
<column name="is_admin" var="is_admin" />
|
||||||
<column name="description" var="description" />
|
<column name="description" var="description" />
|
||||||
<column name="extra_vars" var="extra_vars" />
|
<column name="extra_vars" var="extra_vars" />
|
||||||
|
|
|
||||||
|
|
@ -535,3 +535,6 @@ Jeong, Chan Myeong 070601~070630
|
||||||
.memberInfoTable td p { float:left; font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;}
|
.memberInfoTable td p { float:left; font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;}
|
||||||
.memberInfoTable td label { float:left; color:#3f4040; padding-top:.3em; margin-right:.5em;}
|
.memberInfoTable td label { float:left; color:#3f4040; padding-top:.3em; margin-right:.5em;}
|
||||||
.memberInfoTable td .checkbox { border:none; }
|
.memberInfoTable td .checkbox { border:none; }
|
||||||
|
|
||||||
|
.agreementBox { border:1px solid #AAAAAA; margin:.5em 0 0 0; padding:1em; border-bottom:none; height:200px; overflow-y:scroll;}
|
||||||
|
.agreementButton { background-color:#EEEEEE; padding:1em; border:1px solid #AAAAAA; border-top:none; margin-bottom:1em; }
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<filter name="modify_info" module="member" act="procMemberModifyInfo" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
<filter name="modify_info" module="member" act="procMemberModifyInfo" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
||||||
<form>
|
<form>
|
||||||
<node target="user_name" required="true" minlength="2" maxlength="20"/>
|
<node target="user_name" required="true" minlength="2" maxlength="80"/>
|
||||||
<node target="nick_name" required="true" minlength="2" maxlength="20"/>
|
<node target="nick_name" required="true" minlength="2" maxlength="20"/>
|
||||||
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
|
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<filter name="signup" module="member" act="procMemberInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
<filter name="signup" module="member" act="procMemberInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
||||||
<form>
|
<form>
|
||||||
<node target="user_id" required="true" minlength="2" maxlength="20" filter="userid" />
|
<node target="user_id" required="true" minlength="2" maxlength="80" filter="userid" />
|
||||||
<node target="password1" required="true" minlength="6" maxlength="20" />
|
<node target="password1" required="true" minlength="6" maxlength="20" />
|
||||||
<node target="password2" required="true" minlength="6" maxlength="20" equalto="password1" />
|
<node target="password2" required="true" minlength="6" maxlength="20" equalto="password1" />
|
||||||
<node target="user_name" required="true" minlength="2" maxlength="20" />
|
<node target="user_name" required="true" minlength="2" maxlength="20" />
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
.krZip .address2 { clear:both; margin-top:10px;}
|
.krZip .address2 { clear:both; margin-top:10px;}
|
||||||
.extendDesc { clear:both; margin-top:0; font-size:.9em; color:#999999; }
|
.extendDesc { clear:both; margin-top:0; font-size:.9em; color:#999999; }
|
||||||
|
|
||||||
.agreementBox { border:1px solid #AAAAAA; margin:.5em 0 0 0; padding:1em; border-bottom:none;}
|
.agreementBox { border:1px solid #AAAAAA; margin:.5em 0 0 0; padding:1em; border-bottom:none; height:200px; overflow-y:scroll;}
|
||||||
.agreementButton { background-color:#EEEEEE; padding:1em; border:1px solid #AAAAAA; border-top:none;}
|
.agreementButton { background-color:#EEEEEE; padding:1em; border:1px solid #AAAAAA; border-top:none;}
|
||||||
|
|
||||||
/* popup common */
|
/* popup common */
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<filter name="modify_info" module="member" act="procMemberModifyInfo" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
<filter name="modify_info" module="member" act="procMemberModifyInfo" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
||||||
<form>
|
<form>
|
||||||
<node target="user_name" required="true" minlength="2" maxlength="20"/>
|
<node target="user_name" required="true" minlength="2" maxlength="80"/>
|
||||||
<node target="nick_name" required="true" minlength="2" maxlength="20"/>
|
<node target="nick_name" required="true" minlength="2" maxlength="20"/>
|
||||||
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
|
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<filter name="signup" module="member" act="procMemberInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
<filter name="signup" module="member" act="procMemberInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
|
||||||
<form>
|
<form>
|
||||||
<node target="user_id" required="true" minlength="2" maxlength="20" filter="userid" />
|
<node target="user_id" required="true" minlength="2" maxlength="80" filter="userid" />
|
||||||
<node target="password1" required="true" minlength="6" maxlength="20" />
|
<node target="password1" required="true" minlength="6" maxlength="20" />
|
||||||
<node target="password2" required="true" minlength="6" maxlength="20" equalto="password1" />
|
<node target="password2" required="true" minlength="6" maxlength="20" equalto="password1" />
|
||||||
<node target="user_name" required="true" minlength="2" maxlength="20" />
|
<node target="user_name" required="true" minlength="2" maxlength="20" />
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<filter name="insert" module="member" act="procMemberAdminInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit" >
|
<filter name="insert" module="member" act="procMemberAdminInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit" >
|
||||||
<form>
|
<form>
|
||||||
<node target="user_id" required="true" minlength="2" maxlength="20" />
|
<node target="user_id" required="true" minlength="2" maxlength="80" />
|
||||||
<node target="user_name" required="true" minlength="2" maxlength="20" />
|
<node target="user_name" required="true" minlength="2" maxlength="20" />
|
||||||
<node target="nick_name" required="true" minlength="2" maxlength="20" />
|
<node target="nick_name" required="true" minlength="2" maxlength="20" />
|
||||||
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
|
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
|
||||||
|
|
@ -23,6 +23,7 @@
|
||||||
<param name="description" target="description" />
|
<param name="description" target="description" />
|
||||||
<param name="group_srl_list" target="group_srl_list" />
|
<param name="group_srl_list" target="group_srl_list" />
|
||||||
<param name="signature" target="signature" />
|
<param name="signature" target="signature" />
|
||||||
|
<param name="limit_date" target="limit_date" />
|
||||||
</parameter>
|
</parameter>
|
||||||
<response callback_func="completeInsert">
|
<response callback_func="completeInsert">
|
||||||
<tag name="error" />
|
<tag name="error" />
|
||||||
|
|
|
||||||
|
|
@ -36,5 +36,26 @@
|
||||||
function moduleUpdate() {
|
function moduleUpdate() {
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// 메뉴 모듈의 캐시 파일 모두 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/menu");
|
||||||
|
|
||||||
|
$oMenuAdminController = &getAdminController('menu');
|
||||||
|
|
||||||
|
// 블로그 모듈 목록을 모두 구함
|
||||||
|
$output = executeQueryArray("menu.getMenus");
|
||||||
|
$list = $output->data;
|
||||||
|
if(!count($list)) return;
|
||||||
|
|
||||||
|
// 메뉴 모듈에서 사용되는 모든 메뉴 목록을 재 생성
|
||||||
|
foreach($list as $menu_item) {
|
||||||
|
$menu_srl = $menu_item->menu_srl;
|
||||||
|
$oMenuAdminController->makeXmlFile($menu_srl);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -33,5 +33,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -38,5 +38,12 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// 모듈 정보 캐시 파일 모두 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/module_info");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
$oModuleController->updateModuleGrant($module_info->module_srl, $grants);
|
$oModuleController->updateModuleGrant($module_info->module_srl, $grants);
|
||||||
|
|
||||||
// 캐시 파일 삭제
|
// 캐시 파일 삭제
|
||||||
$cache_file = sprintf("./files/cache/opage/%d.cache", $module_info->module_srl);
|
$cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl);
|
||||||
if(file_exists($cache_file)) @unlink($cache_file);
|
if(file_exists($cache_file)) @unlink($cache_file);
|
||||||
|
|
||||||
// 등록 성공후 return될 메세지 정리
|
// 등록 성공후 return될 메세지 정리
|
||||||
|
|
|
||||||
|
|
@ -66,5 +66,12 @@
|
||||||
return new Object(0, 'success_updated');
|
return new Object(0, 'success_updated');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// 외부 페이지 캐시 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/opage");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -91,15 +91,28 @@
|
||||||
* @brief 내부 파일일 경우 include하도록 캐시파일을 만들고 처리
|
* @brief 내부 파일일 경우 include하도록 캐시파일을 만들고 처리
|
||||||
**/
|
**/
|
||||||
function executeFile($path, $caching_interval, $cache_file) {
|
function executeFile($path, $caching_interval, $cache_file) {
|
||||||
|
// 파일이 없으면 취소
|
||||||
|
if(!file_exists($path)) return;
|
||||||
|
|
||||||
|
// 경로와 파일이름을 구함
|
||||||
|
$tmp_path = explode('/',$cache_file);
|
||||||
|
$filename = $tmp_path[count($tmp_path)-1];
|
||||||
|
$filepath = ereg_replace($filename."$","",$cache_file);
|
||||||
|
|
||||||
// 캐시 검사
|
// 캐시 검사
|
||||||
if($caching_interval <1 || !file_exists($cache_file) || filemtime($cache_file) + $caching_interval*60 <= time()) {
|
if($caching_interval <1 || !file_exists($cache_file) || filemtime($cache_file) + $caching_interval*60 <= time() || filemtime($cache_file)<filemtime($path) ) {
|
||||||
if(file_exists($cache_file)) @unlink($cache_file);
|
if(file_exists($cache_file)) @unlink($cache_file);
|
||||||
|
|
||||||
// 경로와 파일이름을 구함
|
// 일단 대상 파일을 읽어서 내용을 구함
|
||||||
$tmp_path = explode('/',$path);
|
ob_start();
|
||||||
$filename = $tmp_path[count($tmp_path)-1];
|
@include($path);
|
||||||
$filepath = ereg_replace($filename."$","",$path);
|
$content = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
|
FileHandler::writeFile($cache_file, $content);
|
||||||
|
|
||||||
|
// include후 결과를 return
|
||||||
|
if(!file_exists($cache_file)) return;
|
||||||
|
|
||||||
// 컴파일 시도
|
// 컴파일 시도
|
||||||
$oTemplate = &TemplateHandler::getInstance();
|
$oTemplate = &TemplateHandler::getInstance();
|
||||||
|
|
@ -108,13 +121,14 @@
|
||||||
FileHandler::writeFile($cache_file, $script);
|
FileHandler::writeFile($cache_file, $script);
|
||||||
}
|
}
|
||||||
|
|
||||||
// include후 결과를 return
|
$__Context = &$GLOBALS['__Context__'];
|
||||||
if(file_exists($cache_file)) {
|
$__Context->tpl_path = $filepath;
|
||||||
ob_start();
|
if($_SESSION['is_logged']) $__Context->logged_info = $_SESSION['logged_info'];
|
||||||
@include($cache_file);
|
|
||||||
$content = ob_get_contents();
|
ob_start();
|
||||||
ob_end_clean();
|
@include($cache_file);
|
||||||
}
|
$content = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
|
||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,5 +40,12 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// 페이지 캐시 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/page");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -61,10 +61,10 @@
|
||||||
// 변수 정리
|
// 변수 정리
|
||||||
$args = Context::getRequestVars();
|
$args = Context::getRequestVars();
|
||||||
|
|
||||||
$config->insert_document = $args->insert_document;
|
$config->insert_document = (int)$args->insert_document;
|
||||||
$config->insert_comment = $args->insert_comment;
|
$config->insert_comment = (int)$args->insert_comment;
|
||||||
$config->upload_file = $args->upload_file;
|
$config->upload_file = (int)$args->upload_file;
|
||||||
$config->download_file = $args->download_file;
|
$config->download_file = (int)$args->download_file;
|
||||||
|
|
||||||
foreach($args as $key => $val) {
|
foreach($args as $key => $val) {
|
||||||
preg_match("/^(insert_document|insert_comment|upload_file|download_file)_([0-9]+)$/", $key, $matches);
|
preg_match("/^(insert_document|insert_comment|upload_file|download_file)_([0-9]+)$/", $key, $matches);
|
||||||
|
|
@ -72,7 +72,7 @@
|
||||||
$name = $matches[1];
|
$name = $matches[1];
|
||||||
$module_srl = $matches[2];
|
$module_srl = $matches[2];
|
||||||
if(strlen($val)==0) unset($config->module_point[$module_srl][$name]);
|
if(strlen($val)==0) unset($config->module_point[$module_srl][$name]);
|
||||||
else $config->module_point[$module_srl][$name] = $val;
|
else $config->module_point[$module_srl][$name] = (int)$val;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 저장
|
// 저장
|
||||||
|
|
@ -120,7 +120,7 @@
|
||||||
$point = Context::get('point');
|
$point = Context::get('point');
|
||||||
|
|
||||||
$oPointController = &getController('point');
|
$oPointController = &getController('point');
|
||||||
return $oPointController->setPoint($member_srl, $point);
|
return $oPointController->setPoint($member_srl, (int)$point);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,13 @@
|
||||||
Context::set('member_list', $output->data);
|
Context::set('member_list', $output->data);
|
||||||
Context::set('page_navigation', $output->page_navigation);
|
Context::set('page_navigation', $output->page_navigation);
|
||||||
|
|
||||||
|
// 멤버모델 객체 생성
|
||||||
|
$oMemberModel = &getModel('member');
|
||||||
|
|
||||||
|
// group 목록 가져오기
|
||||||
|
$this->group_list = $oMemberModel->getGroups();
|
||||||
|
Context::set('group_list', $this->group_list);
|
||||||
|
|
||||||
// 템플릿 지정
|
// 템플릿 지정
|
||||||
$this->setTemplateFile('member_list');
|
$this->setTemplateFile('member_list');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -89,5 +89,14 @@
|
||||||
return new Object(0, 'success_updated');
|
return new Object(0, 'success_updated');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// point action 파일 재정의
|
||||||
|
$oPointAdminController = &getAdminController('point');
|
||||||
|
$oPointAdminController->cacheActList();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -57,21 +57,21 @@
|
||||||
* @brief 포인트 순 회원목록 가져오기
|
* @brief 포인트 순 회원목록 가져오기
|
||||||
**/
|
**/
|
||||||
function getMemberList($args = null) {
|
function getMemberList($args = null) {
|
||||||
if(!$args) {
|
// member model 객체 생성후 목록을 구해옴
|
||||||
$args->list_count = 20;
|
$oMemberModel = &getAdminModel('member');
|
||||||
$args->page = 1;
|
$output = $oMemberModel->getMemberList();
|
||||||
}
|
|
||||||
$output = executeQuery("point.getMemberList", $args);
|
|
||||||
if($output->total_count) {
|
if($output->total_count) {
|
||||||
$oModuleModel = &getModel('module');
|
$oModuleModel = &getModel('module');
|
||||||
$config = $oModuleModel->getModuleConfig('point');
|
$config = $oModuleModel->getModuleConfig('point');
|
||||||
|
|
||||||
foreach($output->data as $key => $val) {
|
foreach($output->data as $key => $val) {
|
||||||
$point = $val->point;
|
$point = $this->getPoint($val->member_srl);
|
||||||
$level = $this->getLevel($val->point, $config->level_step);
|
$output->data[$key]->point = $point;
|
||||||
$output->data[$key]->level = $level;
|
$output->data[$key]->level = $this->getLevel($point, $config->level_step);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,3 +46,35 @@
|
||||||
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="goToLast"><img src="../../admin/tpl/images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="goToLast"><img src="../../admin/tpl/images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 검색 -->
|
||||||
|
<form action="./" method="get" class="adminSearch">
|
||||||
|
<input type="hidden" name="module" value="{$module}" />
|
||||||
|
<input type="hidden" name="act" value="{$act}" />
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
|
||||||
|
<select name="is_admin">
|
||||||
|
<option value="" <!--@if($is_admin!='Y')-->selected="selected"<!--@end-->>{$lang->total}</option>
|
||||||
|
<option value="Y" <!--@if($is_admin=='Y')-->selected="selected"<!--@end-->>{$lang->is_admin}</option>
|
||||||
|
</select>
|
||||||
|
<select name="is_denied">
|
||||||
|
<option value="" <!--@if($is_denied!='Y')-->selected="selected"<!--@end-->>{$lang->total}</option>
|
||||||
|
<option value="Y" <!--@if($is_denied=='Y')-->selected="selected"<!--@end-->>{$lang->denied}</option>
|
||||||
|
</select>
|
||||||
|
<select name="selected_group_srl">
|
||||||
|
<option value="0">{$lang->group}</option>
|
||||||
|
<!--@foreach($group_list as $key => $val)-->
|
||||||
|
<option value="{$val->group_srl}" <!--@if($selected_group_srl==$val->group_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
|
||||||
|
<!--@end-->
|
||||||
|
</select>
|
||||||
|
<select name="search_target">
|
||||||
|
<option value="">{$lang->search_target}</option>
|
||||||
|
<!--@foreach($lang->search_target_list as $key => $val)-->
|
||||||
|
<option value="{$key}" <!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
|
||||||
|
<!--@end-->
|
||||||
|
</select>
|
||||||
|
<input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText" />
|
||||||
|
<span class="button"><input type="submit" value="{$lang->cmd_search}" /></span>
|
||||||
|
<a href="#" onclick="location.href='{getUrl('','module',$module,'act',$act)}';return false;" class="button"><span>{$lang->cmd_cancel}</span></a>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
|
@ -39,5 +39,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -32,5 +32,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,6 @@
|
||||||
<table name="spamfilter_denied_ip" />
|
<table name="spamfilter_denied_ip" />
|
||||||
</tables>
|
</tables>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="ipaddress" var="ipaddress" filter="number" notnull="notnull" />
|
<condition operation="equal" column="ipaddress" var="ipaddress" notnull="notnull" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,6 @@
|
||||||
<table name="spamfilter_denied_word" />
|
<table name="spamfilter_denied_word" />
|
||||||
</tables>
|
</tables>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="word" var="word" filter="number" notnull="notnull" />
|
<condition operation="equal" column="word" var="word" notnull="notnull" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<column name="count(*)" alias="count" />
|
<column name="count(*)" alias="count" />
|
||||||
</columns>
|
</columns>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="ipaddress" var="ipaddress" filter="number" notnull="notnull" />
|
<condition operation="equal" column="ipaddress" var="ipaddress" notnull="notnull" />
|
||||||
<condition operation="more" column="regdate" var="regdate" notnull="notnull" pipe="and" />
|
<condition operation="more" column="regdate" var="regdate" notnull="notnull" pipe="and" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,6 @@
|
||||||
<column name="count(*)" alias="count" />
|
<column name="count(*)" alias="count" />
|
||||||
</columns>
|
</columns>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="ipaddress" var="ipaddress" filter="number" notnull="notnull" />
|
<condition operation="equal" column="ipaddress" var="ipaddress" notnull="notnull" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -34,5 +34,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -28,5 +28,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -33,5 +33,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -32,5 +32,10 @@
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -37,5 +37,16 @@
|
||||||
function moduleUpdate() {
|
function moduleUpdate() {
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 캐시 파일 재생성
|
||||||
|
**/
|
||||||
|
function recompileCache() {
|
||||||
|
// widget 정보를 담은 캐시 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/widget");
|
||||||
|
|
||||||
|
// widget 생성 캐시 파일 삭제
|
||||||
|
FileHandler::removeFilesInDir("./files/cache/widget_cache");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
$regdate = Context::get('search_keyword');
|
$regdate = Context::get('search_keyword');
|
||||||
if($regdate) $obj->regdate = zdate($regdate, 'Ym');
|
if($regdate) $obj->regdate = zdate($regdate, 'Ym');
|
||||||
}
|
}
|
||||||
if(!$obj->regdate) $obj->regdate = date('Ym');
|
if(!$obj->regdate) $obj->regdate = zdate(date('YmdHis'), 'Ym');
|
||||||
|
|
||||||
// document 모듈의 model 객체를 받아서 getDailyArchivedList() method를 실행
|
// document 모듈의 model 객체를 받아서 getDailyArchivedList() method를 실행
|
||||||
$oDocumentModel = &getModel('document');
|
$oDocumentModel = &getModel('document');
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,7 @@
|
||||||
<node target="user_id" required="true" filter="user_id"/>
|
<node target="user_id" required="true" filter="user_id"/>
|
||||||
<node target="password" required="true" />
|
<node target="password" required="true" />
|
||||||
</form>
|
</form>
|
||||||
<parameter>
|
<parameter />
|
||||||
<param name="user_id" target="user_id" />
|
|
||||||
<param name="password" target="password" />
|
|
||||||
</parameter>
|
|
||||||
<response callback_func="completeLogin">
|
<response callback_func="completeLogin">
|
||||||
<tag name="error" />
|
<tag name="error" />
|
||||||
<tag name="message" />
|
<tag name="message" />
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,7 @@
|
||||||
<node target="user_id" required="true" filter="user_id"/>
|
<node target="user_id" required="true" filter="user_id"/>
|
||||||
<node target="password" required="true" />
|
<node target="password" required="true" />
|
||||||
</form>
|
</form>
|
||||||
<parameter>
|
<parameter />
|
||||||
<param name="user_id" target="user_id" />
|
|
||||||
<param name="password" target="password" />
|
|
||||||
</parameter>
|
|
||||||
<response callback_func="completeLogin">
|
<response callback_func="completeLogin">
|
||||||
<tag name="error" />
|
<tag name="error" />
|
||||||
<tag name="message" />
|
<tag name="message" />
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul class="documentList">
|
<ul class="documentList">
|
||||||
<!--@foreach($widget_info->document_list as $oDocument)-->
|
<!--@foreach($widget_info->document_list as $oDocument)-->
|
||||||
<li><a href="{$oDocument->getPermanentUrl()}#{$oDocument->getCommentCount()}">{$oDocument->getTitleText($widget_info->subject_cut_size)}</a></li>
|
<li><a href="{$oDocument->getPermanentUrl()}#{$oDocument->getCommentCount()}">{$oDocument->getTitleText($widget_info->subject_cut_size)}</a> {$oDocument->printExtraImages()}</li>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<!--@foreach($widget_info->document_list as $oDocument)-->
|
<!--@foreach($widget_info->document_list as $oDocument)-->
|
||||||
<li><a href="{$oDocument->getPermanentUrl()}#{$oDocument->getCommentCount()}">{$oDocument->getTitleText($widget_info->subject_cut_size)}</a></li>
|
<li><a href="{$oDocument->getPermanentUrl()}#{$oDocument->getCommentCount()}">{$oDocument->getTitleText($widget_info->subject_cut_size)}</a> {$oDocument->printExtraImages()}</li>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@
|
||||||
<span class="writer">
|
<span class="writer">
|
||||||
- {$oDocument->getNickName()}
|
- {$oDocument->getNickName()}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
{$oDocument->printExtraImages()}
|
||||||
</div>
|
</div>
|
||||||
<div class="regdate">{$oDocument->getRegdate("Y-m-d")}</div>
|
<div class="regdate">{$oDocument->getRegdate("Y-m-d")}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@
|
||||||
<!--@if($oDocument->getCommentCount())-->
|
<!--@if($oDocument->getCommentCount())-->
|
||||||
<span class="comment">[<a href="{$oDocument->getPermanentUrl()}#comment">{$oDocument->getCommentCount()}</a>]</span>
|
<span class="comment">[<a href="{$oDocument->getPermanentUrl()}#comment">{$oDocument->getCommentCount()}</a>]</span>
|
||||||
<!--@end-->
|
<!--@end-->
|
||||||
|
|
||||||
|
{$oDocument->printExtraImages()}
|
||||||
</span>
|
</span>
|
||||||
<span class="date"><span>{$oDocument->getRegdate("Y-m-d")}</span></span>
|
<span class="date"><span>{$oDocument->getRegdate("Y-m-d")}</span></span>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,13 @@
|
||||||
$widget_info->thumbnail_width = (int)$args->thumbnail_width;
|
$widget_info->thumbnail_width = (int)$args->thumbnail_width;
|
||||||
if(!$widget_info->thumbnail_width) $widget_info->thumbnail_width = 100;
|
if(!$widget_info->thumbnail_width) $widget_info->thumbnail_width = 100;
|
||||||
|
|
||||||
// 가로 이미지 수
|
|
||||||
$widget_info->rows_list_count = (int)$args->rows_list_count;
|
|
||||||
if(!$widget_info->rows_list_count) $widget_info->rows_list_count = 5;
|
|
||||||
|
|
||||||
// 세로 이미지 수
|
// 세로 이미지 수
|
||||||
|
$widget_info->rows_list_count = (int)$args->rows_list_count;
|
||||||
|
if(!$widget_info->rows_list_count) $widget_info->rows_list_count = 1;
|
||||||
|
|
||||||
|
// 가로 이미지 수
|
||||||
$widget_info->cols_list_count = (int)$args->cols_list_count;
|
$widget_info->cols_list_count = (int)$args->cols_list_count;
|
||||||
if(!$widget_info->cols_list_count) $widget_info->cols_list_count = 1;
|
if(!$widget_info->cols_list_count) $widget_info->cols_list_count = 5;
|
||||||
|
|
||||||
// 노출 여부 체크
|
// 노출 여부 체크
|
||||||
if($args->display_author!='Y') $widget_info->display_author = 'N';
|
if($args->display_author!='Y') $widget_info->display_author = 'N';
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue