fix local markdown resource missing tabs and title setting
This commit is contained in:
@@ -1597,7 +1597,8 @@ mod tests {
|
||||
"rootUri": root_uri,
|
||||
"options": {
|
||||
"wideLayout": true,
|
||||
"showToc": false
|
||||
"showToc": false,
|
||||
"hideTitleHeader": false
|
||||
}
|
||||
})
|
||||
.to_string(),
|
||||
@@ -1625,6 +1626,10 @@ mod tests {
|
||||
options_json["pages"][&renamed_document_id]["showToc"],
|
||||
false
|
||||
);
|
||||
assert_eq!(
|
||||
options_json["pages"][&renamed_document_id]["hideTitleHeader"],
|
||||
false
|
||||
);
|
||||
|
||||
let _ = std::fs::remove_dir_all(&root);
|
||||
}
|
||||
|
||||
@@ -2769,12 +2769,19 @@ pub fn resolve_local_markdown_page_aggregate(
|
||||
let block_count = content.as_array().map(|blocks| blocks.len()).unwrap_or(0) as u64;
|
||||
let page_subtree = markdown_page_subtree(document_id, &title, &content);
|
||||
let workspace_id = local_workspace_id(&canonical_root);
|
||||
let page_options = metadata
|
||||
let page_options_value = metadata
|
||||
.page_options
|
||||
.get(document_id)
|
||||
.or_else(|| metadata.page_options.get(&markdown_file.relative_path))
|
||||
.or_else(|| metadata.page_options.get(&markdown_file.relative_path));
|
||||
let mut page_options = page_options_value
|
||||
.map(page_options_from_metadata)
|
||||
.unwrap_or_default();
|
||||
if page_options_value
|
||||
.and_then(page_options_hide_title_header_value)
|
||||
.is_none()
|
||||
{
|
||||
page_options.hide_title_header = true;
|
||||
}
|
||||
let character_count = parsed.body.chars().count() as u64;
|
||||
let word_count = parsed
|
||||
.body
|
||||
@@ -6696,9 +6703,19 @@ fn page_options_from_metadata(value: &Value) -> PageOptions {
|
||||
{
|
||||
options.protect_editing = protect_editing;
|
||||
}
|
||||
if let Some(hide_title_header) = page_options_hide_title_header_value(value) {
|
||||
options.hide_title_header = hide_title_header;
|
||||
}
|
||||
options
|
||||
}
|
||||
|
||||
fn page_options_hide_title_header_value(value: &Value) -> Option<bool> {
|
||||
value
|
||||
.get("hideTitleHeader")
|
||||
.or_else(|| value.get("hide_title_header"))
|
||||
.and_then(Value::as_bool)
|
||||
}
|
||||
|
||||
pub(crate) fn local_workspace_id(root: &Path) -> String {
|
||||
if let Ok(manifest) = load_local_workspace_manifest(root) {
|
||||
if !manifest.workspace_id.trim().is_empty() {
|
||||
@@ -8294,7 +8311,7 @@ mod tests {
|
||||
std::fs::write(root.join("README.md"), "# Local Options\n").expect("write md");
|
||||
std::fs::write(
|
||||
root.join(".mnote").join("page-options.json"),
|
||||
r#"{"version":1,"pages":{"local-md:README.md":{"wideLayout":true,"showToc":true,"showHeadingNumbers":true}}}"#,
|
||||
r#"{"version":1,"pages":{"local-md:README.md":{"wideLayout":true,"showToc":true,"showHeadingNumbers":true,"hideTitleHeader":false}}}"#,
|
||||
)
|
||||
.expect("write options");
|
||||
let root_uri = format!("file://{}", root.display());
|
||||
@@ -8304,6 +8321,7 @@ mod tests {
|
||||
assert!(aggregate.layout.page_options.wide_layout);
|
||||
assert!(aggregate.layout.page_options.show_toc);
|
||||
assert!(aggregate.layout.page_options.show_heading_numbers);
|
||||
assert!(!aggregate.layout.page_options.hide_title_header);
|
||||
|
||||
let _ = std::fs::remove_dir_all(&root);
|
||||
}
|
||||
@@ -10236,6 +10254,7 @@ fn main() {}
|
||||
let aggregate = resolve_local_markdown_page_aggregate(&root_uri, "local-md:File~20Name.md")
|
||||
.expect("aggregate");
|
||||
assert_eq!(aggregate.title, "File Name");
|
||||
assert!(aggregate.layout.page_options.hide_title_header);
|
||||
|
||||
let _ = std::fs::remove_dir_all(&root);
|
||||
}
|
||||
|
||||
@@ -222,8 +222,8 @@ pub async fn document_page_shell(
|
||||
secondary_workspace_id={secondary_aggregate.as_ref().map(|aggregate| aggregate.identity.workspace_id.clone()).unwrap_or_default()}
|
||||
secondary_page_subtree_json={secondary_page_subtree_json.unwrap_or_default()}
|
||||
secondary_page_options_json={secondary_page_options_json.unwrap_or_default()}
|
||||
primary_hide_title_header={is_local_folder}
|
||||
secondary_hide_title_header={secondary_source_kind == Some("local_folder")}
|
||||
primary_hide_title_header={aggregate.layout.page_options.hide_title_header}
|
||||
secondary_hide_title_header={secondary_aggregate.as_ref().map(|aggregate| aggregate.layout.page_options.hide_title_header).unwrap_or(secondary_source_kind == Some("local_folder"))}
|
||||
show_admin_access_policy={is_local_access_policy_admin_context(&context)}
|
||||
/>
|
||||
});
|
||||
@@ -4185,7 +4185,7 @@ pub(crate) fn render_editor_island_adapter_script() -> &'static str {
|
||||
} catch (error) {
|
||||
console.warn('mnote resource tab 打开失败', error);
|
||||
markResourceTabError(entry);
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user