Skip to content

Commit

Permalink
fix #1833 【ページ】管理画面で公開期間外の固定ページへの確認リンクが表示される
Browse files Browse the repository at this point in the history
  • Loading branch information
seto1 committed Jun 18, 2022
1 parent d5adcd2 commit af30bb3
Show file tree
Hide file tree
Showing 11 changed files with 93 additions and 34 deletions.
2 changes: 1 addition & 1 deletion lib/Baser/Controller/ContentFoldersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public function admin_edit($entityId)
$site = BcSite::findById($this->request->data['Content']['site_id']);
$this->set('folderTemplateList', $this->ContentFolder->getFolderTemplateList($this->request->data['Content']['id'], $theme));
$this->set('pageTemplateList', $this->Page->getPageTemplateList($this->request->data['Content']['id'], $theme));
$this->set('publishLink', $this->Content->getUrl($this->request->data['Content']['url'], true, $site->useSubDomain));
$this->set('publishLink', $this->Content->getPublishUrl($this->request->data['Content']));
}

/**
Expand Down
3 changes: 1 addition & 2 deletions lib/Baser/Controller/ContentLinksController.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ public function admin_edit($entityId)
$this->redirect(['plugin' => false, 'admin' => true, 'controller' => 'contents', 'action' => 'index']);
}
}
$site = BcSite::findById($this->request->data['Content']['site_id']);
$this->set('publishLink', $this->Content->getUrl($this->request->data['Content']['url'], true, $site->useSubDomain));
$this->set('publishLink', $this->Content->getPublishUrl($this->request->data['Content']));
}

/**
Expand Down
6 changes: 1 addition & 5 deletions lib/Baser/Controller/PagesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -265,11 +265,7 @@ public function admin_edit($id)
}

// 公開リンク
$publishLink = '';
if ($this->request->data['Content']['status']) {
$site = BcSite::findById($this->request->data['Content']['site_id']);
$publishLink = $this->Content->getUrl($this->request->data['Content']['url'], true, $site->useSubDomain);
}
$publishLink = $this->Content->getPublishUrl($this->request->data['Content']);
// エディタオプション
$editorOptions = ['editorDisableDraft' => false];
if (!empty($this->siteConfigs['editor_styles'])) {
Expand Down
15 changes: 15 additions & 0 deletions lib/Baser/Model/Content.php
Original file line number Diff line number Diff line change
Expand Up @@ -1409,6 +1409,21 @@ public function isPublish($status, $publishBegin, $publishEnd)
return true;
}

/**
* 公開されたURLを取得
*
* @param array $content
* @return string|bool
*/
public function getPublishUrl($content)
{
if (!$this->isPublish($content['status'], $content['publish_begin'], $content['publish_end'])) {
return false;
}
$site = BcSite::findById($content['site_id']);
return $this->getUrl($content['url'], true, $site->useSubDomain);
}

