pickles2/px2-px2dthelper

这是Pickles 2的一个插件。它提供了一个API,用于与Pickles 2应用程序集成。


README

这是Pickles 2的插件。它提供了一个API,用于与Pickles 2 babycorn(桌面工具)和其他CMS集成。

安装 - Install

请按照以下步骤进行安装。

加载Composer包。

$ composer require pickles2/px2-px2dthelper

将Pickles2的配置追加。

<?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;
} );

API

构建模块的CSS

/* CSSファイルに下記を記述 */
<?php
// CSSのソースコードが返されます。
// このコードには、画像などのリソースもdataスキーマ化した状態で含められます。
print (new \tomk79\pickles2\px2dthelper\main($px))->document_modules()->build_css();
?>

构建模块的JavaScript

// JavaScriptファイルに下記を記述
<?php
// JavaScriptのソースコードが返されます。
// スクリプト内から画像などのリソースを呼び出している場合、
// このメソッドには、リンクを解決するなどの機能はありません。
// 予め、出力後のパスを起点にパスが解決できるように作成してください。
print (new \tomk79\pickles2\px2dthelper\main($px))->document_modules()->build_js();
?>

将CSS和JavaScript加载到HTML中

<!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>

初始化Authorizer $px->authorizer

\tomk79\pickles2\px2dthelper\authorizer::initialize($px, 'member');

PX命令

PX=px2dthelper.version

获取px2-px2dthelper的版本号。

$ php .px_execute.php /?PX=px2dthelper.version

PX=px2dthelper.check_status

获取px2-px2dthelper的状态信息。

$ php .px_execute.php /?PX=px2dthelper.check_status

PX=px2dthelper.find_page_content

查找页面内容文件。

$ php .px_execute.php /path/find/content.html?PX=px2dthelper.find_page_content

PX=px2dthelper.get.realpath_data_dir

获取$conf->plugins->px2dt->guieditor->path_data_dir的解析后的内部绝对路径。

PX=px2dthelper.get.path_resource_dir

获取$conf->plugins->px2dt->guieditor->path_resource_dir的解析后的路径。

PX=px2dthelper.get.custom_fields

获取$conf->plugins->px2dt->guieditor->custom_fields的值。

PX=px2dthelper.get.navigation_info

汇总获取生成导航系统所需的信息。

$ php .px_execute.php "/?PX=px2dthelper.get.navigation_info&filter=false"

filter选项传递给$site->get_bros()$site->get_children()

PX=px2dthelper.get.realpath_theme_collection_dir

获取主题集合目录的路径。

$ php .px_execute.php "/?PX=px2dthelper.get.realpath_theme_collection_dir"

PX=px2dthelper.get.all

从Pickles 2一次性获取多个信息。

$ php .px_execute.php "/?PX=px2dthelper.get.all&filter=false&path=/index.html"

filter选项传递给$site->get_bros()$site->get_children()

PX=px2dthelper.check_editor_mode

获取内容的编辑模式。

$ php .px_execute.php "/?PX=px2dthelper.check_editor_mode&path=/target/path.html"

PX=px2dthelper.search_sitemap

搜索网站地图中的页面。

limit选项指定搜索结果的最大数量。默认为200个。

$ php .px_execute.php "/?PX=px2dthelper.search_sitemap&keyword=HOME&limit=10"

PX=px2dthelper.sitemap.create

创建新的网站地图文件。将参数filename指定为要创建的网站地图的文件名(不包括扩展名)。

$ php .px_execute.php "/?PX=px2dthelper.sitemap.create&filename=foobar"

PX=px2dthelper.sitemap.delete

删除网站地图文件。将参数filename指定为要删除的网站地图的文件名(不包括扩展名)。

$ php .px_execute.php "/?PX=px2dthelper.sitemap.delete&filename=foobar"

PX=px2dthelper.document_modules.build_css

返回CSS源代码。

$ php .px_execute.php /?PX=px2dthelper.document_modules.build_css

此外,附加参数theme_id,则返回由主题定义的CSS代码。

