Skip to content

Commit

Permalink
refs #514
Browse files Browse the repository at this point in the history
  * 1.8 트리와 동기화
  • Loading branch information
inureyes committed Aug 31, 2010
1 parent b8afd1c commit 7096b83
Show file tree
Hide file tree
Showing 26 changed files with 227 additions and 133 deletions.
8 changes: 6 additions & 2 deletions documents/changelog_ko.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
=== 추가된 점 ===
* 블로그 : 사용자가 댓글을 달 때 저장중이라는 메세지를 출력함 (#1488)
* 일반 : 스킨 컨텐트 출력 폭을 DB에서 읽어오도록 변경 (#1497)
* 일반 : 컨텐츠 포매터를 매번 거치지 않고 캐시 사용 (#1513)
* 관리패널 : 컨트롤 패널의 독립 (#1338)
* 관리패널 : 블로그 설정에서 첫 화면을 글/표지/라인 선택 기능 추가 (#1500)
* 플러그인 : 플러그인 정보를 텍스트큐브 로드 시마다 실시간 해석하는 대신 캐시 사용 (#1508)
* 플러그인 : 플러그인 환경 설정 정보를 캐싱함. (#940)

=== 변경된 점 ===
* 관리패널 : 블로그 초대 시스템시 불명확한 사용자 메세지 개선 (#1361)
* 관리패널 : 비공개 블로그 서비스에서 적용 가능한 옵션 조정 (#1478)
Expand All @@ -19,7 +21,8 @@
* 블로그 : 검색 form에 name 속성 추가 (#1481)
* 블로그 : 다중 블로그 모드에서 로그인 시 권한에 따라 안내 메세지를 출력하도록 추가 (#1485)
* 스킨 : 댓글을 단 후 에러메세지가 null로 출력되는 경우 상세하게 출력되도록 일부 루틴 추가 (#1496)

* 에디터 : 모바일 모드에서 로그인했을 때 업로드창이 출력되지 않도록 조정 (#1497)

=== 버그 수정 ===
* 일반 : 대표 블로그 설정값이 제대로 적용되지 않는 문제 수정 (#1463)
* 일반 : 대시보드 변경시 캐시가 재생성되지 않는 문제 수정 (#1362)
Expand All @@ -31,6 +34,7 @@
* 관리패널 : 블로그 이미지 변경 후 스킨 캐시가 제대로 갱신되지 않는 문제 수정 (#1486)
* 관리패널 : 다중 블로그 모드일 때 대표 블로그 지정시 반영되지 않는 문제 수정 (#1487)
* 관리패널 : 보낸 트랙백 주소가 저장이 되지 않는 문제 수정 (#1474)
* 관리패널 : 링크 추가시 http:// 가 붙어있지 않은 경우 링크가 블로그 하위로 붙는 문제 수정 (#1499)
* 모바일 : 관리 패널에서 아이폰 바로가기를 만들 경우 블로그 아이콘이 바로가기 아이콘으로 적용되지 않는 문제 수정 (#1469)
* 모바일 : 모바일 뷰에서 locale 클래스가 정상적으로 동작하지 않던 문제 수정 (#1476)
* 플러그인 : DateConverter 플러그인 'List date' 변환 안되는 버그 (#1222)
Expand Down
5 changes: 5 additions & 0 deletions framework/data/DBModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,11 @@ public function getCount($field = '*') {
return POD::queryCount('SELECT ' . $field . ' FROM ' . $this->table . $this->_makeWhereClause() . ' LIMIT 1');
}

public function getCount($field = '*') {
$field = $this->_treatReservedFields($field);
return POD::queryCount('SELECT ' . $field . ' FROM ' . $this->table . $this->_makeWhereClause() . ' LIMIT 1');
}

public function insert() {
$this->id = null;
if (empty($this->table))
Expand Down
3 changes: 2 additions & 1 deletion framework/id/textcube/config.default.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
define('TEXTCUBE_VERSION', '1.9 : Alpha 1');
define('TEXTCUBE_COPYRIGHT', 'Copyright © 2004-2010. Needlworks / Tatter Network Foundation. All rights reserved. Licensed under the GPL.');
define('TEXTCUBE_HOMEPAGE', 'http://www.textcube.org/');
define('TEXTCUBE_RESOURCE_URL', 'http://resources.textcube.org/1.8.3');
define('TEXTCUBE_RESOURCE_URL', 'http://resources.textcube.org/1.8.4');
define('TEXTCUBE_NOTICE_URL','http://feeds.feedburner.com/textcube/');
define('CRLF', "\r\n");
define('TAB', " ");
define('INT_MAX',2147483647);
Expand Down
1 change: 1 addition & 0 deletions framework/legacy/Textcube.Function.Setting.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ function getBlogSettingsGlobal($blogid = null) {
'logoLabel' => '',
'logoWidth' => 0,
'logoHeight' => 0,
'frontpage' => 'entry',
'useFeedViewOnCategory' => 1,
'useSloganOnPost' => 1,
'useSloganOnCategory' => 1,
Expand Down
3 changes: 3 additions & 0 deletions interface/blog/line.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
/// Copyright (c) 2004-2010, Needlworks / Tatter Network Foundation
/// All rights reserved. Licensed under the GPL.
/// See the GNU General Public License for more details. (/documents/LICENSE, /documents/COPYRIGHT)

define('__TEXTCUBE_LINE__',true);

$IV = array(
'GET' => array(
'key' => array('string','default'=>''),
Expand Down
49 changes: 39 additions & 10 deletions interface/control/blog/detail/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@
require ROOT . '/interface/common/control/header.php';

requirePrivilege('group.creators');
global $database;

$context = Model_Context::getInstance();

$bid=$suri['id'];
$blogsetting = getBlogSettingGlobals($bid);
$blogsetting = Setting::getBlogSettingsGlobal($bid);
$pool = DBModel::getInstance();

?>
<script type="text/javascript">
//<![CDATA[
Expand Down Expand Up @@ -111,14 +115,35 @@ function addUser(user) {
<div class="main-explain-box">
<p class="explain"><?php echo empty($blogsetting['description']) ? '<em>'._t('비어 있는 블로그 설명').'</em>' : $blogsetting['description'];?></p>
</div>

<?php
$isRepBlog = ($bid == Setting::getServiceSetting("defaultBlogId",1,true) ? true : false);

$pool->reset('Entries');
$pool->setQualifier('blogid','eq',$bid);
$pool->setQualifier('draft','eq',0);
$numberOfEntries = $pool->getCount();

$pool->reset('RemoteResponses');
$pool->setQualifier('blogid','eq',$bid);
$pool->setQualifier('type','eq','trackback',true);
$pool->setQualifier('isfiltered','eq',0);
$numberOfTrackbacks = $pool->getCount();

$pool->reset('Comments');
$pool->setQualifier('blogid','eq',$bid);
$pool->setQualifier('isfiltered','eq',0);
$numberOfComments = $pool->getCount();

$pool->reset('Attachments');
$pool->setQualifier('blogid','eq',$bid);
$attachmentSum = $pool->getCell('sum(size)');
?>
<ul>
<?php if ($bid == getServiceSetting("defaultBlogId",1)) { ?><li><em><?php echo _t('이 블로그는 대표 블로그입니다.');?></em></li><?php } ?>
<li><?php echo _f('이 블로그에는 총 %1개의 글이 있습니다.', POD::queryCell("SELECT count(*) FROM {$database['prefix']}Entries WHERE blogid = ".$bid));?></li>
<li><?php echo _f('이 블로그에는 총 %1개의 걸린글(트랙백)이 있습니다.', POD::queryCell("SELECT count(*) FROM {$database['prefix']}RemoteResponses WHERE blogid = ".$bid." AND type = 'trackback'"));?></li>
<li><?php echo _f('이 블로그에는 총 %1개의 댓글이 있습니다.', POD::queryCell("SELECT count(*) FROM {$database['prefix']}Comments WHERE blogid = ".$bid));?></li>
<?php if ($isRepBlog) { ?><li><em><?php echo _t('이 블로그는 대표 블로그입니다.');?></em></li><?php } ?>
<li><?php echo _f('이 블로그에는 총 %1개의 글이 있습니다.', $numberOfEntries);?></li>
<li><?php echo _f('이 블로그에는 총 %1개의 걸린글(트랙백)이 있습니다.', $numberOfTrackbacks);?></li>
<li><?php echo _f('이 블로그에는 총 %1개의 댓글이 있습니다.', $numberOfComments);?></li>
<li><?php
$attachmentSum = POD::queryCell("SELECT sum(size) FROM `{$database['prefix']}Attachments` WHERE blogid = ".$bid);
if(empty($attachmentSum)) echo _t('이 블로그에는 첨부파일이 없습니다.');
else echo _f('이 블로그가 사용중인 첨부파일의 총 용량은 %1입니다.', Misc::getSizeHumanReadable($attachmentSum));?></li>
</ul>
Expand All @@ -138,7 +163,11 @@ function addUser(user) {
</thead>
<tbody>
<?php
$teamblog = POD::queryAll("SELECT * FROM `{$database['prefix']}Privileges` WHERE blogid = " . $bid);

$pool->reset('Privileges');
$pool->setQualifier('blogid','eq',$bid);
$teamblog = $pool->getAll();

foreach ($teamblog as $row){
echo "<tr>".CRLF;
echo "<td class=\"name\"><a href=\"".$context->getProperty('uri.blog')."/control/user/detail/{$row['userid']}\">".User::getName($row['userid'])."(".User::getEmail($row['userid']).")</a></td>".CRLF;
Expand All @@ -162,7 +191,7 @@ function addUser(user) {
<div id="team-new-member" class="container">
<h4><?php echo _t('팀원 추가');?></h4>

<form action="<?php echo $context->getProperty('uri.blog')?>/control/action/blog/addUser/">
<form action="<?php echo $context->getProperty('uri.blog');?>/control/action/blog/addUser/">
<dl>
<dt><label for=""><?php echo _t('사용자'); ?></label></dt>
<dd>
Expand Down
27 changes: 20 additions & 7 deletions interface/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,25 @@

if(empty($suri['id'])) { // Without id.
$skin = new Skin($skinSetting['skin']);
if(empty($suri['value']) && $suri["directive"] == "/" && count($coverpageMappings) > 0 && Setting::getBlogSettingGlobal("coverpageInitView") && isset($skin->cover)) {
define('__TEXTCUBE_COVER__',true);
require ROOT . '/interface/common/blog/begin.php';
dress('article_rep', '', $view);
dress('paging', '', $view);
require ROOT . '/interface/common/blog/cover.php';
$frontpage = Setting::getBlogSettingGlobal('frontpage','entry');
if (empty($suri['value']) && $suri["directive"] == "/" && ($frontpage != 'entry')) {
if($frontpage == 'cover' && isset($skin->cover) && count($coverpageMappings) > 0) {
define('__TEXTCUBE_COVER__',true);
require ROOT . '/interface/common/blog/begin.php';
dress('article_rep', '', $view);
dress('paging', '', $view);
require ROOT . '/interface/common/blog/cover.php';
} else if ($frontpage == 'line' && isset($skin->line)) {
define('__TEXTCUBE_LINE__',true);
$lineobj = Model_Line::getInstance();
$lineobj->reset();
$lineobj->setFilter(array('category','equals','public',true));
$lineobj->setLimit(20);
$lineobj->setOrder('created','desc');
$lines = $lineobj->get();
require ROOT . '/interface/common/blog/begin.php';
require ROOT . '/interface/common/blog/line.php';
}
} else {
list($entries, $paging) = getEntriesWithPaging($blogid, $suri['page'], $blog['entriesOnPage']);
require ROOT . '/interface/common/blog/begin.php';
Expand Down Expand Up @@ -121,4 +134,4 @@
}
}
fireEvent('OBEnd');
?>
?>
2 changes: 1 addition & 1 deletion interface/owner/center/dashboard/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,7 @@ function getDefaultCenterPanel($mapping) {
</div>

<?php
$noticeURL = "http://notice.textcube.org/";
$noticeURL = TEXTCUBE_NOTICE_URL;
$noticeURLRSS = $noticeURL.($ctx->getProperty('blog.language') ? $ctx->getProperty('blog.language') : "ko")."/rss";
$noticeEntries = array();

Expand Down
2 changes: 2 additions & 0 deletions interface/owner/network/link/add/exec/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@
requireModel("blog.link");

requireStrictRoute();
if(strpos($_POST['rss'],'http://') !== 0) $_POST['rss'] = 'http://'.$_POST['rss'];
if(strpos($_POST['url'],'http://') !== 0) $_POST['url'] = 'http://'.$_POST['url'];
Respond::ResultPage(addLink($blogid, $_POST));
?>
2 changes: 2 additions & 0 deletions interface/owner/reader/action/feed/add/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
);
require ROOT . '/library/preprocessor.php';
requireStrictRoute();

if(strpos($_POST['url'],'http://') !== 0) $_POST['url'] = 'http://'.$_POST['url'];
$result = array('error' => addFeed(getBlogId(), $_POST['group'], $_POST['url']));
ob_start();
printFeeds($blogid, $_POST['group']);
Expand Down
19 changes: 19 additions & 0 deletions interface/owner/setting/blog/frontpage/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php
/// Copyright (c) 2004-2010, Needlworks / Tatter Network Foundation
/// All rights reserved. Licensed under the GPL.
/// See the GNU General Public License for more details. (/documents/LICENSE, /documents/COPYRIGHT)
$IV = array(
'POST' => array(
'frontpage' => array('string','default' => '')
)
);
require ROOT . '/library/preprocessor.php';
requireStrictRoute();
if (!empty($_POST['frontpage'])){
if(in_array($_POST['frontpage'],array('entry','cover','line'))) {
Setting::setBlogSettingGlobal('frontpage',$_POST['frontpage']);
Respond::ResultPage(0);
}
}
Respond::ResultPage(-1);
?>
47 changes: 47 additions & 0 deletions interface/owner/setting/blog/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,25 @@ function setIcons() {
var publishWholeOnRSS = "<?php echo $blog['publishWholeOnRSS'];?>";
var allowCommentGuestbook = <?php echo $blog['allowWriteDblCommentOnGuestbook'];?>;
var blogVisibility = <?php echo $blog['visibility'];?>;
var frontPage = <?php echo $blog['frontpage'];?>;


function setFrontpage() {
var frontPage;
if(document.getElementById('frontpageEntry').checked) frontPage = 'entry';
else if(document.getElementById('frontpageCover').checked) frontPage = 'cover';
else frontPage = 'line';
var request = new HTTPRequest("POST", "<?php echo $blogURL;?>/owner/setting/blog/frontpage/");
request.onSuccess = function() {
PM.showMessage("<?php echo _t('저장되었습니다');?>", "center", "bottom");
}

request.onError = function() {
alert("<?php echo _t('첫 페이지를 변경할 수 없습니다.');?>");
}
request.send("frontpage="+frontPage);
}

function setPolicy() {
if (document.getElementById('rss-form').useSlogan[useSlogan].checked == true
|| document.getElementById('rss-form').useCSlogan[useCSlogan].checked == true
Expand Down Expand Up @@ -585,7 +603,36 @@ function setLocale() {
</div>
</form>
</div>

<hr class="hidden" />

<div id="part-setting-frontpage" class="part">
<h2 class="caption"><span class="main-text"><?php echo _t('블로그 첫 화면을 설정합니다');?></span></h2>

<form id="frontpage-form" class="data-inbox" method="post" action="<?php echo parseURL($blogURL.'/owner/setting/frontpage');?>">
<div id="frontpage-section" class="section">
<fieldset class="container">
<legend><?php echo _t('첫 화면 설정');?></legend>

<dl id="blog-frontpage-line" class="line">
<dt><span class="label"><?php echo _t('블로그 첫 페이지');?></span></dt>
<dd>
<input type="radio" id="frontpageEntry" class="radio" name="frontpage"<?php echo ($blog['frontpage']=='entry' ? ' checked="checked"' : '');?> /><label for="visibilityPrivate"><span class="text"><?php echo _t('블로그 첫 페이지에서 최근 글을 보여주도록 합니다.');?></span></label><br />
<input type="radio" id="frontpageCover" class="radio" name="frontpage"<?php echo ($blog['frontpage']=='cover' ? ' checked="checked"' : '');?> /><label for="visibilityMember"><span class="text"><?php echo _t('블로그 첫 페이지에서 표지를 보여주도록 합니다.');?></span></label><br />
<input type="radio" id="frontpageLine" class="radio" name="frontpage"<?php echo ($blog['frontpage']=='line' ? ' checked="checked"' : '');?> /><label for="visibilityPublic"><span class="text"><?php echo _t('블로그 첫 페이지에서 라인을 보여주도록 합니다.');?></span></label>
</dd>
<dd>
<p><label for="visibility"><?php echo _t('블로그 첫 페이지를 설정합니다.').' '._t('블로그 주소로 접근할 경우 처음 보이는 페이지를 선택합니다.');?></label></p>
</dd>
</dl>
</fieldset>
</div>
<div class="button-box">
<input type="submit" class="save-button input-button wide-button" value="<?php echo _t('저장하기');?>" onclick="setFrontpage(); return false;" />
</div>
</form>
</div>

<hr class="hidden" />
<div id="part-setting-rss" class="part">
<h2 class="caption"><span class="main-text"><?php echo _t('블로그 공개 정책을 설정합니다');?></span></h2>
Expand Down
5 changes: 3 additions & 2 deletions interface/owner/setting/entry/resample/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@

// 기본 설정
if (isset($_POST['useResamplingAsDefault']) && ($_POST['useResamplingAsDefault'] == "yes")) {
setBlogSetting("resamplingDefault", "yes");
Setting::setBlogSettingGlobal("resamplingDefault", "yes");
} else {
removeBlogSetting("resamplingDefault");
Setting::removeBlogSettingiGlobal("resamplingDefault");
}
CacheControl::flushEntry();

$isAjaxRequest ? Respond::PrintResult($errorResult) : header("Location: ".$_SERVER['HTTP_REFERER']);
?>
2 changes: 1 addition & 1 deletion interface/owner/skin/adminSkin/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function writeValue($value, $label, $className) {

if(!$skinFile->isDir()) continue;
if(strpos($skinFile->getFilename(),'.') === 0) continue;

if($skinFile->getFilename() == 'mobile') continue;
if (!file_exists($skinFile->getPathname()."/index.xml")) continue;

$skin = array();
Expand Down
32 changes: 1 addition & 31 deletions interface/owner/skin/coverpage/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@ function correctImagePath($match ) {
return str_replace( $match[1], $context->getProperty('uri.service') . "/skin/{$skinSetting['skin']}/" . $match[1], $match[0]);
}

if (false) correctImagePath('');

function getBlogContentForCoverPage()
{
global $blogid, $blog, $context->getProperty('uri.blog'), $database, $service, $stats, $skinSetting;
Expand Down Expand Up @@ -212,22 +210,6 @@ function pretty_dress($view)
$usedCoverpageBasicModule = array();
$coverpageCount = count($skin->coverpageBasicModules);

if (($_SERVER['REQUEST_METHOD'] == 'POST') && (empty($_POST['useCoverpageInit']))) {
$coverpageInitView = Setting::getBlogSettingGlobal("coverpageInitView");
if (is_null($coverpageInitView)) {
setBlogSetting("coverpageInitView", 1);
$coverpageInitView = 1;
} else {
setBlogSetting("coverpageInitView", 0);
$coverpageInitView = 0;
}
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
setBlogSetting("coverpageInitView", 1);
$coverpageInitView = 1;
} else {
$coverpageInitView = Setting::getBlogSettingGlobal("coverpageInitView");
}

getBlogContentForCoverPage();
?>
<form id="part-coverpage-order" class="part" method="post" action="<?php echo parseURL($context->getProperty('uri.blog').'/owner/skin/coverpage');?>">
Expand All @@ -236,22 +218,10 @@ function pretty_dress($view)
require ROOT . '/interface/common/owner/skinTab.php';
?>

<?php
if(isset($skin->cover)) {
?>
<dl id="independent-cover-line" class="line">
<dt><?php echo _t('독립패널 설정');?></dt>
<dd>
<input type="checkbox" class="checkbox" id="useCoverpageInit" name="useCoverpageInit" value="on" onclick="changeList();return false;"<?php echo $coverpageInitView == 1 ? ' checked="checked"' : NULL;?> />
<label for="useCoverpageInit"><?php echo _t('표지를 블로그의 첫 화면으로 사용합니다');?></label>
</dd>
</dl>
<?php
}
?>
<div class="main-explain-box">
<p class="explain"><?php echo _t('블로그의 표지 구성을 변경할 수 있습니다.');?> <?php echo _f('표지는 블로그 첫 화면 또는 %1/cover 에 표시되는 부분입니다.',$context->getProperty('uri.default'));?> <?php echo _t('표지에 새로운 요소를 추가/삭제할 수 있으며 패널들을 자유롭게 배치 할 수 있습니다.');?>
<?php echo ($service['type'] == 'path' || $service['type'] == 'domain') ? _t('다중 사용자 모드로 설치된 경우 블로그 관리자는 표지 기능을 이용하여 대표 블로그를 다른 블로그들에 대한 센터 기능을 하도록 구성할 수 있습니다.') : '';?></p>
<p class="explain"><?php echo _t('블로그-설정 메뉴에서 블로그 첫 화면을 표지로 사용하도록 변경할 수 있습니다.');?></p>
</div>

<dl id="direct-link-line" class="line">
Expand Down
Loading

0 comments on commit 7096b83

Please sign in to comment.