Pickles 2 のプラグインです。Pickles 2 babycorn(Desktop Tool) やその他のCMSと連携させるためのAPIを提供します。
次の手順でインストールしてください。
$ composer require pickles2/px2-px2dthelper
<?php
return call_user_func( function(){
/* 中略 */
// funcs: Before content
$conf->funcs->before_content = array(
// PX=px2dthelper
'tomk79\pickles2\px2dthelper\main::register'
);
/* 中略 */
// processor
$conf->funcs->processor->html = array(
// broccoli-receive-message スクリプトを挿入
// (Optional)
'tomk79\pickles2\px2dthelper\broccoli_receive_message::apply('.json_encode( array(
// 許可する接続元を指定
'enabled_origin'=>array(
'http://127.0.0.1:8080',
'http://127.0.0.1:8081',
'http://127.0.0.1:8082',
)
) ).')'
);
/* 中略 */
return $conf;
} );
/* CSSファイルに下記を記述 */
<?php
// CSSのソースコードが返されます。
// このコードには、画像などのリソースもdataスキーマ化した状態で含められます。
print (new \tomk79\pickles2\px2dthelper\main($px))->document_modules()->build_css();
?>
// JavaScriptファイルに下記を記述
<?php
// JavaScriptのソースコードが返されます。
// スクリプト内から画像などのリソースを呼び出している場合、
// このメソッドには、リンクを解決するなどの機能はありません。
// 予め、出力後のパスを起点にパスが解決できるように作成してください。
print (new \tomk79\pickles2\px2dthelper\main($px))->document_modules()->build_js();
?>
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<?php
// style要素、および script要素 が出力されます。
print (new \tomk79\pickles2\px2dthelper\main($px))->document_modules()->load();
?>
</head>
<body>
<h1>Page Title</h1>
<!-- コンテンツ -->
</body>
</html>
\tomk79\pickles2\px2dthelper\authorizer::initialize($px, 'member');
px2-px2dthelper
のバージョン番号を取得します。
$ php .px_execute.php /?PX=px2dthelper.version
px2-px2dthelper
の状態情報を取得します。
$ php .px_execute.php /?PX=px2dthelper.check_status
ページのコンテンツファイルを探します。
$ php .px_execute.php /path/find/content.html?PX=px2dthelper.find_page_content
$conf->plugins->px2dt->guieditor->path_data_dir
の解決された内部絶対パスを取得します。
$conf->plugins->px2dt->guieditor->path_resource_dir
の解決されたパスを取得します。
$conf->plugins->px2dt->guieditor->custom_fields
の値を取得します。
ナビゲーションシステムを生成するために必要な情報をまとめて取得します。
$ php .px_execute.php "/?PX=px2dthelper.get.navigation_info&filter=false"
filter
オプションは、 $site->get_bros()
と $site->get_children()
に渡されます。
テーマコレクションディレクトリのパスを取得します。。
$ php .px_execute.php "/?PX=px2dthelper.get.realpath_theme_collection_dir"
Pickles 2 から複数の情報を一度に取得します。
$ php .px_execute.php "/?PX=px2dthelper.get.all&filter=false&path=/index.html"
filter
オプションは、 $site->get_bros()
と $site->get_children()
に渡されます。
コンテンツの編集モードを取得します。
$ php .px_execute.php "/?PX=px2dthelper.check_editor_mode&path=/target/path.html"
サイトマップ中のページを検索します。
limit
オプションは、検索結果の最大件数を指定します。デフォルトは 200件です。
$ php .px_execute.php "/?PX=px2dthelper.search_sitemap&keyword=HOME&limit=10"
新規サイトマップファイルを作成します。 パラメータ filename
に、作成するサイトマップのファイル名(拡張子は含まない)を指定します。
$ php .px_execute.php "/?PX=px2dthelper.sitemap.create&filename=foobar"
サイトマップファイルを削除します。 パラメータ filename
に、削除するサイトマップのファイル名(拡張子は含まない)を指定します。
$ php .px_execute.php "/?PX=px2dthelper.sitemap.delete&filename=foobar"
CSSのソースコードが返されます。
$ php .px_execute.php /?PX=px2dthelper.document_modules.build_css
加えて、パラメータ theme_id
を付与すると、テーマが定義するCSSのコードを返します。
JavaScriptのソースコードが返されます。
$ php .px_execute.php /?PX=px2dthelper.document_modules.build_js
加えて、パラメータ theme_id
を付与すると、テーマが定義するJavaScriptのコードを返します。
CSSとJavaScriptをロードするHTMLソースコードが返されます。
$ php .px_execute.php /?PX=px2dthelper.document_modules.load
CSV や Excel形式 で作られた表を元に、HTMLのテーブル要素を生成して出力します。
パラメータ path
には、 *.csv
, *.xls
, *.xlsx
を指定できます。
$ php .px_execute.php "/?PX=px2dthelper.convert_table_excel2html&path=/path/to/sourcedata.xlsx"
コンテンツを初期化します。
$ php .px_execute.php "/path/init/content.html?PX=px2dthelper.init_content&editor_mode=html.gui"
v2.0.12 以降、このAPIは、すでにコンテンツが存在する場合には、上書きせずにエラーを返すようになりました。
force
オプションが付加された場合は、 強制的に上書きします。
v2.0.11 とそれ以前のバージョンでは、既存のコンテンツを上書きして初期化するのがデフォルトの挙動でした。
$ # forceオプションを付加した例
$ php .px_execute.php "/path/init/content.html?PX=px2dthelper.init_content&editor_mode=html.gui&force=1"
設定ファイル(config.php
)を解析し、解析できた値の一覧を返します。
設定ファイル(config.php
)を解析し、解析できた値のうち任意の値を変更して上書きします。
$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.config.update&base64_json=xxxxxxxxxxxx"
変更したい値は、 json
(JSON形式の文字列) または base64_json
(JSON形式の文字列を Base64に変換した文字列) のいずれかにセットして渡します。
$base64_json = base64_encode( json_encode( array(
// config の項目で、上書きしたい情報をセットします。
'values' => array(
'name' => 'New Site Name',
),
// config の構造に合致しない設定項目は、`symbols` の中に分類されます。
'symbols' => array(
'theme_id' => 'new_theme_id',
),
) ) );
コンテンツを複製します。
$ php .px_execute.php "/path/copy/to.html?PX=px2dthelper.copy_content&from=/path/copy/from.html"
または、
$ php .px_execute.php "/?PX=px2dthelper.copy_content&from=/path/copy/from.html&to=/path/copy/to.html"
v2.0.12 以降、このAPIは、すでにコンテンツが存在する場合には、上書きせずにエラーを返すようになりました。
force
オプションが付加された場合は、 強制的に上書きします。
v2.0.11 とそれ以前のバージョンでは、既存のコンテンツを上書きして初期化するのがデフォルトの挙動でした。
$ # forceオプションを付加した例
$ php .px_execute.php "/?PX=px2dthelper.copy_content&from=/path/copy/from.html&to=/path/copy/to.html&force=1"
コンテンツの編集モードを変更します。
$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.change_content_editor_mode&editor_mode=html.gui"
プラグインオプションを取得します。
$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.plugins.get_plugin_options&func_div=processor.html&plugin_name=namespace\\classname::funcname"
指定されたページを単体でパブリッシュします。 ページ固有のリソースディレクトリが同時にパブリッシュされます。
$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.publish_single_page"
composer.json
が置かれているディレクトリのパスを取得する。
package.json
が置かれているディレクトリのパスを取得する。
パッケージの一覧を取得する。
$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.packages.get_package_list"
それぞれ、Pickles 2 Contents Editor、Pickles 2 Module Editor、Pickles 2 Theme Editor のGPIを呼び出します。
次のオプションを指定できます。
appMode
:web
(デフォルト) またはdesktop
data
: GPIに渡される引数。 JSON形式のテキストを base64エンコードして指定します。data_filename
:data
の代わりに、JSONをファイルに保存して受け渡しします。ファイルはpx-files/_sys/ram/data/
に置き、そのファイル名を指定してください。
それぞれ、 Pickles 2 Contents Editor、Pickles 2 Module Editor、Pickles 2 Theme Editor の、クライアントサイドで読み込むべきリソースの一覧を返します。
デフォルトでは、サーバー内部の絶対パスを返します。 dist
パラメータにサーバー内部のディレクトリパスを渡すと、指定のディレクトリ内にコピーを作成し、そこからの相対パスを返すようになります。
$conf->plugins->px2dt->customConsoleExtensions
に登録された拡張機能へアクセスするAPIを提供します。
第3引数の XXXX
には、 Custom Console Extensions に登録したID(添字)を指定します。省略時には、登録されている拡張機能の一覧を返します。
ロール名。
LANG
、lang
パラメータで、言語切替ができるようになった。- コンテンツテンプレートが多言語化に対応できるようになった。
- コンテンツテンプレートに、ディレクトリではないファイルが直接配置された場合に、無視するようになった。
- サイトマップのバリデーションで、
path
の末尾がダイナミックパスの場合にエラー扱いとなる不具合を修正した。
- Broccoli(ブロックエディタ)の編集時に生成するプレビューから、scriptなどいくつかの要素を除去するようになった。
PX=px2dthelper.get.list_gui_editor_contents
を追加。PX=px2dthelper.get.list_all_contents
を追加。- クライアントサイド
cceAgent
にpxCmd()
を追加。
- コンテンツテンプレートのデフォルトのパスを
px-files/contents_templates/
とした。 - コンテンツテンプレートにサムネイルを含められるようになった。
- px2ce, px2me, px2te の
appearance
オプションに対応した。
- 認可機能
$px->authorizer
を追加。 PX=px2dthelper.authorizer.is_authorized.XXXX
を追加。PX=px2dthelper.get.list_unassigned_contents
が、ブログマップに対応した。PX=px2dthelper.get.list_unassigned_contents
が、除外(ignore)されたパスをリストしないようになった。- カスタムコンソール機能拡張に
capability
の設定を追加。
PX=px2dthelper.content.move
が失敗することがある不具合を修正。PX=px2dthelper.content.move
によるコンテンツ移動時、被リンクの張替え処理を、除外されたディレクトリで実行しないようになった。- ページ情報編集のバリデーション機能を改善した。
PX=px2dthelper.contents_template.get_list
を追加。PX=px2dthelper.init_content
が、コンテンツテンプレートからの初期化に対応した。- その他、内部コードの修正など。
configParser
の解析と置換で、エスケープ処理を改善し、使える文字が増えた。configParser
で、$conf->tagline
の解析と置換ができるようになった。
- クライアントサイド
cceAgent
にeditContent()
、editThemeLayout()
、openInBrowser()
を追加。
- 重複するエラー表示をまとめるようになった。
data-broccoli-receive-message
は、broccoli編集時にのみ挿入されるようになった。- Broccoli でのテーマ編集モードへの対応処理を改善した。
- その他、内部コードの修正など。
PX=px2dthelper.config.parse
,PX=px2dthelper.config.update
で、$conf->copyright
を扱えるようになった。- その他、内部コードの修正など。
PX=px2dthelper.get.list_unassigned_contents
を追加。- px2ce, px2me, px2te, CCE で、Web SAPI からクライアント資材のパスの指定をできないようにした。
- その他、内部コードの修正など。
PX=px2dthelper.page.move_page_info_raw
を追加。PX=px2dthelper.content.move
を追加。PX=px2dthelper.page.add_page_info_raw
のバリデーションを改善。PX=px2dthelper.page.update_page_info_raw
で、path
、content
、logical_path
が変更された場合、影響範囲へ反映するようになった。PX=px2dthelper.page.delete_page_info_raw
で、削除対象のページに子ページがある場合に、パンくずを繰り上げるようになった。tomk79\pickles2\px2dthelper\utils::get_server_origin()
を追加。- 内部コードの修正など。
module.js
の安定性に関する修正。- 内部コードの修正、ファイルの整理など。
- サイトマップ変換に関する不具合の修正。
PX=px2dthelper.sitemap.upload
が、ファイルの保存に失敗する場合がある不具合を修正。PX=px2dthelper.page.add_page_info_raw
を追加。PX=px2dthelper.page.get_page_info_raw
を追加。PX=px2dthelper.page.update_page_info_raw
を追加。PX=px2dthelper.page.delete_page_info_raw
を追加。PX=px2dthelper.content.delete
を追加。- その他いくつかの細かい修正。
PX=px2dthelper.sitemap.filelist
を追加。PX=px2dthelper.sitemap.download
を追加。PX=px2dthelper.sitemap.upload
を追加。PX=px2dthelper.sitemap.csv2xlsx
を追加。PX=px2dthelper.sitemap.xlsx2csv
を追加。- Px2CE, Px2TE, Px2ME に、
$conf->commands->php
の設定が伝播されない不具合を修正。
- サポートするPHPのバージョンを
>=7.3.0
に変更。 - PHP 8.1 に対応した。
$conf->plugins->px2dt->enable_document_modules_cache
を追加。Broccoli関連リソースのビルドをキャッシュするか設定できるようになった。デフォルトは無効。- Pickles 2 Contents Editor、 Pickles 2 Module Editor、 Pickles 2 Theme Editor の初期化に関する不具合を修正。
- 同梱のプラグインが、より直接的な表現で設定できるようになった。
- パフォーマンスに関する改善。
- 拡張field設定のフロントエンドリソースが複数ある場合に処理できない不具合を修正。
- その他の細かい内部コード修正。
scssphp/scssphp
への対応を追加。- その他の細かい内部コード修正。
- ホームディレクトリ、およびテーマコレクションディレクトリが、プレビューのドキュメントルート外に置かれている場合に、正しいパスを返せない不具合を修正。
- APIが返すパスの、Windowsパスに関する環境依存を修正。
- Update: Broccoli v0.4.x
PX=px2dthelper.px2te.gpi
,PX=px2dthelper.px2te.client_resources
を追加。- カスタムコンソール機能拡張を追加。
PX=px2dthelper.custom_console_extensions
を追加。 PX=px2dthelper.get.all
の返却値にcustom_console_extensions
を追加。PX=px2dthelper.get.path_theme_collection_dir
を追加。PX=px2dthelper.get.all
の返却値にpath_theme_collection_dir
を追加。PX=px2dthelper.get.all
の返却値にpath_homedir
を追加。
- Firefox で、 Broccoliエディタの初期化が完了できない問題に対する修正。
- その他の細かい内部コード修正。
- 外部依存パッケージのバージョンを更新。
- PHP 7.4 に対応した。
- Broccoli編集画面を停止させる外部のスクリプトを無効化するようにした。
- PXコマンド
PX=px2dthelper.config.parse
とPX=px2dthelper.config.update
を追加。 - PXコマンド
PX=px2dthelper.sitemap.create
とPX=px2dthelper.sitemap.delete
を追加。 PX=px2dthelper.init_content
、PX=px2dthelper.copy_content
は、コンテンツがすでに存在する場合には、上書きせずエラーを出すように変更された。そのかわり、force
オプションを追加し、強制的に上書きできるようにした。PX=px2dthelper.get.all
の結果にpage_originated_csv
が追加された。(pickles2/px-fw-2.x v2.0.40
以上が必要)PX=px2dthelper.search_sitemap
にlimit
オプションを追加。 デフォルトは 200件が上限となるようになった。document_modules
のビルド結果をキャッシュするようになった。
- リソースパスに関する設定(
$conf->path_files
,$conf->plugins->px2dt->guieditor->path_resource_dir
,$conf->plugins->px2dt->guieditor->path_data_dir
)にコールバック関数を使用できない問題を修正。
- Windows環境で、
PX=px2dthelper.publish_single_page
を実行時に、リソースディレクトリがパブリッシュ対象に含まれない不具合を修正。
- PXコマンド
PX=px2dthelper.publish_single_page
を追加。 - Pickles 2 Contents Editor, および Pickles 2 Module Editor のAPIで、APIを正常に呼び出せない場合がある問題を修正。
broccoli-html-editor
のAPIを追加。- Pickles 2 Contents Editor のAPIを追加。
- Pickles 2 Module Editor のAPIを追加。
- 依存ライブラリ
michelf/php-markdown
,leafo/scssphp
のバージョン制約を緩和。 (pickles2/px-fw-2.x
の更新に合わせられるように) $conf->px2dtconfig
が連想配列で設定されている場合に、正規化処理が適切に反映されない不具合を修正。
- PXコマンド
PX=px2dthelper.plugins.get_plugin_options
を追加。 - PXコマンド
PX=px2dthelper.packages.get_package_list
を追加。 - PXコマンド
PX=px2dthelper.packages.get_path_composer_root_dir
を追加。 - PXコマンド
PX=px2dthelper.packages.get_path_npm_root_dir
を追加。 - PXコマンド
PX=px2dthelper.get.realpath_theme_collection_dir
を追加。 - PXコマンド
PX=px2dthelper.get.all
,PX=px2dthelper.check_editor_mode
にpath
オプションを追加。 - PXコマンド
PX=px2dthelper.get.all
の結果にpath_type
,realpath_theme_collection_dir
,packages->path_composer_root_dir
,packages->path_npm_root_dir
,packages->package_list
を追加。 - PXコマンド
PX=px2dthelper.get.all
で、path
オプションに id を指定してエイリアスページの情報を取得できるようになった。 $conf->plugins->px2dt->path_module_templates_dir
設定に対応。- PXコマンド
PX=px2dthelper.document_modules.build_css
とPX=px2dthelper.document_modules.build_js
が、テーマのモジュールに対応。
broccoli-receive-message
スクリプトを挿入する新しいprocessor
を追加。- PXコマンド
PX=px2dthelper.search_sitemap
を追加。 PX=px2dthelper.copy_content
で、$from
と$to
が同じコンテンツを指す場合にコンテンツファイルが消えてしまう不具合を修正。
- PXコマンド
PX=px2dthelper.get.navigation_info
を追加。 - PXコマンド
PX=px2dthelper.get.all
にfilter
オプションを追加。 PX=px2dthelper.get.all
に含まれるpath_files
,realpath_files
が、不正な値を返すことがある不具合を修正。
- PXコマンド
PX=px2dthelper.get.all
を追加。 paths_module_template
を絶対パスに整形してから返すようにした。$site
が利用できない場合に異常終了しないようにした。
- CSS, JS のビルド結果を整形した。
- PXコマンド
PX=px2dthelper.find_page_content
を追加。 - PXコマンド
PX=px2dthelper.get.realpath_data_dir
を追加。 - PXコマンド
PX=px2dthelper.get.path_resource_dir
を追加。 - PXコマンド
PX=px2dthelper.get.custom_fields
を追加。 - PXコマンド
PX=px2dthelper.check_editor_mode
を追加。 - PXコマンド
PX=px2dthelper.init_content
を追加。 - PXコマンド
PX=px2dthelper.change_content_editor_mode
を追加。 - PXコマンド
PX=px2dthelper.check_status
を追加。 PX=px2dthelper.copy_content
の コピー先の指定方法を追加。/path/copy/to.html?PX=〜〜
のようにも指定できるようになった。
- initial release.
$ ./vendor/phpunit/phpunit/phpunit
$ wget https://phpdoc.org/phpDocumentor.phar;
$ composer run-script documentation;
Copyright (c)2001-2024 Tomoya Koyanagi, and Pickles Project
MIT License https://opensource.org/licenses/mit-license.php
- Tomoya Koyanagi tomk79@gmail.com
- website: https://www.pxt.jp/
- Twitter: @tomk79 https://twitter.com/tomk79/