PX=px2dthelper.document_modules.build_js

返回JavaScript源代码。

$ php .px_execute.php /?PX=px2dthelper.document_modules.build_js

此外,附加参数theme_id,则返回由主题定义的JavaScript代码。

PX=px2dthelper.document_modules.load

返回加载CSS和JavaScript的HTML源代码。

$ php .px_execute.php /?PX=px2dthelper.document_modules.load

PX=px2dthelper.convert_table_excel2html

根据CSV或Excel格式的表格创建HTML表格元素并输出。在参数path中指定*.csv*.xls*.xlsx

$ php .px_execute.php "/?PX=px2dthelper.convert_table_excel2html&path=/path/to/sourcedata.xlsx"

PX=px2dthelper.init_content

初始化内容。

$ 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"

PX=px2dthelper.config.parse

解析设置文件(config.php),并返回解析出的值列表。

PX=px2dthelper.config.update

解析设置文件(config.php),并更新解析出的任意值。

$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.config.update&base64_json=xxxxxxxxxxxx"

要更改的值设置为json(JSON格式的字符串)或base64_json(已转换为Base64的JSON格式的字符串)。

$base64_json = base64_encode( json_encode( array(
	// config の項目で、上書きしたい情報をセットします。
	'values' => array(
		'name' => 'New Site Name',
	),

	// config の構造に合致しない設定項目は、`symbols` の中に分類されます。
	'symbols' => array(
		'theme_id' => 'new_theme_id', 
	),
) ) );

PX=px2dthelper.copy_content

复制内容。

$ 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"

PX=px2dthelper.change_content_editor_mode

更改内容的编辑模式。

$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.change_content_editor_mode&editor_mode=html.gui"

PX=px2dthelper.plugins.get_plugin_options

获取插件选项。

$ 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"

PX=px2dthelper.publish_single_page

单独发布指定的页面。同时发布页面特有的资源目录。

$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.publish_single_page"

PX=px2dthelper.packages.get_path_composer_root_dir

获取composer.json所在的目录路径。

PX=px2dthelper.packages.get_path_npm_root_dir

获取package.json所在的目录路径。

PX=px2dthelper.packages.get_package_list

获取包列表。

$ php .px_execute.php "/path/to/target/page_path.html?PX=px2dthelper.packages.get_package_list"

PX=px2dthelper.px2ce.gpi

PX=px2dthelper.px2me.gpi

PX=px2dthelper.px2te.gpi

分别调用Pickles 2内容编辑器、Pickles 2模块编辑器、Pickles 2主题编辑器的GPI。

可以指定以下选项。

  • appMode : web(默认)或desktop
  • data : 传递给GPI的参数。指定为base64编码的JSON文本。
  • data_filename : 用文件替换data。将JSON保存到文件中,并传递文件名。文件放在px-files/_sys/ram/data/中。

PX=px2dthelper.px2ce.client_resources

PX=px2dthelper.px2me.client_resources

PX=px2dthelper.px2te.client_resources

分别返回Pickles 2内容编辑器、Pickles 2模块编辑器、Pickles 2主题编辑器的客户端资源列表。

默认情况下,返回服务器内部绝对路径。传递服务器内部目录路径到dist参数,则在指定目录中创建副本,并返回相对路径。

PX=px2dthelper.custom_console_extensions

PX=px2dthelper.custom_console_extensions.XXXX.client_resources

PX=px2dthelper.custom_console_extensions.XXXX.gpi

PX=px2dthelper.custom_console_extensions_async_run

提供访问已注册在 $conf->plugins->px2dt->customConsoleExtensions 中的扩展功能的API。第3个参数的 XXXX 应指定在 Custom Console Extensions 中注册的ID(索引)。如果省略,则返回已注册的扩展功能列表。

PX=px2dthelper.get.path_theme_collection_dir

PX=px2dthelper.get.list_unassigned_contents

PX=px2dthelper.get.list_gui_editor_contents

PX=px2dthelper.get.list_all_contents

