diff --git a/documents/changelog_ko.txt b/documents/changelog_ko.txt index f12aa8660..3657f2806 100644 --- a/documents/changelog_ko.txt +++ b/documents/changelog_ko.txt @@ -1,59 +1,84 @@ -* 이 문서는 변경사항을 모두 포함하고 있지 않을 수 있습니다. 자세한 변경사항 열람을 위해서는 텍스트큐브 개발 사이트 (http://dev.textcube.org) 의 해당 버전의 로드맵과 티켓들을 확인해 주시기 바랍니다. +* 이 문서는 변경사항을 모두 포함하고 있지 않을 수 있습니다. 자세한 변경사항 열람을 위해서는 텍스트큐브 개발 사이트 (http://github.com/Needlworks/textcube (CURRENT), http://dev.textcube.org (OLD) ) 의 해당 버전의 로드맵과 티켓들을 확인해 주시기 바랍니다. * 버그 로그는 일반적으로 이전 버전에서 발생했으나 해결된 부분을 포함하며, 이번 버전을 만드는 과정에서 발생하는 버그는 기록하지 않습니다. == v1.9 개발 관련 노트 == === 추가된 점 === * 관리패널 : 기본 관리 패널 UI 변경 (#1519) * 관리패널 : 댓글 IP 차단시 같은 IP에서 작성된 댓글의 일괄 삭제 옵션 제공 (#1593) + * 관리패널 : Line 작성시 글자 수 제한을 체크하여 알려줌 (#1498) * 에디터 : 기본 에디터를 tinyMCE 기반의 에디터로 변경 (#1586) + * 에디터 : 에디터 사용시 기본 에디터 폭을 스킨을 따를 것인지 전체 화면 폭을 모두 사용할 것인지 설정할 수 있도록 함 + * 일반 : 거의 모든 출력 화면 (카테고리 / 저자별 포함) 에 대한 RSS / ATOM 피드 출력 지원 (# 1540) + * 일반 : 기본 CSS 폰트들을 운영체제에 맞게 재지정 (#1320) * 일반 : SQLite3를 데이터 저장 backend로 지원 (알파) (#1575) * 일반 : FAS (Frypan Anti-spam Service) 추가 (#1563) + * 일반 : 새 모바일 장치용 UI 도입 (#1604) + * 일반 : 스팸이 댓글/트랙백 테이블에 너무 오래 머물러 속도가 저하되는 것을 막기 위하여 휴지통 플러싱 주기 조정 옵션 추가 (#1633) + * 일반 : 일부 제한된 로컬 환경에서 IPv6으로 예약된 로컬 호스트 주소 매핑 지원 (#1573) * 설치 : Security instruction at post-setup screen (#1629) * 설치 : PHP 5.5 / MySQL 5.5 호환성 확장 (#1609, #1630) - + * 블로그 : 블로그를 크롤링하는 검색엔진이 동일한 페이지를 중복 주소로 크롤링하지 않도록 canonical meta tag (rel=canonical) 자동 지원 (#1648) + === 변경된 점 === + * 관리패널 : canon 스킨 업데이트 (#1519) + * 일반 : autoload를 사용하는 플러그인이 NAF 프레임웍의 autoload와 충돌 가능한 문제 수정 (#1584) + * 일반 : OpenID 로그인 시의 안내 및 링크 수정 (#1637) + * RSS/ATOM : feed validation 을 위한 E-Mail 규격 추가 지원 (#1518) + * 일반 : PHP 5.4대응을 위한 framework 업그레이드 + * 에디터 : 기본 modern editor를 tinyMCE 에디터로 이전 (#1586) === 버그 수정 === * 일반 : 대량의 스팸이 휴지통에 있는 경우 데이터 교정이 실행되다 멈추는 문제 수정 (#1581) * 일반 : 리샘플링 설정이 변경되지 않는 문제 수정 (#1581) * 일반 : MySQLi 사용시 디버그 모드가 동작하지 않던 문제 수정 (#1630) - * 일반 : escapeString 함수의 동작이 DBMS 접속 이후에 일어나 워닝을 내보내는 문제 수정 (#1627) + * 일반 : escapeString 함수의 동작이 DBMS close 이후에 일어나 워닝을 내보내는 문제 수정 (#1627) + * 일반 : 트랙백을 허용하지 않음 옵션이 작동하지 않는 문제 수정 (#1645) + * 일반 : 댓글을 허용하지 않을 때 댓글에 댓글 달기는 가능한 문제 수정 (#1645) * 관리패널 : 전체 관리 모드에서 새 블로그 추가가 되지 않는 문제 수정 (#1582) * 관리패널 : 블로그 서비스 관리에서 트랙백/핑백 정보를 제대로 읽어오지 못하는 문제 수정 (#1582) * 관리패널 : 커버페이지 플러그인 추가 및 제거 기능이 동작하지 않는 문제 수정 (#1626) * 에디터 : PHP 5.3 이후 버전에서 화면 로드시 에디터 콜에서 call-by-reference error (#1494) + * 에디터 : 에디터 실시간 변경시 제대로 동작하지 않는 문제 수정 (#1439) * 모바일 : 일부 웹서버의 URL 인코딩 셋팅이 안드로이드 브라우저 접속시 공개 글을 보호글로 보이도록 하는 문제 수정 (#1581) - * 모바일 : 태그 및 보관 페이지에서 한 페이지 글 수보다 작은 글을 가진 페이지를 보여줄 때 빈 페이지가 나오는 문제 수정 (#1631) - * 설치 : 데이터베이스 쿼리 후 제대로된 버전을 알려주지 않는 문제 수정 (#1612) - * 스킨 : 배포판 standard 스킨에서 방명록 비밀글 체크 옵션이 누락된 문제 수정 (#1628) + * 모바일 : 태그 및 보관 페이지에서 한 페이지 글 수보다 작은 글을 가진 페이지를 보여줄 때 빈 페이지가 나오는 문제 수정 (#1631) + * 라인 : 비공개 라인이 작성되지 않는 버그 수정 (#1613) + * 설치 : 데이터베이스 쿼리 후 제대로된 버전을 알려주지 않는 문제 수정 (#1612) + * 스킨 : 배포판 standard 스킨에서 방명록 비밀글 체크 옵션이 누락된 문제 수정 (#1628) +=== 추가된 옵션 안내 === +config.php를 편집하여 다음의 옵션들을 수정할 수 있습니다. 충분한 테스트가 이루어진 후 서버 관리 패널 UI에서 조정할수도 있게 될 예정입니다. (현재는 config.php 파일 직접 수정만이 가능합니다.) + +> $service['trashtimelimit'] = 302400; // 스팸 휴지통을 자동으로 비울 때 과거 얼마까지를 남기고 지울 것인지를 결정합니다. 단위는 초 입니다. +> $service['codecache'] = false; // 코드 캐시를 사용합니다. 부하가 심한 서버의 경우 PHP 소스코드를 블로그 / 관리패널 / 리더모드 등의 여러 경우에 대하여 필요한 코드만을 묶은 파일로 캐싱함으로서 속도 향상 및 부하 감소를 유도할 수 있습니다. 단, 소스 수정이 잦은 사용자의 경우 소스를 수정할 때 마다 강제 checkup을 통하여 코드 캐시를 재생성해야 합니다. + + == v1.8.6 개발 관련 노트 == === 추가된 점 === - * 스킨 : 댓글 다 보여주기 / 페이징 여부에 상관없이 댓글 정렬 순서를 스킨/스킨 상세 설정 에서 조정할 수 있도록 함.(#1570) - * 블로그 : 안드로이드에서 iPhone/iPod Touch와 동일한 UI 지원 (#1576) + * 스킨 : 댓글 다 보여주기 / 페이징 여부에 상관없이 댓글 정렬 순서를 스킨/스킨 상세 설정 에서 조정할 수 있도록 함.(#1570) + * 블로그 : 안드로이드에서 iPhone/iPod Touch와 동일한 UI 지원 (#1576) === 변경된 점 === - * 일반 : jQuery 라이브러리의 버전 업데이트 (#1560) - * 일반 : 로그인 시 블로그로 되돌아가기 링크 추가 (#1567) + * 일반 : jQuery 라이브러리의 버전 업데이트 (#1560) + * 일반 : 로그인 시 블로그로 되돌아가기 링크 추가 (#1567) === 버그 수정 === - * 일반 : PHP 5.3 이상에서 DirectoryIterator가 더이상 순차적 파일 이름 정렬을 보장하지 않아 발생할 수 있는 라이브러리 로드 문제 수정 (#1564) - * 리더 : 플래시를 통하여 악의적 공격이 가능할 수 있는 문제 수정 (#1107) - * OpenID : 방문자 계정을 생성하여 XSS 삽입 방식의 공격이 가능할 수 있는 문제 수정 (#1558) - * Setup : 설치시 MySQL쿼리의 문법 오류 수정 (#1577) - * 스킨 : 스킨 편집시 마지막으로 편집한 탭의 내용이 저장되지 않는 문제 수정 (#1580) + * 일반 : PHP 5.3 이상에서 DirectoryIterator가 더이상 순차적 파일 이름 정렬을 보장하지 않아 발생할 수 있는 라이브러리 로드 문제 수정 (#1564) + * 리더 : 플래시를 통하여 악의적 공격이 가능할 수 있는 문제 수정 (#1107) + * OpenID : 방문자 계정을 생성하여 XSS 삽입 방식의 공격이 가능할 수 있는 문제 수정 (#1558) + * Setup : 설치시 MySQL쿼리의 문법 오류 수정 (#1577) + * 스킨 : 스킨 편집시 마지막으로 편집한 탭의 내용이 저장되지 않는 문제 수정 (#1580) == v1.8.5 개발 관련 노트 == === 변경된 점 === - * TTXML : ttxml 출력시 memory-hog 오류 방지를 위하여 버퍼 기반의 출력방식으로 변경 (#1522) - * 피드 : default feed author 를 email 정보 포함으로 변경 (#1518) - * 피드 : RSS에 ATOM channel anchor 추가 (#1518) + * TTXML : ttxml 출력시 memory-hog 오류 방지를 위하여 버퍼 기반의 출력방식으로 변경 (#1522) + * 피드 : default feed author 를 email 정보 포함으로 변경 (#1518) + * 피드 : RSS에 ATOM channel anchor 추가 (#1518) === 버그 수정 === - * 일반 : 캐시 동작시 RSS 출력시 글이 섞이거나 HTML 태그가 보이는 등의 문제가 발생하여 리더에서 RSS를 잘못 읽어갈 수 있는 문제 수정 (#1520) - * 일반 : 글을 삭제할 경우 카테고리의 글 숫자가 변하지 않는 문제 수정 (#1525) - * 블로그 : author별 글보기 페이지가 pageCache 사용시 출력되지 않는 문제 수정 (#1524) - * 에디터 : ctrl-c, ctrl-v로 닫히지 않는 이미지 태그 로 글을 복사할 경우 이미지 리샘플링기능을 켜고 그글이 일정길이가 되면 글 내용이 안나오는 문제 자동 보정 (#1480) + * 일반 : 캐시 동작시 RSS 출력시 글이 섞이거나 HTML 태그가 보이는 등의 문제가 발생하여 리더에서 RSS를 잘못 읽어갈 수 있는 문제 수정 (#1520) + * 일반 : 글을 삭제할 경우 카테고리의 글 숫자가 변하지 않는 문제 수정 (#1525) + * 블로그 : author별 글보기 페이지가 pageCache 사용시 출력되지 않는 문제 수정 (#1524) + * 에디터 : ctrl-c, ctrl-v로 닫히지 않는 이미지 태그 로 글을 복사할 경우 이미지 리샘플링기능을 켜고 그글이 일정길이가 되면 글 내용이 안나오는 문제 자동 보정 (#1480) == v1.8.4 개발 관련 노트 == === 추가된 점 === diff --git a/framework/model/URIHandler.php b/framework/model/URIHandler.php index b426ffbd9..3b7976deb 100644 --- a/framework/model/URIHandler.php +++ b/framework/model/URIHandler.php @@ -178,7 +178,7 @@ private function __URIvariableParser() { $this->uri['host'] = 'http://' . $_SERVER['HTTP_HOST'] . (!is_null($this->context->getProperty('port')) ? ':' . $this->context->getProperty('port') : ''); $this->uri['blog'] = $this->uri['path'].$this->__getFancyURLpostfix(); $this->uri['folder'] = rtrim($this->uri['blog'] . $suri['directive'], '/'); - + $this->uri['permalink'] = $this->uri['default'].'/'.implode('/',$this->uri['fragment']); $this->uri['basicblog'] = $this->uri['blog']; if (defined('__TEXTCUBE_MOBILE__')) { $this->uri['blog'] .= '/m'; diff --git a/interface/blog/entry.php b/interface/blog/entry.php index c87b754bc..228bc7771 100644 --- a/interface/blog/entry.php +++ b/interface/blog/entry.php @@ -49,9 +49,6 @@ fireEvent('OBStart'); require ROOT . '/interface/common/blog/begin.php'; -$automaticLink = "getProperty('uri.service')."/resources/style/system.css\" type=\"text/css\" media=\"screen\" />\n"; -dress('SKIN_head_end', $automaticLink."[##_SKIN_head_end_##]", $view); - if (empty($suri['value'])) { require ROOT . '/interface/common/blog/entries.php'; } else if (empty($entries)) { diff --git a/interface/common/blog/begin.php b/interface/common/blog/begin.php index fa95fb13f..9d4b06a47 100644 --- a/interface/common/blog/begin.php +++ b/interface/common/blog/begin.php @@ -17,9 +17,11 @@ $view = str_replace('[##_SKIN_head_end_##]',getScriptsOnHead().'[##_SKIN_head_end_##]', $view); // TO DO : caching this part. $view = str_replace('[##_SKIN_body_start_##]',getUpperView(isset($paging) ? $paging : null).'[##_SKIN_body_start_##]', $view); $view = str_replace('[##_SKIN_body_end_##]',getLowerView().getScriptsOnFoot().'[##_SKIN_body_end_##]', $view); // care the order for js function overloading issue. +$automaticLink = " getProperty('uri.default')."/resources/style/system.css\" type=\"text/css\" media=\"screen\" />\n"; +$canonicalLink = " getProperty('uri.permalink')."\"/>\n"; + +dress('SKIN_head_end', $canonicalLink.$automaticLink."[##_SKIN_head_end_##]", $view); -$automaticLink = " getProperty('uri.service')."/resources/style/system.css\" type=\"text/css\" media=\"screen\" />\n"; -dress('SKIN_head_end', $automaticLink."[##_SKIN_head_end_##]", $view); if($context->getProperty('blog.useBlogIconAsIphoneShortcut') == true && file_exists(__TEXTCUBE_ATTACH_DIR__."/".$context->getProperty('blog.id')."/index.gif")) { dress('SKIN_head_end', ''."[##_SKIN_head_end_##]",$view);