我想让一个OpenRefine实例可以用于数据探索,使用它的过滤、分面、集群和其他功能。但是用户(这将在网络上共享(不应该能够编辑任何内容。
一些想法,邀请更多或关于如何实现的线索
-
将本地项目文件夹设为只读。
-
使其不持久(即,用户进行更改,OpenRefine假装同意,但下次加载时,所有更改都消失了(。这实际上是在docker中本地发生的,在经历了一些挫折之后,我们学习了如何使用持久卷运行docker映像。但是,只有当关闭实例并重新启动时,数据的"重置"才会生效。我们如何才能使它在浏览器会话中不持久?
-
在代码内部,如果有任何标志变量作为编辑决策的基础,那么我们可以稍微修改一下吗?在该路由中,通常位于顶部的黄色警报消息(表示编辑了这么多单元格(可能会显示类似"错误:编辑失败!"的内容。我们可以把它修改成更贴切的东西,比如"对不起,在这种情况下编辑被禁用了。">
我不认为有任何内置功能可以禁用编辑。您可以做的一件事是在后台禁用所有用于进行更改的API命令,但不能保证当用户触发这些操作时,UI会优雅地拒绝这些操作。
若要禁用API命令,请打开./main/webapp/modules/core/MOD-INF/controller.js
文件。然后,您需要确定要禁用哪些命令。例如,你不希望用户删除项目,所以你应该删除
RS.registerCommand(module, "delete-project", new Packages.com.google.refine.commands.project.DeleteProjectCommand());
这将使您无法从UI中删除项目。
您还应该禁用扩展中的命令(例如,对于Wikidata扩展,在extensions/wikidata/module/MOD-INF/controller.js
中(。
我在这里创建了相应的增强请求:https://github.com/OpenRefine/OpenRefine/issues/1910