PX=px2dthelper.page.add_page_info_raw

PX=px2dthelper.page.get_page_info_raw

PX=px2dthelper.page.update_page_info_raw

PX=px2dthelper.page.move_page_info_raw

PX=px2dthelper.page.delete_page_info_raw

PX=px2dthelper.content.delete

PX=px2dthelper.contents_template.get_list

PX=px2dthelper.sitemap.filelist

PX=px2dthelper.sitemap.download

PX=px2dthelper.sitemap.upload

PX=px2dthelper.sitemap.csv2xlsx

PX=px2dthelper.sitemap.xlsx2csv

PX=px2dthelper.authorizer.is_authorized.XXXX

命令行选项

--role

角色名称。

更新日志 - Change log

pickles2/px2-px2dthelper v2.2.4 (2024年9月10日)

  • Broccoli(块编辑器)在编辑时生成的预览中,已开始去除一些元素,如script等。

pickles2/px2-px2dthelper v2.2.3 (2024年7月21日)

  • 新增 PX=px2dthelper.get.list_gui_editor_contents
  • 新增 PX=px2dthelper.get.list_all_contents
  • 在客户端 cceAgent 中添加了 pxCmd()

pickles2/px2-px2dthelper v2.2.2 (2024年2月18日)

  • 将内容模板的默认路径设置为 px-files/contents_templates/
  • 内容模板现在可以包含缩略图。

pickles2/px2-px2dthelper v2.2.1 (2023年11月13日)

  • px2ce, px2me, px2te 对 appearance 选项进行了适配。

pickles2/px2-px2dthelper v2.2.0 (2023年9月24日)

  • 新增认证功能 $px->authorizer
  • 新增 PX=px2dthelper.authorizer.is_authorized.XXXX
  • PX=px2dthelper.get.list_unassigned_contents 已适配博客地图。
  • PX=px2dthelper.get.list_unassigned_contents 已改进,不再列出被排除(ignore)的路径。
  • 为自定义控制台功能扩展添加了 capability 设置。

pickles2/px2-px2dthelper v2.1.11 (2023年8月29日)

  • 修正了 PX=px2dthelper.content.move 可能失败的不稳定问题。
  • 在由 PX=px2dthelper.content.move 引起的文档移动期间,避免在排除的目录中执行链接替换处理。
  • 改进了页面信息编辑的验证功能。
  • 新增 PX=px2dthelper.contents_template.get_list
  • PX=px2dthelper.init_content 已适配从内容模板进行初始化。
  • 其他一些内部代码修正等。

pickles2/px2-px2dthelper v2.1.10 (2023年5月1日)

  • 通过 configParser 解析和替换,改善了转义处理,增加了可用的字符。
  • configParser 中,现在可以解析和替换 $conf->tagline

pickles2/px2-px2dthelper v2.1.9 (2023年4月22日)

  • 在客户端 cceAgent 中添加了 editContent()editThemeLayout()openInBrowser()

pickles2/px2-px2dthelper v2.1.8 (2023年3月11日)

  • 已合并重复的错误消息。
  • data-broccoli-receive-message 现在仅在 broccoli 编辑时插入。
  • 已改进 Broccoli 中的主题编辑模式适配处理。
  • 其他一些内部代码修正等。

pickles2/px2-px2dthelper v2.1.7 (2023年2月11日)

  • PX=px2dthelper.config.parsePX=px2dthelper.config.update 中,现在可以处理 $conf->copyright
  • 其他一些内部代码修正等。

pickles2/px2-px2dthelper v2.1.6 (2022年12月29日)

  • 新增 PX=px2dthelper.get.list_unassigned_contents
  • 在 px2ce、px2me、px2te、CCE 中,阻止从 Web SAPI 指定客户端资源的路径。
  • 其他一些内部代码修正等。

pickles2/px2-px2dthelper v2.1.5 (2022年11月3日)

  • 新增 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 中,当 pathcontentlogical_path 发生更改时,将其反映到影响范围。
  • PX=px2dthelper.page.delete_page_info_raw 中,当删除目标页面有子页面时,提升面包屑。
  • 新增 tomk79\pickles2\px2dthelper\utils::get_server_origin()
  • 其他一些内部代码修正等。