/**
* 移動元のコンテンツと移動先のディレクトリから移動が可能かチェックする
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,10 @@ public function admin_edit($blogContentId, $id)
} else {
$parents = ['' => __d('baser', '指定しない')];
}
$this->set('publishLink', $this->Content->getUrl($this->request->params['Content']['url'] . 'archives/category/' . $this->request->data['BlogCategory']['name'], true, $this->request->params['Site']['use_subdomain']));

if ($this->Content->isPublish($this->request->params['Content']['status'], $this->request->params['Content']['publish_begin'], $this->request->params['Content']['publish_end'])) {
$this->set('publishLink', $this->Content->getUrl($this->request->params['Content']['url'] . 'archives/category/' . $this->request->data['BlogCategory']['name'], true, $this->request->params['Site']['use_subdomain']));
}
$this->set('parents', $parents);
$this->pageTitle = sprintf(__d('baser', '%s|カテゴリ編集'), $this->request->params['Content']['title']);
$this->help = 'blog_categories_form';
Expand Down
5 changes: 1 addition & 4 deletions lib/Baser/Plugin/Blog/Controller/BlogContentsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,7 @@ public function admin_edit($id)
$this->redirect(['plugin' => false, 'admin' => true, 'controller' => 'contents', 'action' => 'index']);
}
}
$site = BcSite::findById($this->request->data['Content']['site_id']);
if (!empty($this->request->data['Content']['status'])) {
$this->set('publishLink', $this->Content->getUrl($this->request->data['Content']['url'], true, $site->useSubDomain));
}
$this->set('publishLink', $this->Content->getPublishUrl($this->request->data['Content']));
$this->request->params['Content'] = $this->BcContents->getContent($id)['Content'];
$this->set('blogContent', $this->request->data);
$this->subMenuElements = ['blog_posts'];
Expand Down
6 changes: 2 additions & 4 deletions lib/Baser/Plugin/Blog/Controller/BlogPostsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,7 @@ public function admin_index($blogContentId)
return;
}

if ($this->request->params['Content']['status']) {
$this->set('publishLink', $this->Content->getUrl($this->request->params['Content']['url'], true, $this->request->params['Site']['use_subdomain']));
}
$this->set('publishLink', $this->Content->getPublishUrl($this->request->param('Content')));
$this->pageTitle = sprintf(__d('baser', '%s|記事一覧'), strip_tags($this->request->params['Content']['title']));
$this->search = 'blog_posts_index';
$this->help = 'blog_posts_index';
Expand Down Expand Up @@ -458,7 +456,7 @@ public function admin_edit($blogContentId, $id)
'empty' => __d('baser', '指定しない')
]);

if ($this->request->data['BlogPost']['status']) {
if ($this->BlogPost->allowPublish($this->request->data['BlogPost']) && $this->Content->isPublish($this->request->params['Content']['status'], $this->request->params['Content']['publish_begin'], $this->request->params['Content']['publish_end'])) {
$this->set('publishLink', $this->Content->getUrl($this->request->params['Content']['url'] . 'archives/' . $this->request->data['BlogPost']['no'], true, $this->request->params['Site']['use_subdomain']));
}

Expand Down
12 changes: 1 addition & 11 deletions lib/Baser/Plugin/Mail/Controller/MailContentsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -219,17 +219,7 @@ public function admin_edit($id)
}

$this->request->param('Content', $this->BcContents->getContent($id)['Content']);
if ($this->request->data['Content']['status']) {
$site = BcSite::findById($this->request->data['Content']['site_id']);
$this->set(
'publishLink',
$this->Content->getUrl(
$this->request->data['Content']['url'],
true,
$site->useSubDomain
)
);
}
$this->set('publishLink', $this->Content->getPublishUrl($this->request->data['Content']));
$this->set('mailContent', $this->request->data);
$this->subMenuElements = ['mail_fields'];
$this->pageTitle = __d('baser', 'メールフォーム設定編集');
Expand Down
7 changes: 1 addition & 6 deletions lib/Baser/Plugin/Mail/Controller/MailFieldsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,7 @@ public function beforeFilter()
$mailContentId
]
];
if ($this->request->param('Content.status')) {
$site = BcSite::findById($this->request->param('Content.site_id'));
$this->set('publishLink', $this->Content->getUrl(
$this->request->param('Content.url'), true, $site->useSubDomain)
);
}
$this->set('publishLink', $this->Content->getPublishUrl($this->request->param('Content')));
}

/**
Expand Down
23 changes: 23 additions & 0 deletions lib/Baser/Test/Case/Model/ContentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class ContentTest extends BaserTestCase
public $fixtures = [
'baser.Model.Content.ContentIsMovable',
'baser.Model.Content.ContentStatusCheck',
'baser.Model.Site.SiteSubDomain',
'baser.Routing.Route.BcContentsRoute.SiteBcContentsRoute',
'baser.Routing.Route.BcContentsRoute.ContentBcContentsRoute',
'baser.Default.SiteConfig',
Expand Down Expand Up @@ -594,6 +595,28 @@ public function isPublishDataProvider()
];
}

/**
* 公開されたURLを取得
*
* @dataProvider getPublishUrlProvider
*/
public function testGetPublishUrl($content, $expected)
{
$this->loadFixtures('SiteSubDomain');
$result = $this->Content->getPublishUrl($content);
$this->assertEquals($expected, $result);
}

public function getPublishUrlProvider()
{
return [
[['status' => true, 'publish_begin' => '', 'publish_end' => '', 'site_id' => 0, 'url' => '/test1'], 'https://localhost/test1'],
[['status' => true, 'publish_begin' => '', 'publish_end' => '', 'site_id' => 1, 'url' => '/subdomain/test2'], 'http://subdomain.localhost/test2'],
[['status' => true, 'publish_begin' => date('Y-m-d H:i:s', strtotime('+1 hour')), 'publish_end' => ''], false],
[['status' => false, 'publish_begin' => '', 'publish_end' => ''], false],
];
}

/**
* 移動元のコンテンツと移動先のディレクトリから移動が可能かチェックする
* @throws Exception
Expand Down
43 changes: 43 additions & 0 deletions lib/Baser/Test/Fixture/Model/Site/SiteSubDomainFixture.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

/**
* SiteSubDomainFixture
*/
class SiteSubDomainFixture extends BaserTestFixture
{

/**
* Name of the object
*
* @var string
*/
public $name = 'Site';

/**
* Records
*
* @var array
*/
public $records = [
[
'id' => '1',
'main_site_id' => '0',
'name' => 'subdomain',
'display_name' => 'subdomain',
'title' => 'subdomain',
'alias' => 'subdomain',
'theme' => '',
'status' => 1,
'device' => '',
'lang' => '',
'auto_redirect' => true,
'auto_link' => true,
'same_main_url' => false,
'use_subdomain' => 1,
'relate_main_site' => 0,
'created' => '2022-06-18 21:20:15',
'modified' => null
],
];

}

0 comments on commit af30bb3

Please sign in to comment.