package jnpf.bizcommon.onlyoffice.service.impl;
|
|
import lombok.Builder;
|
|
import java.util.Map;
|
import java.util.function.BooleanSupplier;
|
|
@Builder
|
public class OnlyOfficeSceneBuildPlan {
|
|
@FunctionalInterface
|
public interface PluginContextCustomizer {
|
void customize(String pluginCode, String pluginGuid, Map<String, Object> context, boolean writable);
|
}
|
|
private final BooleanSupplier editAdmission;
|
/** Server-verified lease forbids untracked full editing. */
|
private final boolean reviewOnly;
|
public boolean reviewOnly() { return reviewOnly; }
|
/** 仅由已授权的场景构造器设置;允许会话身份与物理来源分离。 */
|
private final String sourceFileId;
|
/** 上传编辑专属权限;null 表示其他场景,保持原兼容行为。 */
|
private final Boolean uploadFileAllowDownload;
|
private final boolean uploadQianpiyeAnnotatorEnabled;
|
|
public Boolean uploadFileAllowDownload() { return uploadFileAllowDownload; }
|
public boolean uploadQianpiyeAnnotatorEnabled() { return uploadQianpiyeAnnotatorEnabled; }
|
|
public String sourceFileId() { return sourceFileId; }
|
private final boolean allowSameUserLockReopen;
|
private final boolean hideCommentsWhenWritable;
|
private final String pluginHiddenInReadOnly;
|
private final boolean keepHiddenPluginForLocate;
|
private final PluginContextCustomizer pluginContextCustomizer;
|
|
public boolean canEdit() {
|
return editAdmission != null && editAdmission.getAsBoolean();
|
}
|
|
public boolean allowSameUserLockReopen() {
|
return allowSameUserLockReopen;
|
}
|
|
public boolean hideCommentsWhenWritable() {
|
return hideCommentsWhenWritable;
|
}
|
|
public boolean keepPluginInReadOnly(String pluginCode, boolean locatingControl) {
|
return pluginHiddenInReadOnly == null || !pluginHiddenInReadOnly.equals(pluginCode)
|
|| keepHiddenPluginForLocate && locatingControl;
|
}
|
|
public void customizePluginContext(String pluginCode, String pluginGuid,
|
Map<String, Object> context, boolean writable) {
|
if (pluginContextCustomizer != null) {
|
pluginContextCustomizer.customize(pluginCode, pluginGuid, context, writable);
|
}
|
}
|
}
|