pickles2/px2-px2dthelper v2.1.4 (2022年7月20日)

  • module.js 的稳定性进行了修正。
  • 其他一些内部代码修正、文件整理等。

pickles2/px2-px2dthelper v2.1.3 (2022年6月5日)

  • 对网站地图转换的不稳定问题进行了修正。

pickles2/px2-px2dthelper v2.1.2 (2022年5月6日)

  • 修正了 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
  • 其他一些小的修正。

pickles2/px2-px2dthelper v2.1.1 (2022年5月2日)

  • 新增 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 设置无法传播的不稳定问题。

pickles2/px2-px2dthelper v2.1.0 (2022年1月8日)

  • 将支持的PHP版本更改为 >=7.3.0
  • 已适配PHP 8.1。

pickles2/px2-px2dthelper v2.0.22 (2022年1月4日)

  • 添加了 $conf->plugins->px2dt->enable_document_modules_cache。现在可以设置是否缓存Broccoli相关资源的构建。默认为禁用。
  • 修复了 Pickles 2 内容编辑器、Pickles 2 模块编辑器、Pickles 2 主题编辑器的初始化错误。

pickles2/px2-px2dthelper v2.0.21 (2021年8月21日)

  • 插件中的设置可以通过更直接的方式进行了。
  • 对性能进行了改进。

pickles2/px2-px2dthelper v2.0.20 (2021年7月10日)

  • 修复了在多个前端资源存在时无法处理的扩展field设置错误。
  • 其他一些内部代码的细微修正。

pickles2/px2-px2dthelper v2.0.19 (2021年4月24日)

  • 添加了对 scssphp/scssphp 的支持。
  • 其他一些内部代码的细微修正。

pickles2/px2-px2dthelper v2.0.18 (2021年2月21日)

  • 修复了当首页目录和主题集合目录不在预览文档根目录外时,无法返回正确路径的错误。
  • 修正了API返回的路径中Windows路径的环境依赖问题。

pickles2/px2-px2dthelper v2.0.17 (2021年2月21日)

  • 更新:Broccoli v0.4.x
  • 添加了 PX=px2dthelper.px2te.gpiPX=px2dthelper.px2te.client_resources
  • 添加了自定义控制台功能扩展。添加了 PX=px2dthelper.custom_console_extensions
  • custom_console_extensions 添加到 PX=px2dthelper.get.all 的返回值中。
  • 添加了 PX=px2dthelper.get.path_theme_collection_dir
  • path_theme_collection_dir 添加到 PX=px2dthelper.get.all 的返回值中。
  • path_homedir 添加到 PX=px2dthelper.get.all 的返回值中。

pickles2/px2-px2dthelper v2.0.16 (2020年10月17日)

  • 修复了在Firefox中Broccoli编辑器初始化无法完成的问题。
  • 其他一些内部代码的细微修正。

pickles2/px2-px2dthelper v2.0.15 (2020年6月21日)

  • 更新了外部依赖包的版本。

pickles2/px2-px2dthelper v2.0.14 (2020年1月2日)

  • 支持PHP 7.4。

pickles2/px2-px2dthelper v2.0.13 (2019年9月4日)

  • 禁用了停止Broccoli编辑画面的外部脚本。

pickles2/px2-px2dthelper v2.0.12 (2019年6月8日)

  • 添加了PX命令 PX=px2dthelper.config.parsePX=px2dthelper.config.update
  • 添加了PX命令 PX=px2dthelper.sitemap.createPX=px2dthelper.sitemap.delete
  • PX=px2dthelper.init_contentPX=px2dthelper.copy_content 修改为在内容已存在时不出错,而是输出错误。相反,添加了 force 选项,以便可以强制覆盖。
  • page_originated_csv 添加到 PX=px2dthelper.get.all 的结果中。(需要 pickles2/px-fw-2.x v2.0.40 或以上版本)
  • PX=px2dthelper.search_sitemap 添加了 limit 选项。默认上限为200条。
  • 开始缓存 document_modules 的构建结果。

