Prechádzať zdrojové kódy

Merge branch 'GhassenRjab-fix-files-access' into devel

FIX SECURITY ISSUE Files accessible without authentication.
Thanks to GhassenRjab ! Closes #1105
Lauri Ojansivu 8 rokov pred
rodič
commit
7e0bcacf91
6 zmenil súbory, kde vykonal 130 pridanie a 130 odobranie
  1. 8 2
      CHANGELOG.md
  2. 2 2
      i18n/de.i18n.json
  3. 3 3
      i18n/fr.i18n.json
  4. 53 53
      i18n/ja.i18n.json
  5. 58 58
      i18n/tr.i18n.json
  6. 6 12
      models/attachments.js

+ 8 - 2
CHANGELOG.md

@@ -1,10 +1,16 @@
 # Upcoming Wekan release
 
-This release fixes the following bugs:
+This release adds the following new features:
+
+ * [Add dwrensha's Sandstorm patch to Wekan so it does not need to be maintained
+    separately](https://github.com/wekan/wekan/commit/bda15daa78556223117a5846941aafd1212f14d3).
 
+and fixes the following bugs:
+
+* [FIX SECURITY ISSUE Files accessible without authentication](https://github.com/wekan/wekan/issues/1105);
 * [Fix showing card activity history in IE11](https://github.com/wekan/wekan/pull/1152).
 
-Thanks to GitHub user nztqa for contributions.
+Thanks to GitHub users GhassenRjab and nztqa for their contributions.
 
 # v0.30 2017-07-27 Wekan release
 

+ 2 - 2
i18n/de.i18n.json

@@ -36,8 +36,8 @@
     "activity-removed": "hat %s von %s entfernt",
     "activity-sent": "hat %s an %s gesendet",
     "activity-unjoined": "hat %s verlassen",
-    "activity-checklist-added": "hat Checkliste zu %s hinzugefügt",
-    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "activity-checklist-added": "hat eine Checkliste zu %s hinzugefügt",
+    "activity-checklist-item-added": "hat einen Punkt zur Checkliste '%s' in %s hinzugefügt",
     "add": "Hinzufügen",
     "add-attachment": "Datei anhängen",
     "add-board": "neues Board",

+ 3 - 3
i18n/fr.i18n.json

@@ -37,7 +37,7 @@
     "activity-sent": "a envoyé %s vers %s",
     "activity-unjoined": "a quitté %s",
     "activity-checklist-added": "a ajouté une checklist à %s",
-    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "activity-checklist-item-added": "a ajouté une checklist à '%s' dans %s",
     "add": "Ajouter",
     "add-attachment": "Ajouter une pièce jointe",
     "add-board": "Ajouter un tableau",
@@ -364,6 +364,6 @@
     "email-invite-register-text": "Cher __user__,\n\n__inviter__ vous invite à le rejoindre sur Wekan pour collaborer.\n\nVeuillez suivre le lien ci-dessous :\n__url__\n\nVotre code d'invitation est : __icode__\n\nMerci.",
     "error-invitation-code-not-exist": "Ce code d'invitation n'existe pas.",
     "error-notAuthorized": "Vous n'êtes pas autorisé à accéder à cette page.",
-    "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoing-webhooks": "Webhooks sortants",
+    "outgoingWebhooksPopup-title": "Webhooks sortants"
 }

+ 53 - 53
i18n/ja.i18n.json

@@ -1,23 +1,23 @@
 {
     "accept": "受け入れ",
-    "act-activity-notify": "[Wekan] Activity Notification",
-    "act-addAttachment": "attached __attachment__ to __card__",
-    "act-addComment": "commented on __card__: __comment__ ",
-    "act-createBoard": "created __board__ ",
-    "act-createCard": "added __card__ to __list__ ",
-    "act-createList": "added __list__ to __board__ ",
-    "act-addBoardMember": "added __member__ to __board__ ",
-    "act-archivedBoard": "archived __board__ ",
-    "act-archivedCard": "archived __card__",
-    "act-archivedList": "archived __list__",
-    "act-importBoard": "imported __board__",
-    "act-importCard": "imported __card__",
-    "act-importList": "imported __list__",
-    "act-joinMember": "added __member__ to __card__",
-    "act-moveCard": "moved __card__ from __oldList__ to __list__",
-    "act-removeBoardMember": "removed __member__ from __board__",
-    "act-restoredCard": "restored __card__ to __board__",
-    "act-unjoinMember": "removed __member__ from __card__",
+    "act-activity-notify": "[Wekan] アクティビティ通知",
+    "act-addAttachment": "__card__ に __attachment__ を添付しました",
+    "act-addComment": "__card__: __comment__ をコメントしました",
+    "act-createBoard": "__board__ を作成しました",
+    "act-createCard": "__list__ に __card__ を追加しました",
+    "act-createList": "__board__ に __list__ を追加しました",
+    "act-addBoardMember": "__board__ に __member__ を追加しました",
+    "act-archivedBoard": "__board__ をアーカイブしました",
+    "act-archivedCard": "__card__ をアーカイブしました",
+    "act-archivedList": "__list__ をアーカイブしました",
+    "act-importBoard": "__board__ をインポートしました",
+    "act-importCard": "__card__ をインポートしました",
+    "act-importList": "__list__ をインポートしました",
+    "act-joinMember": "__card__ に __member__ を追加しました",
+    "act-moveCard": "__card__ を __oldList__ から __list__ に 移動しました",
+    "act-removeBoardMember": "__board__ から __member__ を削除しました",
+    "act-restoredCard": "__card__ を __board__ にリストアしました",
+    "act-unjoinMember": "__card__ から __member__ を削除しました",
     "act-withBoardTitle": "[Wekan] __board__",
     "act-withCardTitle": "[__board__] __card__",
     "actions": "操作",
@@ -39,14 +39,14 @@
     "activity-checklist-added": "%s にチェックリストを追加しました",
     "activity-checklist-item-added": "added checklist item to '%s' in %s",
     "add": "追加",
-    "add-attachment": "Add Attachment",
-    "add-board": "Add Board",
-    "add-card": "Add Card",
-    "add-checklist": "Add Checklist",
+    "add-attachment": "添付ファイルを追加",
+    "add-board": "ボードを追加",
+    "add-card": "カードを追加",
+    "add-checklist": "チェックリストを追加",
     "add-checklist-item": "チェックリストに項目を追加",
     "add-cover": "カバーの追加",
-    "add-label": "Add Label",
-    "add-list": "Add List",
+    "add-label": "ラベルを追加",
+    "add-list": "リストを追加",
     "add-members": "メンバーの追加",
     "added": "追加しました",
     "addMemberPopup-title": "メンバー",
@@ -56,18 +56,18 @@
     "and-n-other-card": "And __count__ other card",
     "and-n-other-card_plural": "And __count__ other cards",
     "apply": "適用",
-    "app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
+    "app-is-offline": "現在オフラインです。ページを更新すると保存していないデータは失われます。",
     "archive": "アーカイブ",
     "archive-all": "すべてをアーカイブ",
     "archive-board": "ボードをアーカイブ",
     "archive-card": "カードをアーカイブ",
-    "archive-list": "Archive List",
+    "archive-list": "このリストをアーカイブ",
     "archive-selection": "選択したものをアーカイブ",
     "archiveBoardPopup-title": "ボードをアーカイブしますか?",
     "archived-items": "アーカイブされたアイテム",
-    "archived-boards": "Archived Boards",
-    "restore-board": "Restore Board",
-    "no-archived-boards": "No Archived Boards.",
+    "archived-boards": "アーカイブ済のボード",
+    "restore-board": "ボードをリストア",
+    "no-archived-boards": "アーカイブされたボードはありません",
     "archives": "アーカイブ",
     "assign-member": "メンバーの割当",
     "attached": "添付されました",
@@ -75,13 +75,13 @@
     "attachment-delete-pop": "添付ファイルの削除をすると取り消しできません。",
     "attachmentDeletePopup-title": "添付ファイルを削除しますか?",
     "attachments": "添付ファイル",
-    "auto-watch": "Automatically watch boards when they are created",
-    "avatar-too-big": "The avatar is too large (70KB max)",
+    "auto-watch": "作成されたボードを自動的にウォッチする",
+    "avatar-too-big": "アバターが大きすぎます(最大70KB)",
     "back": "戻る",
     "board-change-color": "色の変更",
     "board-nb-stars": "%s stars",
     "board-not-found": "ボードが見つかりません",
-    "board-private-info": "This board will be <strong>private</strong>.",
+    "board-private-info": "ボードは <strong>非公開</strong> になります。",
     "board-public-info": "ボードは公開されます。",
     "boardChangeColorPopup-title": "ボードの背景を変更",
     "boardChangeTitlePopup-title": "ボード名の変更",
@@ -140,13 +140,13 @@
     "color-sky": "空",
     "color-yellow": "黄",
     "comment": "コメント",
-    "comment-placeholder": "Write Comment",
-    "comment-only": "Comment only",
-    "comment-only-desc": "Can comment on cards only.",
+    "comment-placeholder": "コメントを書く",
+    "comment-only": "コメントのみ",
+    "comment-only-desc": "カードにのみコメント可能",
     "computer": "コンピューター",
     "create": "作成",
     "createBoardPopup-title": "ボードの作成",
-    "chooseBoardSourcePopup-title": "Import board",
+    "chooseBoardSourcePopup-title": "ボードをインポート",
     "createLabelPopup-title": "ラベルの作成",
     "current": "現在",
     "date": "日付",
@@ -188,7 +188,7 @@
     "error-json-schema": "Your JSON data does not include the proper information in the correct format",
     "error-list-doesNotExist": "This list does not exist",
     "error-user-doesNotExist": "ユーザーが存在しません",
-    "error-user-notAllowSelf": "You can not invite yourself",
+    "error-user-notAllowSelf": "自分を招待することはできません。",
     "error-user-notCreated": "ユーザーが作成されていません",
     "error-username-taken": "このユーザ名は既に使用されています",
     "export-board": "ボードのエクスポート",
@@ -206,15 +206,15 @@
     "headerBarCreateBoardPopup-title": "ボードの作成",
     "home": "ホーム",
     "import": "インポート",
-    "import-board": "import board",
-    "import-board-c": "Import board",
+    "import-board": "ボードをインポート",
+    "import-board-c": "ボードをインポート",
     "import-board-title-trello": "Trelloからボードをインポート",
-    "import-board-title-wekan": "Import board from Wekan",
+    "import-board-title-wekan": "Wekanからボードをインポート",
     "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
-    "from-trello": "From Trello",
-    "from-wekan": "From Wekan",
+    "from-trello": "Trelloから",
+    "from-wekan": "Wekanから",
     "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
-    "import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
+    "import-board-instruction-wekan": "Wekanボード → 'Menu' → 'Export board' → ダウンロードされたファイルからテキストをコピーする。",
     "import-json-placeholder": "Paste your valid JSON data here",
     "import-map-members": "メンバーを紐付け",
     "import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
@@ -242,7 +242,7 @@
     "listActionPopup-title": "操作一覧",
     "listImportCardPopup-title": "Trelloのカードをインポート",
     "listMorePopup-title": "さらに見る",
-    "link-list": "Link to this list",
+    "link-list": "このリストへのリンク",
     "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
     "list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
     "lists": "リスト",
@@ -252,7 +252,7 @@
     "memberMenuPopup-title": "メンバー設定",
     "members": "メンバー",
     "menu": "メニュー",
-    "move-selection": "Move selection",
+    "move-selection": "選択したものを移動",
     "moveCardPopup-title": "カードの移動",
     "moveCardToBottom-title": "最下部に移動",
     "moveCardToTop-title": "先頭に移動",
@@ -289,8 +289,8 @@
     "quick-access-description": "Star a board to add a shortcut in this bar.",
     "remove-cover": "カバーの削除",
     "remove-from-board": "ボードから外す",
-    "remove-label": "Remove Label",
-    "listDeletePopup-title": "Delete List ?",
+    "remove-label": "ラベルの削除",
+    "listDeletePopup-title": "リストを削除しますか?",
     "remove-member": "メンバーを外す",
     "remove-member-from-card": "カードから外す",
     "remove-member-pop": "__boardTitle__ から __name__ (__username__) を外しますか?メンバーはこのボードのすべてのカードから外れ、通知を受けます。",
@@ -300,7 +300,7 @@
     "restore": "Restore",
     "save": "保存",
     "search": "検索",
-    "select-color": "Select Color",
+    "select-color": "色を選択",
     "shortcut-assign-self": "自分をこのカードに割り当てる",
     "shortcut-autocomplete-emoji": "Autocomplete emoji",
     "shortcut-autocomplete-members": "Autocomplete members",
@@ -343,12 +343,12 @@
     "what-to-do": "何をしたいですか?",
     "admin-panel": "管理パネル",
     "settings": "設定",
-    "people": "People",
+    "people": "メンバー",
     "registration": "登録",
     "disable-self-registration": "自己登録を無効化",
     "invite": "招待",
-    "invite-people": "Invite People",
-    "to-boards": "To board(s)",
+    "invite-people": "メンバーを招待",
+    "to-boards": "ボードへ",
     "email-addresses": "Emailアドレス",
     "smtp-host-description": "Emailを処理するSMTPサーバーのアドレス",
     "smtp-port-description": "SMTPサーバーがEmail送信に使用するポート",
@@ -361,9 +361,9 @@
     "send-from": "送信元",
     "invitation-code": "招待コード",
     "email-invite-register-subject": "__inviter__ sent you an invitation",
-    "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
+    "email-invite-register-text": " __user__ さん\n\n__inviter__ があなたをWekanに招待しました。\n\n以下のリンクをクリックしてください。\n__url__\n\nあなたの招待コードは、 __icode__ です。\n\nよろしくお願いします。",
     "error-invitation-code-not-exist": "招待コードが存在しません",
-    "error-notAuthorized": "You are not authorized to view this page.",
+    "error-notAuthorized": "このページを参照する権限がありません。",
     "outgoing-webhooks": "Outgoing Webhooks",
     "outgoingWebhooksPopup-title": "Outgoing Webhooks"
 }

+ 58 - 58
i18n/tr.i18n.json

@@ -16,7 +16,7 @@
     "act-joinMember": "__member__ kullanıcısnı __card__ kartına ekledi",
     "act-moveCard": "__card__ kartını __oldList__ listesinden __list__ listesine taşıdı",
     "act-removeBoardMember": "__board__ panosundan __member__ kullanıcısını çıkarttı",
-    "act-restoredCard": "__card__ kartını __board__ panosuna geri döndürdü",
+    "act-restoredCard": "__card__ kartını __board__ panosuna geri getirdi",
     "act-unjoinMember": "__member__ kullanıcısnı __card__ kartından çıkarttı",
     "act-withBoardTitle": "[Wekan] __board__",
     "act-withCardTitle": "[__board__] __card__",
@@ -24,11 +24,11 @@
     "activities": "Etkinlikler",
     "activity": "Etkinlik",
     "activity-added": "%s içine %s ekledi",
-    "activity-archived": "%s arşivledi",
+    "activity-archived": "%s öğesini arşivledi",
     "activity-attached": "%s içine %s ekledi",
-    "activity-created": "%s oluşturdu",
+    "activity-created": "%s öğesini oluşturdu",
     "activity-excluded": "%s içinden %s çıkarttı",
-    "activity-imported": "%s i %s içine taşıdı, kaynağı %s",
+    "activity-imported": "%s kaynağından %s öğesini %s öğesinin içine taşıdı ",
     "activity-imported-board": "%s i %s içinden aktardı",
     "activity-joined": "şuna katıldı: %s",
     "activity-moved": "%s i %s içinden %s içine taşıdı",
@@ -36,14 +36,14 @@
     "activity-removed": "%s i %s ten kaldırdı",
     "activity-sent": "%s i %s e gönderdi",
     "activity-unjoined": "%s içinden ayrıldı",
-    "activity-checklist-added": "%s içine liste ekledi",
-    "activity-checklist-item-added": "added checklist item to '%s' in %s",
+    "activity-checklist-added": "%s içine yapılacak listesi ekledi",
+    "activity-checklist-item-added": "%s içinde %s yapılacak listesine öğe ekledi",
     "add": "Ekle",
     "add-attachment": "Ek Ekle",
     "add-board": "Pano Ekle",
     "add-card": "Kart Ekle",
     "add-checklist": "Yapılacak Listesi Ekle",
-    "add-checklist-item": "Yapılacak listes yeni bir eleman ekle",
+    "add-checklist-item": "Yapılacak listesine yeni bir öğe ekle",
     "add-cover": "Kapak resmi ekle",
     "add-label": "Etiket Ekle",
     "add-list": "Liste Ekle",
@@ -51,7 +51,7 @@
     "added": "Eklendi",
     "addMemberPopup-title": "Üyeler",
     "admin": "Yönetici",
-    "admin-desc": "Kartları görüntüler ve düzenler, üyeleri çıkarır ve pano ayarlarını değiştirir.",
+    "admin-desc": "Kartları görüntüleyebilir ve düzenleyebilir, üyeleri çıkarabilir ve pano ayarlarını değiştirebilir.",
     "all-boards": "Tüm panolar",
     "and-n-other-card": "Ve __count__ diğer kart",
     "and-n-other-card_plural": "Ve __count__ diğer kart",
@@ -66,7 +66,7 @@
     "archiveBoardPopup-title": "Pano arşivlensin mi?",
     "archived-items": "Arşivlenmiş Öğeler",
     "archived-boards": "Arşivlenmiş Panolar",
-    "restore-board": "Panoyu Tekrar Yükle",
+    "restore-board": "Panoyu Geri Getir",
     "no-archived-boards": "Arşivlenmiş Pano Yok.",
     "archives": "Arşiv",
     "assign-member": "Üye ata",
@@ -96,15 +96,15 @@
     "card-delete-notice": "Silme işlemi kalıcıdır. Bu kartla ilişkili tüm eylemleri kaybedersiniz.",
     "card-delete-pop": "Son hareketler alanındaki tüm veriler silinecek, ayrıca bu kartı yeniden açamayacaksın. Bu işlemin geri dönüşü yok.",
     "card-delete-suggest-archive": "Kartı panodan kaldırıp, buna rağmen aktivitelerini saklamak istiyorsan kartı arşivleyebilirsin.",
-    "card-due": "şu zamanda:",
-    "card-due-on": "şu zamanda:",
+    "card-due": "Bitiş",
+    "card-due-on": "Bitiş tarihi:",
     "card-edit-attachments": "Ek dosyasını düzenle",
     "card-edit-labels": "Etiketleri düzenle",
     "card-edit-members": "Üyeleri düzenle",
     "card-labels-title": "Bu kart için etiketleri düzenle",
     "card-members-title": "Karta pano içindeki üyeleri ekler veya çıkartır.",
     "card-start": "Başlama",
-    "card-start-on": "Başlama:",
+    "card-start-on": "Başlama tarihi:",
     "cardAttachmentsPopup-title": "Eklenme",
     "cardDeletePopup-title": "Kart Silinsin mi?",
     "cardDetailsActionsPopup-title": "Kart işlemleri",
@@ -122,13 +122,13 @@
     "changePasswordPopup-title": "Parola Değiştir",
     "changePermissionsPopup-title": "Yetkileri Değiştirme",
     "changeSettingsPopup-title": "Ayarları değiştir",
-    "checklists": "Doğrulama Listeleri",
+    "checklists": "Yapılacak Listeleri",
     "click-to-star": "Bu panoyu yıldızlamak için tıkla.",
     "click-to-unstar": "Bu panunun yıldızını kaldırmak için tıkla.",
-    "clipboard": "Panodan (clipboard) veya sürükle ve bırak ile",
+    "clipboard": "Yapıştır veya sürükleyip bırak",
     "close": "Kapat",
     "close-board": "Panoyu kapat",
-    "close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
+    "close-board-pop": "Arşivlenen panoyu ana sayfada yer alan başlıktaki menüden \"Arşivler\" düğmesini tıklayarak geri getirebilirsiniz.",
     "color-black": "siyah",
     "color-blue": "mavi",
     "color-green": "yeşil",
@@ -157,7 +157,7 @@
     "description": "Açıklama",
     "disambiguateMultiLabelPopup-title": "Etiket işlemini izah et",
     "disambiguateMultiMemberPopup-title": "Üye işlemini izah et",
-    "discard": "ıskartaya çıkart",
+    "discard": "At",
     "done": "Tamam",
     "download": "İndir",
     "edit": "Düzenle",
@@ -169,8 +169,8 @@
     "editNotificationPopup-title": "Bildirimi değiştir",
     "editProfilePopup-title": "Profili Düzenle",
     "email": "E-posta",
-    "email-enrollAccount-subject": "__siteName__ üzerinde hesabın oluşturuldu",
-    "email-enrollAccount-text": "Merhaba __user__,\n\nBu servisi kullanmaya başlamak için aşağıdaki linke tıklamalısın\n\n__url__\n\nTeşekkürler.",
+    "email-enrollAccount-subject": "Hesabınız __siteName__ üzerinde oluşturuldu",
+    "email-enrollAccount-text": "Merhaba __user__,\n\nBu servisi kullanmaya başlamak için aşağıdaki linke tıklamalısın:\n\n__url__\n\nTeşekkürler.",
     "email-fail": "E-posta gönderimi başarısız",
     "email-invalid": "Geçersiz e-posta",
     "email-invite": "E-posta ile davet et",
@@ -181,9 +181,9 @@
     "email-sent": "E-posta gönderildi",
     "email-verifyEmail-subject": "__siteName__ üzerindeki e-posta adresini doğrulama",
     "email-verifyEmail-text": "Merhaba __user__,\n\nHesap e-posta adresini doğrulamak için aşağıdaki linke tıklaman yeterli.\n\n__url__\n\nTeşekkürler.",
-    "error-board-doesNotExist": "Erişmeye çalıştığın pano bulunamadı",
+    "error-board-doesNotExist": "Pano bulunamadı",
     "error-board-notAdmin": "Bu işlemi yapmak için pano yöneticisi olmalısın.",
-    "error-board-notAMember": "Bu işlemi yapmak için pano içindeki bir üye olmalısın.",
+    "error-board-notAMember": "Bu işlemi yapmak için panoya üye olmalısın.",
     "error-json-malformed": "Girilen metin geçerli bir JSON formatında değil",
     "error-json-schema": "Girdiğin JSON metni tüm bilgileri doğru biçimde barındırmıyor",
     "error-list-doesNotExist": "Liste bulunamadı",
@@ -194,7 +194,7 @@
     "export-board": "Panoyu dışarı aktar",
     "filter": "Filtre",
     "filter-cards": "Kartları Filtrele",
-    "filter-clear": "Süzgeci temizle",
+    "filter-clear": "Filtreyi temizle",
     "filter-no-label": "Etiket yok",
     "filter-no-member": "Üye yok",
     "filter-on": "Filtre aktif",
@@ -206,15 +206,15 @@
     "headerBarCreateBoardPopup-title": "Pano Oluşturma",
     "home": "Ana Sayfa",
     "import": "İçeri aktar",
-    "import-board": "import board",
+    "import-board": "panoyu içe aktar",
     "import-board-c": "Panoyu içe aktar",
     "import-board-title-trello": "Trello'dan panoyu içeri aktar",
     "import-board-title-wekan": "Wekan'dan panoyu içe aktar",
-    "import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
+    "import-sandstorm-warning": "İçe aktarılan pano şu anki panonun verilerinin üzerine yazılacak ve var olan veriler silinecek.",
     "from-trello": "Trello'dan",
     "from-wekan": "Wekan'dan",
-    "import-board-instruction-trello": "Trello panonuzda, 'Menü'ye gidip, ardıdan, 'daha fazlası' na tıklayın, 'Yazdır ve Çıktı al' sayfasından 'JSON biçiminde çıktı al' diyip, çıkan metni buraya kopyalayın.",
-    "import-board-instruction-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
+    "import-board-instruction-trello": "Trello panonuzda 'Menü'ye gidip 'Daha fazlası'na tıklayın, ardından 'Yazdır ve Çıktı Al'ı seçip 'JSON biçiminde çıktı al' diyerek çıkan metni buraya kopyalayın.",
+    "import-board-instruction-wekan": "Wekan panonuzda önce Menü'yü, ardından \"Panoyu dışa aktar\"ı seçip bilgisayarınıza indirilen dosyanın içindeki metni kopyalayın.",
     "import-json-placeholder": "Geçerli JSON verisini buraya yapıştırın",
     "import-map-members": "Üyeleri eşleştirme",
     "import-members-map": "İçe aktardığın panoda bazı kullanıcılar var. Lütfen bu kullanıcıları Wekan panosundaki kullanıcılarla eşleştirin.",
@@ -229,10 +229,10 @@
     "keyboard-shortcuts": "Klavye kısayolları",
     "label-create": "Etiket Oluşturma",
     "label-default": "%s etiket (varsayılan)",
-    "label-delete-pop": "Geri dönüşü yok. Tüm kartlardan bu etiket kaldırılacaktır ve geçmişini yok edecektir.",
+    "label-delete-pop": "Bu işlem geri alınamaz. Bu etiket tüm kartlardan kaldırılacaktır ve geçmişi yok edecektir.",
     "labels": "Etiketler",
     "language": "Dil",
-    "last-admin-desc": "Rolleri değiştiremezsiniz, çünkü burada en az bir yönetici olmalıdır.",
+    "last-admin-desc": "En az bir yönetici olması gerektiğinden rolleri değiştiremezsiniz.",
     "leave-board": "Panodan ayrıl",
     "link-card": "Bu kartın bağlantısı",
     "list-archive-cards": "Bu liste içindeki tüm kartları arşivle",
@@ -243,13 +243,13 @@
     "listImportCardPopup-title": "Bir Trello kartını içeri aktar",
     "listMorePopup-title": "Daha",
     "link-list": "Listeye doğrudan bağlantı",
-    "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
-    "list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
+    "list-delete-pop": "Etkinlik akışınızdaki tüm eylemler geri kurtarılamaz şekilde kaldırılacak. Bu işlem geri alınamaz.",
+    "list-delete-suggest-archive": "Bir listeyi etkinliklerini koruyarak panodan kaldırmak için arşivleyebilirsiniz.",
     "lists": "Listeler",
     "log-out": "Oturum Kapat",
     "log-in": "Oturum Aç",
     "loginPopup-title": "Oturum Aç",
-    "memberMenuPopup-title": "Üye ayarları",
+    "memberMenuPopup-title": "Üye Ayarları",
     "members": "Üyeler",
     "menu": "Menü",
     "move-selection": "Seçimi taşı",
@@ -260,20 +260,20 @@
     "multi-selection": "Çoklu seçim",
     "multi-selection-on": "Çoklu seçim açık",
     "muted": "Sessiz",
-    "muted-info": "Bu panodaki değişiklikler hakkında bildirim almayacaksınız",
+    "muted-info": "Bu panodaki hiçbir değişiklik hakkında bildirim almayacaksınız",
     "my-boards": "Panolarım",
     "name": "Adı",
     "no-archived-cards": "Arşivlenmiş kart bulunamadı.",
     "no-archived-lists": "Arşivlenmiş liste bulunamadı.",
     "no-results": "Sonuç yok",
     "normal": "Normal",
-    "normal-desc": "Kartları görüntüler ve düzenler. Ayarları değiştiremez.",
-    "not-accepted-yet": "Davetiye henüz kabul edilmemiş",
-    "notify-participate": "Oluşturduğunuz veya üye olduğunuz tüm kartlar hakkında bildirim alma",
-    "notify-watch": "Takip ettiğiniz tüm pano, liste ve kartlar hakkında bildirim alma",
+    "normal-desc": "Kartları görüntüleyebilir ve düzenleyebilir. Ayarları değiştiremez.",
+    "not-accepted-yet": "Davet henüz kabul edilmemiş",
+    "notify-participate": "Oluşturduğunuz veya üye olduğunuz tüm kartlar hakkında bildirim al",
+    "notify-watch": "Takip ettiğiniz tüm pano, liste ve kartlar hakkında bildirim al",
     "optional": "isteğe bağlı",
     "or": "veya",
-    "page-maybe-private": "Bu sayfa özel olabilir. <a href='%s'>Oturum açarak</a> görülebilir.",
+    "page-maybe-private": "Bu sayfa gizli olabilir. <a href='%s'>Oturum açarak</a> görmeyi deneyin.",
     "page-not-found": "Sayda bulunamadı.",
     "password": "Parola",
     "paste-or-dragdrop": "Dosya eklemek için yapıştırabilir, veya (eğer resimse) sürükle bırak yapabilirsiniz",
@@ -281,51 +281,51 @@
     "preview": "Önizleme",
     "previewAttachedImagePopup-title": "Önizleme",
     "previewClipboardImagePopup-title": "Önizleme",
-    "private": "Özel",
-    "private-desc": "Bu pano özel. Sadece panoya ekli kişiler görüntüleyebilir ve düzenleyebilir.",
+    "private": "Gizli",
+    "private-desc": "Bu pano gizli. Sadece panoya ekli kişiler görüntüleyebilir ve düzenleyebilir.",
     "profile": "Kullanıcı Sayfası",
     "public": "Genel",
     "public-desc": "Bu pano genel. Bağlantı adresi ile herhangi bir kimseye görünür ve Google gibi arama motorlarında gösterilecektir. Panoyu, sadece eklenen kişiler düzenleyebilir.",
     "quick-access-description": "Bu bara kısayol olarak bir pano eklemek için panoyu yıldızlamalısınız",
-    "remove-cover": "Kapak resmini kaldır",
-    "remove-from-board": "Panodan kaldır",
+    "remove-cover": "Kapak Resmini Kaldır",
+    "remove-from-board": "Panodan Kaldır",
     "remove-label": "Etiketi Kaldır",
     "listDeletePopup-title": "Liste silinsin mi?",
     "remove-member": "Üyeyi Çıkar",
     "remove-member-from-card": "Karttan Çıkar",
-    "remove-member-pop": "__boardTitle__ panosundan __name__ (__username__) çıkarılsın mı? Üye, bu panodaki tüm kartlardan çıkarılacak ve bir bildirim alacak.",
+    "remove-member-pop": "__boardTitle__ panosundan __name__ (__username__) çıkarılsın mı? Üye, bu panodaki tüm kartlardan çıkarılacak. Panodan çıkarıldığı üyeye bildirilecektir.",
     "removeMemberPopup-title": "Üye çıkarılsın mı?",
     "rename": "Yeniden adlandır",
-    "rename-board": "Pano Adı Değiştirme",
-    "restore": "Geri yükleme",
+    "rename-board": "Panonun Adını Değiştir",
+    "restore": "Geri Getir",
     "save": "Kaydet",
     "search": "Arama",
     "select-color": "Renk Seç",
-    "shortcut-assign-self": "Kendini karta ekle",
-    "shortcut-autocomplete-emoji": "Otomatik tamamlayan emoji yüz ifadeleri",
-    "shortcut-autocomplete-members": "Otomatik tamamlayan üye isimleri",
+    "shortcut-assign-self": "Kendini karta ata",
+    "shortcut-autocomplete-emoji": "Emojileri otomatik tamamla",
+    "shortcut-autocomplete-members": "Üye isimlerini otomatik tamamla",
     "shortcut-clear-filters": "Tüm filtreleri temizle",
     "shortcut-close-dialog": "Diyaloğu kapat",
     "shortcut-filter-my-cards": "Kartlarımı filtrele",
     "shortcut-show-shortcuts": "Kısayollar listesini getir",
     "shortcut-toggle-filterbar": "Filtre kenar çubuğunu aç/kapa",
     "shortcut-toggle-sidebar": "Pano kenar çubuğunu aç/kapa",
-    "show-cards-minimum-count": "Eğer listede şu kadar sayıdan fazla şey varsa kart sayısını göster: ",
-    "sidebar-open": "Kenar çubuğunu aç",
-    "sidebar-close": "Kenar çubuğunu kapat",
+    "show-cards-minimum-count": "Eğer listede şu sayıdan fazla öğe varsa kart sayısını göster: ",
+    "sidebar-open": "Kenar Çubuğunu Aç",
+    "sidebar-close": "Kenar Çubuğunu Kapat",
     "signupPopup-title": "Bir Hesap Oluştur",
-    "star-board-title": "Bu panoyu yıldızlamak için tıkla. Pano listesinin en üstünde gösterilir.",
+    "star-board-title": "Bu panoyu yıldızlamak için tıkla. Yıldızlı panolar pano listesinin en üstünde gösterilir.",
     "starred-boards": "Yıldızlı Panolar",
-    "starred-boards-description": "Yıldızlanmış panolar, pano listenin en üstünde gösterilir.",
+    "starred-boards-description": "Yıldızlanmış panolar, pano listesinin en üstünde gösterilir.",
     "subscribe": "Abone ol",
     "team": "Takım",
     "this-board": "bu panoyu",
     "this-card": "bu kart",
     "time": "Zaman",
     "title": "Başlık",
-    "tracking": "Takp",
+    "tracking": "Takip",
     "tracking-info": "Oluşturduğunuz veya üyesi olduğunuz tüm kartlardaki değişiklikler size bildirim olarak gelecek.",
-    "unassign-member": "Üyeyi çıkart",
+    "unassign-member": "Üyeye atamayı kaldır",
     "unsaved-description": "Kaydedilmemiş bir açıklama metnin bulunmakta",
     "unwatch": "Takibi bırak",
     "upload": "Yükle",
@@ -336,8 +336,8 @@
     "warn-list-archived": "dikkat: bu kart arşivlenmiş bir liste içinde",
     "watch": "Takip Et",
     "watching": "Takip Ediliyor",
-    "watching-info": "Bu pano hakkındaki tüm değişiklikler hakkında tarafınıza bildirim gelecektir",
-    "welcome-board": "Panoya Hoş Geldiniz",
+    "watching-info": "Bu pano hakkındaki tüm değişiklikler hakkında bildirim alacaksınız",
+    "welcome-board": "Hoş Geldiniz Panosu",
     "welcome-list1": "Temel",
     "welcome-list2": "Gelişmiş",
     "what-to-do": "Ne yapmak istiyorsunuz?",
@@ -352,7 +352,7 @@
     "email-addresses": "E-posta adresleri",
     "smtp-host-description": "E-posta gönderimi yapan SMTP sunucu adresi",
     "smtp-port-description": "E-posta gönderimi yapan SMTP sunucu portu",
-    "smtp-tls-description": "SMTP mail sunucusu için TLS kriptolama desteği açılsın",
+    "smtp-tls-description": "SMTP mail sunucusu için TLS kriptolama desteği açılsın",
     "smtp-host": "SMTP sunucu adresi",
     "smtp-port": "SMTP portu",
     "smtp-username": "Kullanıcı adı",
@@ -364,6 +364,6 @@
     "email-invite-register-text": "Sevgili __user__,\n\n__inviter__ sizi beraber çalışabilmek için Wekan'a davet etti.\n\nLütfen aşağıdaki linke tıklayın:\n__url__\n\nDavetiye kodunuz: __icode__\n\nTeşekkürler.",
     "error-invitation-code-not-exist": "Davetiye kodu bulunamadı",
     "error-notAuthorized": "Bu sayfayı görmek için yetkiniz yok.",
-    "outgoing-webhooks": "Outgoing Webhooks",
-    "outgoingWebhooksPopup-title": "Outgoing Webhooks"
+    "outgoing-webhooks": "Dışarı giden bağlantılar",
+    "outgoingWebhooksPopup-title": "Dışarı giden bağlantılar"
 }

+ 6 - 12
models/attachments.js

@@ -21,19 +21,13 @@ if (Meteor.isServer) {
     // We authorize the attachment download either:
     // - if the board is public, everyone (even unconnected) can download it
     // - if the board is private, only board members can download it
-    //
-    // XXX We have a bug with the `userId` verification:
-    //
-    //   https://github.com/CollectionFS/Meteor-CollectionFS/issues/449
-    //
     download(userId, doc) {
-      const query = {
-        $or: [
-          { 'members.userId': userId },
-          { permission: 'public' },
-        ],
-      };
-      return Boolean(Boards.findOne(doc.boardId, query));
+      const board = Boards.findOne(doc.boardId);
+      if (board.isPublic()) {
+        return true;
+      } else {
+        return board.hasMember(userId);
+      }
     },
 
     fetch: ['boardId'],