我想使OpenRefine实例可用于数据浏览,以使用其过滤,构面,群集和其他功能。但是用户(将在网络上共享)将无法编辑任何内容。
一些想法,邀请更多或有关如何实现的线索:
使本地项目文件夹为只读。
使它永久不变(即,用户进行了更改,OpenRefine冒充了,但是下次加载时,所有更改都消失了)。这实际上是在docker中本地发生的,经过一番挫折后,我们学习了如何在持久卷上运行docker映像。但是,只有在关闭实例并重新启动实例后,该“重置”数据才会启动。我们如何才能使其在浏览器会话中保持不变?
在代码内,如果有任何标记变量基于做出哪个编辑决策,那么我们可以稍作修改就能覆盖它吗?在此路由中,通常会在顶部显示黄色警报消息,表明已编辑了这么多单元,可能会显示类似“错误:编辑失败!”的信息。我们可以将其修改为更合适的内容,例如“抱歉,在此实例中,编辑被禁用。”
答案 0 :(得分:1)
我认为没有内置功能可以禁止编辑。您可以做的一件事是在后端禁用所有用于进行更改的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中删除项目。
您还应该禁用扩展名中的命令(例如,extensions/wikidata/module/MOD-INF/controller.js
中的Wikidata扩展名)。
我在这里创建了相应的增强请求: https://github.com/OpenRefine/OpenRefine/issues/1910