pickles2/px2-px2dthelper v2.0.11 (2018年11月8日)

  • 修复了在设置中无法使用回调函数的问题(例如 $conf->path_files$conf->plugins->px2dt->guieditor->path_resource_dir$conf->plugins->px2dt->guieditor->path_data_dir)。

pickles2/px2-px2dthelper v2.0.10 (2018年10月26日)

  • 修复了在Windows环境中执行 PX=px2dthelper.publish_single_page 时,资源目录不包括在发布目标中的错误。

pickles2/px2-px2dthelper v2.0.9 (2018年9月25日)

  • 添加了PX命令 PX=px2dthelper.publish_single_page
  • 修复了在Pickles 2内容编辑器和Pickles 2模块编辑器的API中,无法正常调用API的问题。

pickles2/px2-px2dthelper v2.0.8 (2018年8月16日)

  • 添加了 broccoli-html-editor 的API。
  • 添加了 Pickles 2 内容编辑器的API。
  • 添加了 Pickles 2 模块编辑器的API。

pickles2/px2-px2dthelper v2.0.7 (2018年2月28日)

  • 放宽了对依赖库 michelf/php-markdownleafo/scssphp 版本的限制。(以便与 pickles2/px-fw-2.x 的更新兼容)
  • 修复了当 $conf->px2dtconfig 以关联数组形式设置时,规范化处理未正确反映的问题。

pickles2/px2-px2dthelper v2.0.6 (2017年9月14日)

  • 添加了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=px2dthelper.get.allPX=px2dthelper.check_editor_mode 添加了 path 选项。
  • path_typerealpath_theme_collection_dirpackages->path_composer_root_dirpackages->path_npm_root_dirpackages->package_list 添加到 PX=px2dthelper.get.all 的结果中。
  • 通过将 path 选项指定为id,在 PX=px2dthelper.get.all 中可以获取别名页面的信息。
  • $conf->plugins->px2dt->path_module_templates_dir 设置进行了处理。
  • 添加了 PX=px2dthelper.document_modules.build_cssPX=px2dthelper.document_modules.build_js 命令,以支持主题模块。

pickles2/px2-px2dthelper v2.0.5 (2017年5月30日)

  • 添加了插入新 processorbroccoli-receive-message 脚本。
  • 添加了PX命令 PX=px2dthelper.search_sitemap
  • 修复了在 PX=px2dthelper.copy_content 中,当 $from$to 指向相同内容时,内容文件会消失的错误。

pickles2/px2-px2dthelper v2.0.4 (2017年4月20日)

  • 添加了PX命令 PX=px2dthelper.get.navigation_info
  • PX=px2dthelper.get.all 添加了 filter 选项。
  • 修复了 PX=px2dthelper.get.all 中包含的 path_filesrealpath_files 有时返回无效值的问题。

pickles2/px2-px2dthelper v2.0.3 (2017年2月6日)

  • 添加了PX命令 PX=px2dthelper.get.all
  • paths_module_template整理为绝对路径后返回。
  • $site不可用时,不会异常退出。

pickles2/px2-px2dthelper v2.0.2 (2017年1月18日)

  • 整理了CSS, JS的构建结果。

pickles2/px2-px2dthelper v2.0.1 (2016年10月17日)

  • 添加了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=〜〜的方式指定。

pickles2/px2-px2dthelper v2.0.0 (2016年9月15日)

  • 初始发布。

针对开发者

测试 - Test

$ ./vendor/phpunit/phpunit/phpunit

文档输出 - phpDocumentor

$ wget https://phpdoc.org/phpDocumentor.phar;
$ composer run-script documentation;

许可证 - License

版权(c)2001-2024 Tomoya Koyanagi,Pickles 2 项目
MIT许可证 https://open-source.org.cn/licenses/mit-license.php

作者 - Author