mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-02-08 00:04:21 +01:00
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
a78b1cd22d
22 changed files with 96 additions and 60 deletions
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "نشر",
|
||||
"publishService": "خدمة النشر",
|
||||
"publishServiceNotStarted": "خدمة النشر لم تبدأ",
|
||||
"publishServiceTip": "عند التمكين، سيتم بَدْء خدمة النشر. هذه الخدمة تنشر محتوى مساحة العمل الحالية في وضع القراءة فقط على الشبكة المحلية.",
|
||||
"publishServiceTip": "عند التمكين، سيتم بَدْء خدمة النشر. هذه الخدمة تنشر محتوى مساحة العمل الحالية في وضع القراءة فقط على الشبكة المحلية. يرجى التأكد من أن مساحة العمل لا تحتوي على معلومات حساسة.",
|
||||
"publishServicePort": "منفذ الخدمة",
|
||||
"publishServicePortTip": "تمكين خدمة النشر باستخدام رَقْم المنفذ المحدد. إذا تم تعيينها إلى <code class='fn__code'>0</code>، سيتم استخدام منفذ عشوائي.",
|
||||
"publishServiceAddresses": "عناوين الوصول إلى الخدمة",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "ترتيب تصاعدي حسب الصلة",
|
||||
"saveCriterion": "حفظ معايير الاستعلام",
|
||||
"useCriterion": "الاستعلام التالي لن يستخدم معايير الاستعلام الحالية",
|
||||
"removeCriterion": "إزالة معايير الاستعلام",
|
||||
"removeCriterion": "إعادة تعيين شروط الاستعلام",
|
||||
"group": "تصنيف",
|
||||
"noGroupBy": "دون تصنيف",
|
||||
"groupByDoc": "تصنيف حسب المستند",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Veröffentlichen",
|
||||
"publishService": "Veröffentlichungsdienst",
|
||||
"publishServiceNotStarted": "Veröffentlichungsdienst nicht gestartet",
|
||||
"publishServiceTip": "Wenn aktiviert, wird der Veröffentlichungsdienst gestartet. Dieser Dienst veröffentlicht den Inhalt des aktuellen Arbeitsbereichs im Nur-Lese-Modus im lokalen Netzwerk.",
|
||||
"publishServiceTip": "Wenn aktiviert, wird der Veröffentlichungsdienst gestartet. Dieser Dienst veröffentlicht den Inhalt des aktuellen Arbeitsbereichs im Nur-Lese-Modus im lokalen Netzwerk. Bitte stellen Sie sicher, dass der Arbeitsbereich keine sensiblen Informationen enthält.",
|
||||
"publishServicePort": "Dienst-Port",
|
||||
"publishServicePortTip": "Aktivieren Sie den Veröffentlichungsdienst mit der angegebenen Portnummer. Wenn auf <code class='fn__code'>0</code> gesetzt, wird ein zufälliger Port verwendet.",
|
||||
"publishServiceAddresses": "Zugriffsadressen des Dienstes",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Relevanz ASC",
|
||||
"saveCriterion": "Suchkriterien speichern",
|
||||
"useCriterion": "Die nächste Abfrage wird die aktuellen Suchkriterien nicht mehr verwenden",
|
||||
"removeCriterion": "Suchkriterien entfernen",
|
||||
"removeCriterion": "Suchkriterien zurücksetzen",
|
||||
"group": "Gruppe",
|
||||
"noGroupBy": "Keine Gruppierung",
|
||||
"groupByDoc": "Nach Dokument gruppieren",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Publish",
|
||||
"publishService": "Publish service",
|
||||
"publishServiceNotStarted": "Publish Service Not Started",
|
||||
"publishServiceTip": "When enabled, the publish service will be started. This service publishes the content of the current workspace in read-only mode on the local network.",
|
||||
"publishServiceTip": "When enabled, the publish service will be started. This service publishes the content of the current workspace in read-only mode on the local network. Please ensure the workspace does not contain sensitive information.",
|
||||
"publishServicePort": "Service port",
|
||||
"publishServicePortTip": "Enable the publish service using the specified port number. If set to <code class='fn__code'>0</code>, a random port will be used.",
|
||||
"publishServiceAddresses": "Service access addresses",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Relevance ASC",
|
||||
"saveCriterion": "Save query criteria",
|
||||
"useCriterion": "The next query will no longer use the current query criteria",
|
||||
"removeCriterion": "Remove query criteria",
|
||||
"removeCriterion": "Reset query criteria",
|
||||
"group": "Group",
|
||||
"noGroupBy": "No grouping",
|
||||
"groupByDoc": "Group by document",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Publicar",
|
||||
"publishService": "Publicar servicio",
|
||||
"publishServiceNotStarted": "Servicio de publicación no iniciado",
|
||||
"publishServiceTip": "Al activar esto, se iniciará el servicio de publicación. Este servicio publicará el contenido del espacio de trabajo actual en modo de solo lectura en la LAN",
|
||||
"publishServiceTip": "Al activar esto, se iniciará el servicio de publicación. Este servicio publicará el contenido del espacio de trabajo actual en modo de solo lectura en la LAN. Asegúrese de que el espacio de trabajo no contenga información sensible.",
|
||||
"publishServicePort": "Número de puerto del servicio",
|
||||
"publishServicePortTip": "Activar el servicio de publicación con el número de puerto especificado. Si se establece en 0, se utilizará un puerto aleatorio",
|
||||
"publishServiceAddresses": "Direcciones de acceso al servicio",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Relevancia ASC",
|
||||
"saveCriterion": "Guardar criterios de consulta",
|
||||
"useCriterion": "Las condiciones de consulta actuales ya no se utilizarán para la siguiente consulta",
|
||||
"removeCriterion": "Eliminar criterios de consulta",
|
||||
"removeCriterion": "Restablecer criterios de consulta",
|
||||
"group": "Grupo",
|
||||
"noGroupBy": "Sin agrupar",
|
||||
"groupByDoc": "Agrupar por documento",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Publier",
|
||||
"publishService": "Publier le service",
|
||||
"publishServiceNotStarted": "Service de publication non démarré",
|
||||
"publishServiceTip": "Lorsqu'activé, le service de publication démarre. Ce service publie en mode lecture seule le contenu de l'espace de travail actuel dans le réseau local.",
|
||||
"publishServiceTip": "Lorsqu'activé, le service de publication démarre. Ce service publie en mode lecture seule le contenu de l'espace de travail actuel dans le réseau local. Veuillez vous assurer que l'espace de travail ne contient pas d'informations sensibles.",
|
||||
"publishServicePort": "Numéro de port du service",
|
||||
"publishServicePortTip": "Active le service de publication avec le numéro de port spécifié. Si défini sur 0, un port aléatoire sera utilisé.",
|
||||
"publishServiceAddresses": "Adresses d'accès au service",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "ASC de pertinence",
|
||||
"saveCriterion": "Enregistrer les critères de requête",
|
||||
"useCriterion": "Les conditions de requête actuelles ne seront plus utilisées pour la prochaine requête",
|
||||
"removeCriterion": "Supprimer les critères de requête",
|
||||
"removeCriterion": "Réinitialiser les critères de recherche",
|
||||
"group": "Groupe",
|
||||
"noGroupBy": "Aucun regroupement",
|
||||
"groupByDoc": "Regrouper par document",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "פרסם",
|
||||
"publishService": "שירות פרסום",
|
||||
"publishServiceNotStarted": "שירות פרסום לא החל",
|
||||
"publishServiceTip": "כאשר השירות מופעל, השירות יתחיל. שירות זה מפרסם את תוכן הממשק הנוכחי במצב קריאה בלבד ברשת המקומית.",
|
||||
"publishServiceTip": "כאשר השירות מופעל, השירות יתחיל. שירות זה מפרסם את תוכן הממשק הנוכחי במצב קריאה בלבד ברשת המקומית. וודא שמרחב העבודה אינו מכיל מידע רגיש.",
|
||||
"publishServicePort": "פורט שירות",
|
||||
"publishServicePortTip": "הפעל את שירות הפרסום באמצעות מספר הפורט שנבחר. אם קובע ל <code class='fn__code'>0</code>, פורט אקראי ייחשב.",
|
||||
"publishServiceAddresses": "כתובות גישה לשירות",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "רלוונטיות ASC",
|
||||
"saveCriterion": "שמור קריטריוני שאילתה",
|
||||
"useCriterion": "השאילתה הבאה לא תשתמש יותר בקריטריוני השאילתה הנוכחיים",
|
||||
"removeCriterion": "הסר קריטריוני שאילתה",
|
||||
"removeCriterion": "איפוס תנאי השאילתה",
|
||||
"group": "קבוצה",
|
||||
"noGroupBy": "ללא קבוצות",
|
||||
"groupByDoc": "קבוצה לפי מסמך",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Pubblica",
|
||||
"publishService": "Servizio di pubblicazione",
|
||||
"publishServiceNotStarted": "Servizio di pubblicazione non avviato",
|
||||
"publishServiceTip": "Quando abilitato, il servizio di pubblicazione verrà avviato. Questo servizio pubblica il contenuto dell'attuale area di lavoro in modalità di sola lettura sulla rete locale.",
|
||||
"publishServiceTip": "Quando abilitato, il servizio di pubblicazione verrà avviato. Questo servizio pubblica il contenuto dell'attuale area di lavoro in modalità di sola lettura sulla rete locale. Assicurarsi che l'area di lavoro non contenga informazioni sensibili.",
|
||||
"publishServicePort": "Porta del servizio",
|
||||
"publishServicePortTip": "Abilita il servizio di pubblicazione utilizzando il numero di porta specificato. Se impostato su <code class='fn__code'>0</code>, verrà utilizzata una porta casuale.",
|
||||
"publishServiceAddresses": "Indirizzi di accesso al servizio",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Rilevanza ASC",
|
||||
"saveCriterion": "Salva criteri di ricerca",
|
||||
"useCriterion": "La prossima ricerca non utilizzerà più i criteri di ricerca correnti",
|
||||
"removeCriterion": "Rimuovi criteri di ricerca",
|
||||
"removeCriterion": "Reimposta i criteri di ricerca",
|
||||
"group": "Gruppo",
|
||||
"noGroupBy": "Nessun raggruppamento",
|
||||
"groupByDoc": "Raggruppa per documento",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "公開する",
|
||||
"publishService": "サービスを公開",
|
||||
"publishServiceNotStarted": "サービスが開始されていません",
|
||||
"publishServiceTip": "有効にすると、サービスを開始します。このサービスは、現在のワークスペースの内容を読み取り専用モードでローカルネットワークに公開します",
|
||||
"publishServiceTip": "有効にすると、サービスを開始します。このサービスは、現在のワークスペースの内容を読み取り専用モードでローカルネットワークに公開します。ワークスペースに機密情報が含まれていないことを確認してください。",
|
||||
"publishServicePort": "サービスポート",
|
||||
"publishServicePortTip": "指定したポート番号を使用してサービスを有効にします。0 に設定するとランダムなポートが使用されます",
|
||||
"publishServiceAddresses": "サービスアドレス",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "関連性 (昇順)",
|
||||
"saveCriterion": "検索条件を保存",
|
||||
"useCriterion": "次回の検索条件を現在の検索条件で使用しない",
|
||||
"removeCriterion": "検索条件を削除",
|
||||
"removeCriterion": "検索条件をリセット",
|
||||
"group": "グループ ",
|
||||
"noGroupBy": "グループ化なし",
|
||||
"groupByDoc": "ドキュメントごとにグループ化",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "게시",
|
||||
"publishService": "게시 서비스",
|
||||
"publishServiceNotStarted": "게시 서비스가 시작되지 않음",
|
||||
"publishServiceTip": "활성화하면 게시 서비스가 시작됩니다. 이 서비스는 현재 작업 공간의 내용을 로컬 네트워크에 읽기 전용 모드로 게시합니다.",
|
||||
"publishServiceTip": "활성화하면 게시 서비스가 시작됩니다. 이 서비스는 현재 작업 공간의 내용을 로컬 네트워크에 읽기 전용 모드로 게시합니다. 작업 공간에 민감한 정보가 포함되어 있지 않은지 확인하세요.",
|
||||
"publishServicePort": "서비스 포트",
|
||||
"publishServicePortTip": "지정된 포트 번호를 사용하여 게시 서비스를 활성화합니다. <code class='fn__code'>0</code>으로 설정하면 무작위 포트가 사용됩니다.",
|
||||
"publishServiceAddresses": "서비스 액세스 주소",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "관련성 오름차순",
|
||||
"saveCriterion": "쿼리 기준 저장",
|
||||
"useCriterion": "다음 쿼리에서는 더 이상 현재 쿼리 기준을 사용하지 않습니다",
|
||||
"removeCriterion": "쿼리 기준 제거",
|
||||
"removeCriterion": "검색 조건 초기화",
|
||||
"group": "그룹",
|
||||
"noGroupBy": "그룹화 안 함",
|
||||
"groupByDoc": "문서별 그룹화",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Opublikuj",
|
||||
"publishService": "Opublikuj usługę",
|
||||
"publishServiceNotStarted": "Usługa publikacji nie została uruchomiona",
|
||||
"publishServiceTip": "Po włączeniu usługa publikacji zostanie uruchomiona. Usługa ta publikuje zawartość bieżącego obszaru roboczego w trybie tylko do odczytu w sieci lokalnej.",
|
||||
"publishServiceTip": "Po włączeniu usługa publikacji zostanie uruchomiona. Usługa ta publikuje zawartość bieżącego obszaru roboczego w trybie tylko do odczytu w sieci lokalnej. Upewnij się, że obszar roboczy nie zawiera poufnych informacji.",
|
||||
"publishServicePort": "Port usługi",
|
||||
"publishServicePortTip": "Włącz usługę publikacji, używając określonego numeru portu. Jeśli ustawione na <code class='fn__code'>0</code>, zostanie użyty losowy port.",
|
||||
"publishServiceAddresses": "Adresy dostępu do usługi",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Relevance ASC",
|
||||
"saveCriterion": "Zapisz kryteria zapytania",
|
||||
"useCriterion": "Następne zapytanie nie wilno już używać bieżących kryteriów zapytania",
|
||||
"removeCriterion": "Usuń kryteria zapytania",
|
||||
"removeCriterion": "Resetuj kryteria zapytania",
|
||||
"group": "Grupa",
|
||||
"noGroupBy": "Brak grupowania",
|
||||
"groupByDoc": "Grupuj według dokumentu",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Publicar",
|
||||
"publishService": "Serviço de publicação",
|
||||
"publishServiceNotStarted": "Serviço de Publicação Não Iniciado",
|
||||
"publishServiceTip": "Quando ativado, o serviço de publicação será iniciado. Este serviço publica o conteúdo do espaço de trabalho atual em modo somente leitura na rede local.",
|
||||
"publishServiceTip": "Quando ativado, o serviço de publicação será iniciado. Este serviço publica o conteúdo do espaço de trabalho atual em modo somente leitura na rede local. Certifique-se de que o espaço de trabalho não contenha informações sensíveis.",
|
||||
"publishServicePort": "Porta do serviço",
|
||||
"publishServicePortTip": "Ativar o serviço de publicação usando o número da porta especificado. Se definido como <code class='fn__code'>0</code>, uma porta aleatória será usada.",
|
||||
"publishServiceAddresses": "Endereços de acesso ao serviço",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Relevância ASC",
|
||||
"saveCriterion": "Salvar critérios de consulta",
|
||||
"useCriterion": "A próxima consulta não usará mais os critérios de consulta atuais",
|
||||
"removeCriterion": "Remover critérios de consulta",
|
||||
"removeCriterion": "Redefinir critérios de consulta",
|
||||
"group": "Grupo",
|
||||
"noGroupBy": "Sem agrupamento",
|
||||
"groupByDoc": "Agrupar por documento",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Опубликовать",
|
||||
"publishService": "Сервис публикации",
|
||||
"publishServiceNotStarted": "Сервис публикации не запущен",
|
||||
"publishServiceTip": "При включении сервис публикации будет запущен. Сервис публикует содержимое текущего рабочего пространства в режиме только для чтения по локальной сети.",
|
||||
"publishServiceTip": "При включении сервис публикации будет запущен. Сервис публикует содержимое текущего рабочего пространства в режиме только для чтения по локальной сети. Убедитесь, что в рабочем пространстве нет конфиденциальной информации.",
|
||||
"publishServicePort": "Порт сервиса",
|
||||
"publishServicePortTip": "Включите сервис публикации с использованием указанного номера порта. Установите на <code class='fn__code'>0</code>, будет использован случайный порт.",
|
||||
"publishServiceAddresses": "Адреса доступа к сервису",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Релевантность по возрастанию",
|
||||
"saveCriterion": "Сохранить критерии запроса",
|
||||
"useCriterion": "Следующий запрос больше не будет использовать текущие критерии запроса",
|
||||
"removeCriterion": "Удалить критерии запроса",
|
||||
"removeCriterion": "Сбросить условия запроса",
|
||||
"group": "Группа",
|
||||
"noGroupBy": "Без группировки",
|
||||
"groupByDoc": "Группировать по документу",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "Yayınla",
|
||||
"publishService": "Yayın servisi",
|
||||
"publishServiceNotStarted": "Yayın Servisi Başlatılmadı",
|
||||
"publishServiceTip": "Etkinleştirildiğinde, yayın servisi başlatılır. Bu servis, geçerli çalışma alanı içeriğini yerel ağda salt okunur olarak yayınlar.",
|
||||
"publishServiceTip": "Etkinleştirildiğinde, yayın servisi başlatılır. Bu servis, geçerli çalışma alanı içeriğini yerel ağda salt okunur olarak yayınlar. Lütfen çalışma alanında hassas bilgi bulunmadığından emin olun.",
|
||||
"publishServicePort": "Servis portu",
|
||||
"publishServicePortTip": "Belirtilen port numarasıyla yayın servisini etkinleştir. <code class='fn__code'>0</code> olarak ayarlanırsa rastgele bir port kullanılır.",
|
||||
"publishServiceAddresses": "Servis erişim adresleri",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "Alaka düzeyi (artan)",
|
||||
"saveCriterion": "Sorgu ölçütünü kaydet",
|
||||
"useCriterion": "Sonraki sorguda geçerli ölçüt kullanılmayacak",
|
||||
"removeCriterion": "Sorgu ölçütünü kaldır",
|
||||
"removeCriterion": "Sorgu kriterlerini sıfırla",
|
||||
"group": "Grup",
|
||||
"noGroupBy": "Gruplama yok",
|
||||
"groupByDoc": "Belgeye göre grupla",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "發布",
|
||||
"publishService": "發布服務",
|
||||
"publishServiceNotStarted": "發布服務未啟動",
|
||||
"publishServiceTip": "啟用後將啟動發布服務。該服務以只讀模式在區域網中發布當前工作空間的內容",
|
||||
"publishServiceTip": "啟用後將啟動發布服務。該服務以只讀模式在區域網中發布當前工作空間的內容,請確保工作空間中不包含敏感資訊",
|
||||
"publishServicePort": "服務端口號",
|
||||
"publishServicePortTip": "使用指定的端口號啟用發布服務。若設置為 <code class='fn__code'>0</code> 則使用隨機端口",
|
||||
"publishServiceAddresses": "服務訪問地址",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "按相關度升序",
|
||||
"saveCriterion": "保存查詢條件",
|
||||
"useCriterion": "下次查詢不再使用目前查詢條件",
|
||||
"removeCriterion": "清空查詢條件",
|
||||
"removeCriterion": "重置查詢條件",
|
||||
"group": "分組",
|
||||
"noGroupBy": "不分組",
|
||||
"groupByDoc": "按文檔分組",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@
|
|||
"publish": "发布",
|
||||
"publishService": "发布服务",
|
||||
"publishServiceNotStarted": "发布服务未启动",
|
||||
"publishServiceTip": "启用后将启动发布服务。该服务以只读模式在局域网中发布当前工作空间的内容",
|
||||
"publishServiceTip": "启用后将启动发布服务。该服务以只读模式在局域网中发布当前工作空间的内容,请确保工作空间中不包含敏感信息",
|
||||
"publishServicePort": "服务端口号",
|
||||
"publishServicePortTip": "使用指定的端口号启用发布服务。若设置为 <code class='fn__code'>0</code> 则使用随机端口",
|
||||
"publishServiceAddresses": "服务访问地址",
|
||||
|
|
@ -562,7 +562,7 @@
|
|||
"sortByRankAsc": "按相关度升序",
|
||||
"saveCriterion": "保存查询条件",
|
||||
"useCriterion": "下次查询不再使用当前查询条件",
|
||||
"removeCriterion": "清空查询条件",
|
||||
"removeCriterion": "重置查询条件",
|
||||
"group": "分组",
|
||||
"noGroupBy": "不分组",
|
||||
"groupByDoc": "按文档分组",
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@ func setAttrViewGroup(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
ret = renderAttrView(blockID, avID, "", "", 1, -1, nil)
|
||||
ret = renderAttrView(blockID, avID, "", "", 1, -1, nil, false)
|
||||
c.JSON(http.StatusOK, ret)
|
||||
}
|
||||
|
||||
|
|
@ -235,7 +235,7 @@ func changeAttrViewLayout(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
ret = renderAttrView(blockID, avID, "", "", 1, -1, nil)
|
||||
ret = renderAttrView(blockID, avID, "", "", 1, -1, nil, false)
|
||||
c.JSON(http.StatusOK, ret)
|
||||
}
|
||||
|
||||
|
|
@ -864,13 +864,19 @@ func renderAttributeView(c *gin.Context) {
|
|||
groupPaging = groupPagingArg.(map[string]interface{})
|
||||
}
|
||||
|
||||
ret = renderAttrView(blockID, id, viewID, query, page, pageSize, groupPaging)
|
||||
createIfNotExist := true
|
||||
createIfNotExistArg := arg["createIfNotExist"]
|
||||
if nil != createIfNotExistArg {
|
||||
createIfNotExist = createIfNotExistArg.(bool)
|
||||
}
|
||||
|
||||
ret = renderAttrView(blockID, id, viewID, query, page, pageSize, groupPaging, createIfNotExist)
|
||||
c.JSON(http.StatusOK, ret)
|
||||
}
|
||||
|
||||
func renderAttrView(blockID, avID, viewID, query string, page, pageSize int, groupPaging map[string]interface{}) (ret *gulu.Result) {
|
||||
func renderAttrView(blockID, avID, viewID, query string, page, pageSize int, groupPaging map[string]interface{}, createIfNotExist bool) (ret *gulu.Result) {
|
||||
ret = gulu.Ret.NewResult()
|
||||
view, attrView, err := model.RenderAttributeView(blockID, avID, viewID, query, page, pageSize, groupPaging)
|
||||
view, attrView, err := model.RenderAttributeView(blockID, avID, viewID, query, page, pageSize, groupPaging, createIfNotExist)
|
||||
if err != nil {
|
||||
ret.Code = -1
|
||||
ret.Msg = err.Error()
|
||||
|
|
|
|||
|
|
@ -877,9 +877,10 @@ func GetAttributeViewI18n(key string) string {
|
|||
}
|
||||
|
||||
var (
|
||||
ErrViewNotFound = errors.New("view not found")
|
||||
ErrKeyNotFound = errors.New("key not found")
|
||||
ErrWrongLayoutType = errors.New("wrong layout type")
|
||||
ErrAttributeViewNotFound = errors.New("attribute view not found")
|
||||
ErrViewNotFound = errors.New("view not found")
|
||||
ErrKeyNotFound = errors.New("key not found")
|
||||
ErrWrongLayoutType = errors.New("wrong layout type")
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
|||
|
|
@ -35,10 +35,15 @@ import (
|
|||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
|
||||
func RenderAttributeView(blockID, avID, viewID, query string, page, pageSize int, groupPaging map[string]interface{}) (viewable av.Viewable, attrView *av.AttributeView, err error) {
|
||||
func RenderAttributeView(blockID, avID, viewID, query string, page, pageSize int, groupPaging map[string]interface{}, createIfNotExist bool) (viewable av.Viewable, attrView *av.AttributeView, err error) {
|
||||
waitForSyncingStorages()
|
||||
|
||||
if avJSONPath := av.GetAttributeViewDataPath(avID); !filelock.IsExist(avJSONPath) {
|
||||
if !createIfNotExist {
|
||||
err = av.ErrAttributeViewNotFound
|
||||
return
|
||||
}
|
||||
|
||||
attrView = av.NewAttributeView(avID)
|
||||
if err = av.SaveAttributeView(attrView); err != nil {
|
||||
logging.LogErrorf("save attribute view [%s] failed: %s", avID, err)
|
||||
|
|
|
|||
|
|
@ -1523,8 +1523,10 @@ func RemoveDoc(boxID, p string) {
|
|||
|
||||
FlushTxQueue()
|
||||
luteEngine := util.NewLute()
|
||||
removeDoc(box, p, luteEngine)
|
||||
tree := removeDoc(box, p, luteEngine)
|
||||
IncSync()
|
||||
|
||||
refreshParentDocInfo(tree)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -1536,15 +1538,29 @@ func RemoveDocs(paths []string) {
|
|||
pathsBoxes := getBoxesByPaths(paths)
|
||||
FlushTxQueue()
|
||||
luteEngine := util.NewLute()
|
||||
|
||||
var trees []*parse.Tree
|
||||
for p, box := range pathsBoxes {
|
||||
removeDoc(box, p, luteEngine)
|
||||
tree := removeDoc(box, p, luteEngine)
|
||||
trees = append(trees, tree)
|
||||
}
|
||||
|
||||
parentTrees := map[string]*parse.Tree{}
|
||||
for _, tree := range trees {
|
||||
parentTree := loadParentTree(tree)
|
||||
if nil != parentTree {
|
||||
parentTrees[parentTree.ID] = parentTree
|
||||
}
|
||||
}
|
||||
for _, parentTree := range parentTrees {
|
||||
refreshDocInfo(parentTree)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func removeDoc(box *Box, p string, luteEngine *lute.Lute) {
|
||||
tree, _ := filesys.LoadTree(box.ID, p, luteEngine)
|
||||
if nil == tree {
|
||||
func removeDoc(box *Box, p string, luteEngine *lute.Lute) (ret *parse.Tree) {
|
||||
ret, _ = filesys.LoadTree(box.ID, p, luteEngine)
|
||||
if nil == ret {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -1561,16 +1577,16 @@ func removeDoc(box *Box, p string, luteEngine *lute.Lute) {
|
|||
return
|
||||
}
|
||||
|
||||
generateAvHistoryInTree(tree, historyDir)
|
||||
generateAvHistoryInTree(ret, historyDir)
|
||||
copyDocAssetsToDataAssets(box.ID, p)
|
||||
|
||||
removeIDs := treenode.RootChildIDs(tree.ID)
|
||||
removeIDs := treenode.RootChildIDs(ret.ID)
|
||||
dir := path.Dir(p)
|
||||
childrenDir := path.Join(dir, tree.ID)
|
||||
childrenDir := path.Join(dir, ret.ID)
|
||||
existChildren := box.Exist(childrenDir)
|
||||
if existChildren {
|
||||
absChildrenDir := filepath.Join(util.DataDir, tree.Box, childrenDir)
|
||||
historyPath = filepath.Join(historyDir, tree.Box, childrenDir)
|
||||
absChildrenDir := filepath.Join(util.DataDir, ret.Box, childrenDir)
|
||||
historyPath = filepath.Join(historyDir, ret.Box, childrenDir)
|
||||
if err = filelock.Copy(absChildrenDir, historyPath); err != nil {
|
||||
logging.LogErrorf("backup [path=%s] to history [%s] failed: %s", absChildrenDir, historyPath, err)
|
||||
return
|
||||
|
|
@ -1578,7 +1594,7 @@ func removeDoc(box *Box, p string, luteEngine *lute.Lute) {
|
|||
}
|
||||
indexHistoryDir(filepath.Base(historyDir), util.NewLute())
|
||||
|
||||
allRemoveRootIDs := []string{tree.ID}
|
||||
allRemoveRootIDs := []string{ret.ID}
|
||||
allRemoveRootIDs = append(allRemoveRootIDs, removeIDs...)
|
||||
allRemoveRootIDs = gulu.Str.RemoveDuplicatedElem(allRemoveRootIDs)
|
||||
for _, rootID := range allRemoveRootIDs {
|
||||
|
|
@ -1616,9 +1632,8 @@ func removeDoc(box *Box, p string, luteEngine *lute.Lute) {
|
|||
"ids": removeIDs,
|
||||
}
|
||||
util.PushEvent(evt)
|
||||
|
||||
refreshParentDocInfo(tree)
|
||||
task.AppendTask(task.DatabaseIndex, removeDoc0, tree, childrenDir)
|
||||
task.AppendTask(task.DatabaseIndex, removeDoc0, ret, childrenDir)
|
||||
return
|
||||
}
|
||||
|
||||
func removeDoc0(tree *parse.Tree, childrenDir string) {
|
||||
|
|
|
|||
|
|
@ -145,6 +145,10 @@ func refreshDocInfoWithSize(tree *parse.Tree, size uint64) {
|
|||
}
|
||||
|
||||
func refreshParentDocInfo(tree *parse.Tree) {
|
||||
if nil == tree {
|
||||
return
|
||||
}
|
||||
|
||||
parentTree := loadParentTree(tree)
|
||||
if nil == parentTree {
|
||||
return
|
||||
|
|
|
|||
|
|
@ -2263,13 +2263,14 @@ func GetCloudSpace() (s *Sync, b *Backup, hSize, hAssetSize, hTotalSize, hExchan
|
|||
b.HSize = humanize.BytesCustomCeil(uint64(backupSize), 2)
|
||||
hAssetSize = humanize.BytesCustomCeil(uint64(assetSize), 2)
|
||||
hSize = humanize.BytesCustomCeil(uint64(totalSize), 2)
|
||||
u := Conf.GetUser()
|
||||
hTotalSize = humanize.BytesCustomCeil(uint64(u.UserSiYuanRepoSize), 2)
|
||||
hExchangeSize = humanize.BytesCustomCeil(uint64(u.UserSiYuanPointExchangeRepoSize), 2)
|
||||
hTrafficUploadSize = humanize.BytesCustomCeil(uint64(u.UserTrafficUpload), 2)
|
||||
hTrafficDownloadSize = humanize.BytesCustomCeil(uint64(u.UserTrafficDownload), 2)
|
||||
hTrafficAPIGet = humanize.SIWithDigits(u.UserTrafficAPIGet, 2, "")
|
||||
hTrafficAPIPut = humanize.SIWithDigits(u.UserTrafficAPIPut, 2, "")
|
||||
if u := Conf.GetUser(); nil != u {
|
||||
hTotalSize = humanize.BytesCustomCeil(uint64(u.UserSiYuanRepoSize), 2)
|
||||
hExchangeSize = humanize.BytesCustomCeil(uint64(u.UserSiYuanPointExchangeRepoSize), 2)
|
||||
hTrafficUploadSize = humanize.BytesCustomCeil(uint64(u.UserTrafficUpload), 2)
|
||||
hTrafficDownloadSize = humanize.BytesCustomCeil(uint64(u.UserTrafficDownload), 2)
|
||||
hTrafficAPIGet = humanize.SIWithDigits(u.UserTrafficAPIGet, 2, "")
|
||||
hTrafficAPIPut = humanize.SIWithDigits(u.UserTrafficAPIPut, 2, "")
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -298,6 +298,10 @@ func indexTreeInFilesystem(blockID string) error {
|
|||
}
|
||||
|
||||
func loadParentTree(tree *parse.Tree) (ret *parse.Tree) {
|
||||
if nil == tree {
|
||||
return
|
||||
}
|
||||
|
||||
boxDir := filepath.Join(util.DataDir, tree.Box)
|
||||
parentDir := path.Dir(tree.Path)
|
||||
if parentDir == boxDir || parentDir == "/" {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue