Skip to content

Commit

Permalink
$site->set_page_info() 実行時に落ちる不具合を修正。
Browse files Browse the repository at this point in the history
  • Loading branch information
tomk79 committed Feb 4, 2015
1 parent d7c425d commit c7f1d18
Show file tree
Hide file tree
Showing 81 changed files with 11,995 additions and 670 deletions.
14 changes: 7 additions & 7 deletions px-files/_sys/php/pickles.php
Original file line number Diff line number Diff line change
Expand Up @@ -601,16 +601,16 @@ public function is_publish_tool(){
* 実装例:
* <pre>&lt;?php
* // パスを指定する例
* print '&lt;a href=&quot;'.htmlspecialchars( $px-&gt;theme()-&gt;href('/aaa/bbb.html') ).'&quot;&gt;リンク&lt;/a&gt;';
* print '&lt;a href=&quot;'.htmlspecialchars( $px-&gt;href('/aaa/bbb.html') ).'&quot;&gt;リンク&lt;/a&gt;';
*
* // ページIDを指定する例
* print '&lt;a href=&quot;'.htmlspecialchars( $px-&gt;theme()-&gt;href('A-00') ).'&quot;&gt;リンク&lt;/a&gt;';
* print '&lt;a href=&quot;'.htmlspecialchars( $px-&gt;href('A-00') ).'&quot;&gt;リンク&lt;/a&gt;';
* ?&gt;</pre>
*
* インストールパスがドキュメントルートではない場合の例:
* <pre>&lt;?php
* // インストールパスが &quot;/installpath/&quot; の場合
* print '&lt;a href=&quot;'.htmlspecialchars( $px-&gt;theme()-&gt;href('/aaa/bbb.html') ).'&quot;&gt;リンク&lt;/a&gt;';
* print '&lt;a href=&quot;'.htmlspecialchars( $px-&gt;href('/aaa/bbb.html') ).'&quot;&gt;リンク&lt;/a&gt;';
* // &quot;/installpath/aaa/bbb.html&quot; が返されます。
* ?&gt;</pre>
*
Expand Down Expand Up @@ -701,10 +701,10 @@ public function href( $linkto ){
* 実装例:
* <pre>&lt;?php
* // ページ /aaa/bbb.html へのリンクを生成
* print $px-&gt;theme()-&gt;mk_link('/aaa/bbb.html');
* print $px-&gt;mk_link('/aaa/bbb.html');
*
* // ページ /aaa/bbb.html へのリンクをオプション付きで生成
* print $px-&gt;theme()-&gt;mk_link('/aaa/bbb.html', array(
* print $px-&gt;mk_link('/aaa/bbb.html', array(
* 'label'=>'<span>リンクラベル</span>', //リンクラベルを文字列で指定
* 'class'=>'class_a class_b', //CSSのクラス名を指定
* 'no_escape'=>true, //エスケープ処理をキャンセル
Expand All @@ -718,7 +718,7 @@ public function href( $linkto ){
* 実装例:
* <pre>&lt;?php
* // ページ /aaa/bbb.html へのリンクをオプション付きで生成
* print $px-&gt;theme()-&gt;mk_link('/aaa/bbb.html',
* print $px-&gt;mk_link('/aaa/bbb.html',
* '<span>リンクラベル</span>' , //リンクラベルを文字列で指定
* array(
* 'class'=>'class_a class_b',
Expand All @@ -734,7 +734,7 @@ public function href( $linkto ){
* 実装例:
* <pre>&lt;?php
* //リンクラベルをコールバック関数で指定
* print $px-&gt;theme()-&gt;mk_link(
* print $px-&gt;mk_link(
* '/aaa/bbb.html',
* function($page_info){return htmlspecialchars($page_info['title_label']);}
* );
Expand Down
2 changes: 1 addition & 1 deletion px-files/_sys/php/processors/autoindex.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public function __construct( $px ){
/**
* ページ内の目次をソースに反映する。
*
* `$theme->autoindex()` によって生成予告された目次を実際に生成します。
* `<!-- autoindex -->` によって生成予告された目次を実際に生成します。
*
* @param string $content 予告状態の コンテンツ HTMLソース
*
Expand Down
25 changes: 14 additions & 11 deletions px-files/_sys/php/site.php
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,7 @@ public function set_page_info( $path , $page_info ){
if( is_string( $path_type ) ){
// パスでの指定だった場合
$before_page_info['path'] = $path;
if(@!strlen($page_info['id'])){
if( @!strlen($page_info['id']) ){
//ページIDを動的に発行
$before_page_info['id'] = ':live_auto_page_id.'.($num_auto_pid++);
}
Expand All @@ -576,14 +576,17 @@ public function set_page_info( $path , $page_info ){
//既存ページをページIDで指定されていたら
$before_page_info['id'] = $path;
}else{
//既存ページをパスで指定されていたら
// 既存ページをパスで指定されていたら
$before_page_info['path'] = $path;
if(!strlen($page_info['id'])){
//ページIDを動的に発行
if( !strlen($page_info['id']) ){
// ページIDが未定義なら、動的に発行する
$before_page_info['id'] = ':live_auto_page_id.'.($num_auto_pid++);
}
}
$tmp_array = $before_page_info;
foreach( $page_info as $key=>$val ){
$tmp_array[$key] = $val;
}

if( @strlen($page_info['title']) && $page_info['title']!=@$tmp_array['title'] ){
//タイトルの指定があったら
Expand Down Expand Up @@ -618,12 +621,12 @@ public function set_page_info( $path , $page_info ){
$this->sitemap_page_tree[$parent['path']] = null;

// パブリッシュ対象にリンクを追加
$this->px->add_relatedlink( $this->px->theme()->href($tmp_array['path']) );
$this->px->add_relatedlink( $this->px->href($tmp_array['path']) );

// カレントページにレイアウトの指示があったら、テーマに反映する。
if( $is_target_current_page && @strlen($page_info['layout']) ){
$this->px->theme()->set_layout_id( $page_info['layout'] );
}
// // カレントページにレイアウトの指示があったら、テーマに反映する。
// if( $is_target_current_page && @strlen($page_info['layout']) ){
// $this->px->theme()->set_layout_id( $page_info['layout'] );
// }

return true;
}//set_page_info()
Expand Down Expand Up @@ -771,7 +774,7 @@ public function bind_dynamic_path_param( $dynamic_path , $params = array() ){
* $children = $px-&gt;site()-&gt;get_children();
* print '&lt;ul&gt;';
* foreach( $children as $child ){
* print '&lt;li&gt;'.$px-&gt;theme()-&gt;mk_link($child).'&lt;/li&gt;';
* print '&lt;li&gt;'.$px-&gt;mk_link($child).'&lt;/li&gt;';
* }
* print '&lt;/ul&gt;';
* ?&gt;</pre>
Expand All @@ -783,7 +786,7 @@ public function bind_dynamic_path_param( $dynamic_path , $params = array() ){
* $children = $px-&gt;site()-&gt;get_children(null, array('filter'=&gt;false));
* print '&lt;ul&gt;';
* foreach( $children as $child ){
* print '&lt;li&gt;'.$px-&gt;theme()-&gt;mk_link($child).'&lt;/li&gt;';
* print '&lt;li&gt;'.$px-&gt;mk_link($child).'&lt;/li&gt;';
* }
* print '&lt;/ul&gt;';
* ?&gt;</pre>
Expand Down
44 changes: 44 additions & 0 deletions px-files/_sys/tests/picklesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ public function testStandard(){
'/' ,
] );
// var_dump($output);
$this->assertTrue( $this->common_error( $output ) );
$this->assertEquals( 1, preg_match('/'.preg_quote('<p>このページは /index.html です。</p>', '/').'/s', $output) );

// 後始末
$output = $this->passthru( [
'php', __DIR__.'/testData/standard/.px_execute.php', '/?PX=clearcache'
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/caches/p/' ) );

}
Expand All @@ -46,6 +48,7 @@ public function testStandardPublish(){
'/?PX=publish.run' ,
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( is_dir( __DIR__.'/testData/standard/caches/p/' ) );
$this->assertTrue( is_file( __DIR__.'/testData/standard/px-files/_sys/ram/publish/htdocs/index.html' ) );

Expand All @@ -65,6 +68,7 @@ public function testStandardPublish(){
'php', __DIR__.'/testData/standard/.px_execute.php', '/?PX=clearcache'
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/caches/p/' ) );

}
Expand All @@ -80,6 +84,7 @@ public function testStandardClearcache(){
'/' ,
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( is_dir( __DIR__.'/testData/standard/caches/p/' ) );
$this->assertTrue( is_dir( __DIR__.'/testData/standard/px-files/_sys/ram/caches/sitemaps/' ) );
$this->assertTrue( is_file( __DIR__.'/testData/standard/px-files/_sys/ram/caches/sitemaps/sitemap.array' ) );
Expand All @@ -89,6 +94,7 @@ public function testStandardClearcache(){
'php', __DIR__.'/testData/standard/.px_execute.php', '/?PX=clearcache'
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/caches/p/' ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/px-files/_sys/ram/caches/sitemaps/' ) );
}
Expand All @@ -104,6 +110,7 @@ public function testAppLock(){
'/applock/lock.html' ,
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( is_dir( __DIR__.'/testData/standard/px-files/_sys/ram/applock/' ) );
$this->assertTrue( is_file( __DIR__.'/testData/standard/px-files/_sys/ram/applock/testAppLock.lock.txt' ) );
$this->assertEquals( 1, preg_match('/'.preg_quote('testAppLock [SUCCESS]', '/').'/s', $output) );
Expand All @@ -115,6 +122,7 @@ public function testAppLock(){
'/applock/lock.html' ,
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( is_dir( __DIR__.'/testData/standard/px-files/_sys/ram/applock/' ) );
$this->assertTrue( is_file( __DIR__.'/testData/standard/px-files/_sys/ram/applock/testAppLock.lock.txt' ) );
$this->assertEquals( 1, preg_match('/'.preg_quote('testAppLock [FAILED]', '/').'/s', $output) );
Expand All @@ -125,6 +133,7 @@ public function testAppLock(){
__DIR__.'/testData/standard/.px_execute.php' ,
'/applock/unlock.html' ,
] );
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( is_dir( __DIR__.'/testData/standard/px-files/_sys/ram/applock/' ) );
$this->assertFalse( is_file( __DIR__.'/testData/standard/px-files/_sys/ram/applock/testAppLock.lock.txt' ) );

Expand All @@ -133,12 +142,47 @@ public function testAppLock(){
'php', __DIR__.'/testData/standard/.px_execute.php', '/?PX=clearcache'
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/caches/p/' ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/px-files/_sys/ram/caches/sitemaps/' ) );
}

/**
* $px->site()->set_page_info() を実行してみるテスト
*/
public function testStandardSetPageInfo(){
// トップページを実行
$output = $this->passthru( [
'php',
__DIR__.'/testData/standard/.px_execute.php' ,
'/site/set_page_info.html' ,
] );
clearstatcache();

$this->assertTrue( $this->common_error( $output ) );
$this->assertEquals( 'naked', $output );

// 後始末
$output = $this->passthru( [
'php', __DIR__.'/testData/standard/.px_execute.php', '/?PX=clearcache'
] );
clearstatcache();
$this->assertTrue( $this->common_error( $output ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/caches/p/' ) );
$this->assertTrue( !is_dir( __DIR__.'/testData/standard/px-files/_sys/ram/caches/sitemaps/' ) );
}



/**
* エラー吐いてないか確認しとく
*/
public function common_error( $output ){
if( preg_match('/'.preg_quote('Fatal', '/').'/si', $output) ){ return false; }
if( preg_match('/'.preg_quote('Warning', '/').'/si', $output) ){ return false; }
if( preg_match('/'.preg_quote('Notice', '/').'/si', $output) ){ return false; }
return true;
}


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"/",,,"ホーム",,,,,,1,"top",,,,
"/applock/lock.html",,,"applock test (lock)",,,,,,1,,,"","",1
"/applock/unlock.html",,,"applock test (unlock)",,,,,,1,,,"","",1
"/site/set_page_info.html",,,"set_page_info()",,,,,,1,,,"","",1
"/sample_pages/",,,"サンプルページ1",,,,,,1,,,"","",1
"/sample_pages/fess/",,,"FESSドキュメント",,,,,"/sample_pages/",1,,,"","",
"/sample_pages/fess/units/",,,"ユニットモジュール",,,,,"/sample_pages/>/sample_pages/fess/",1,,,"","",
Expand Down
16 changes: 16 additions & 0 deletions px-files/_sys/tests/testData/standard/site/set_page_info.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php
$px->site()->set_page_info(
$px->site()->get_current_page_info( 'id' ) ,
array(
'layout' => 'naked'
)
);
$px->site()->set_page_info(
'/site/set_page_info.test.html',
array(
'title' => 'set_page_info() test (dynamic added)',
'layout' => 'naked',
)
);
echo( $px->site()->get_page_info( '/site/set_page_info.test.html', 'layout' ) );
?>
Loading

0 comments on commit c7f1d18

Please sign in to comment.