tor-commits
Threads by month
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
August 2015
- 15 participants
- 1323 discussions
[translation/liveusb-creator_completed] Update translations for liveusb-creator_completed
by translation@torproject.org 17 Aug '15
by translation@torproject.org 17 Aug '15
17 Aug '15
commit 9a4193f79a584a4ea5fbb85e12b27d4e5f581f68
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Aug 17 08:45:25 2015 +0000
Update translations for liveusb-creator_completed
---
fa/fa.po | 213 +++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 115 insertions(+), 98 deletions(-)
diff --git a/fa/fa.po b/fa/fa.po
index b53fe9f..cb59d73 100644
--- a/fa/fa.po
+++ b/fa/fa.po
@@ -6,6 +6,7 @@
# zmix <check_people_status(a)yahoo.com>, 2013
# Mohammad Hossein <desmati(a)gmail.com>, 2014
# Eric D Smallberg <esmallberg(a)ndi.org>, 2013
+# Farshad Sadri <farshad.sadri(a)gmail.com>, 2015
# Gilberto, 2015
# zendegi <inactive+zendegi(a)transifex.com>, 2013
# Hamidreza Rajabzadeh <hamidonline.behbahan(a)gmail.com>, 2014
@@ -18,37 +19,45 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-02-11 19:14+0100\n"
-"PO-Revision-Date: 2015-02-14 09:01+0000\n"
-"Last-Translator: Gilberto\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/torproject/language/fa/)\n"
+"POT-Creation-Date: 2015-08-10 16:01+0200\n"
+"PO-Revision-Date: 2015-08-17 08:27+0000\n"
+"Last-Translator: Farshad Sadri <farshad.sadri(a)gmail.com>\n"
+"Language-Team: Persian (http://www.transifex.com/otf/torproject/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fa\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+#: ../liveusb/gui.py:451
+msgid "\"Clone & Install\""
+msgstr "\"تکثیر و نصب\""
+
+#: ../liveusb/gui.py:453
+msgid "\"Install from ISO\""
+msgstr "\"نصب از ISO\""
+
#: ../liveusb/dialog.py:150 ../liveusb/launcher_ui.py:149
#, python-format
msgid "%(distribution)s Installer"
msgstr "نصب کنندهی %(distribution)s"
-#: ../liveusb/gui.py:775
+#: ../liveusb/gui.py:804
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s انتخاب شده"
-#: ../liveusb/gui.py:425
+#: ../liveusb/gui.py:424
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../liveusb/gui.py:431
+#: ../liveusb/gui.py:430
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../liveusb/creator.py:1063
+#: ../liveusb/creator.py:1097
#, python-format
msgid "%s already bootable"
msgstr "%s از پیش قابل راهاندازی"
@@ -105,16 +114,16 @@ msgid ""
"persist after a reboot."
msgstr "با تخصیص یک فضای اضافی روی دستگاه یواسبی تان، این امکان را خواهید داشت که تغییراتی را به صورت همیشگی روی سیستمعامل زندهی آن اعمال کنید. در غیر این صورت هر تغییری که روی آن دهید با یکبار راهاندازی مجدد از بین خواهد رفت."
-#: ../liveusb/creator.py:1162 ../liveusb/creator.py:1425
+#: ../liveusb/creator.py:1196 ../liveusb/creator.py:1459
#, python-format
msgid "Calculating the SHA1 of %s"
msgstr "محاسبه SHA1 از %s"
-#: ../liveusb/creator.py:1373
+#: ../liveusb/creator.py:1407
msgid "Cannot find"
msgstr "یافت نمیشود"
-#: ../liveusb/creator.py:556
+#: ../liveusb/creator.py:560
#, python-format
msgid "Cannot find device %s"
msgstr "وسیله ی %s یافت نشد"
@@ -133,12 +142,12 @@ msgid ""
"Upgrade"
msgstr "کپی\\n&&\\به روزرسانی"
-#: ../liveusb/creator.py:408
+#: ../liveusb/creator.py:417
#, python-format
msgid "Creating %sMB persistent overlay"
msgstr "ایجاد %sMB پوشش پایدار"
-#: ../liveusb/gui.py:553
+#: ../liveusb/gui.py:582
msgid ""
"Device is not yet mounted, so we cannot determine the amount of free space."
msgstr "وسیله هنوز نصب نشده، نمیتوان اندازهی فضای خالی را تعیین کرد."
@@ -148,58 +157,58 @@ msgstr "وسیله هنوز نصب نشده، نمیتوان اندازه
msgid "Download %(distribution)s"
msgstr "دریافت %(distribution)s"
-#: ../liveusb/gui.py:749
+#: ../liveusb/gui.py:778
msgid "Download complete!"
msgstr "دانلود کامل شد!"
-#: ../liveusb/gui.py:753
+#: ../liveusb/gui.py:782
msgid "Download failed: "
msgstr "دانلود نا موفق:"
-#: ../liveusb/gui.py:88
+#: ../liveusb/gui.py:89
#, python-format
msgid "Downloading %s..."
msgstr "در حال دانلود %s..."
-#: ../liveusb/creator.py:1158
+#: ../liveusb/creator.py:1192
msgid "Drive is a loopback, skipping MBR reset"
msgstr "درایو از نوع Loopback است. راهاندازی دوباره \"رکورد راهاندازی اصلی\" MBR را رد کنید."
-#: ../liveusb/creator.py:827
+#: ../liveusb/creator.py:837
#, python-format
msgid "Entering unmount_device for '%(device)s'"
msgstr "وارد کردن دستگاه هاي وصل نشده براي '%(device)s'"
-#: ../liveusb/creator.py:1238
+#: ../liveusb/creator.py:1272
msgid "Error probing device"
msgstr "دستگاه جستجوی خطا"
-#: ../liveusb/gui.py:212
+#: ../liveusb/gui.py:213
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr "خطا: امکان تنظیم کردن نام دستگاه شما نیست و یا خواندن UUID دستگاه شما ممکن نبود. نمی توان ادامه داد."
-#: ../liveusb/creator.py:384
+#: ../liveusb/creator.py:393
msgid ""
"Error: The SHA1 of your Live CD is invalid. You can run this program with "
"the --noverify argument to bypass this verification check."
msgstr "خطا: مقداری SHA1 سیدی لایو نامعتبر است. شما می توانید این برنامه را با آرگومان --noverify اجرا کنید تا از این کنترل کردن عبور کند."
-#: ../liveusb/creator.py:147
+#: ../liveusb/creator.py:155
msgid "Extracting live image to the target device..."
msgstr "در حال باز کردن فایل نصب به روی دستگاه مقصد..."
-#: ../liveusb/creator.py:1106
+#: ../liveusb/creator.py:1140
#, python-format
msgid "Formatting %(device)s as FAT32"
msgstr "فرمت کردن %(device)s به صورت FAT32"
-#: ../liveusb/creator.py:142
+#: ../liveusb/creator.py:150
msgid "ISO MD5 checksum passed"
msgstr "موفقیت در کنترل ISO MD5"
-#: ../liveusb/creator.py:140
+#: ../liveusb/creator.py:148
msgid "ISO MD5 checksum verification failed"
msgstr "عدم موفقیت در بازبینی کنترل ISO MD5"
@@ -213,73 +222,81 @@ msgstr "اگر یک Live ISO موجود را انتخاب نکنید، نسخه
msgid "Install Tails"
msgstr "نصب تیلز"
-#: ../liveusb/gui.py:616
+#: ../liveusb/gui.py:645
msgid "Installation complete!"
msgstr "عمليات نصب به پايان رسيد!"
-#: ../liveusb/gui.py:264
+#: ../liveusb/gui.py:265
#, python-format
msgid "Installation complete! (%s)"
msgstr "عمليات نصب به پايان رسيد! (%s)"
-#: ../liveusb/gui.py:617
+#: ../liveusb/gui.py:646
msgid "Installation was completed. Press OK to close this program."
msgstr "عمليات نصب به پايان رسيد. دكمه OK را براي بستن برنامه بزنيد."
-#: ../liveusb/creator.py:963 ../liveusb/creator.py:1279
+#: ../liveusb/creator.py:990 ../liveusb/creator.py:1313
msgid "Installing bootloader..."
msgstr "نصب بوت لودر..."
-#: ../liveusb/gui.py:269
+#: ../liveusb/gui.py:454
+#, python-format
+msgid ""
+"It is impossible to upgrade the device %(pretty_name)s because it was not "
+"created using Tails Installer. You should instead use %(action)s to upgrade "
+"Tails on this device."
+msgstr "ارتقاء دستگاه %(pretty_name)s غیر ممکن است، زیرا با استفاده از نصبکننده تیلز ایجاد نشده است. شما باید از %(action)s برای ارتقاء تیلز روی این دستگاه استفاده کنید."
+
+#: ../liveusb/gui.py:270
msgid "LiveUSB creation failed!"
msgstr "نصب سیستم عامل بر روی «دستگاه یو اس بی» شما با خطا مواجه شد!"
-#: ../liveusb/creator.py:1374
+#: ../liveusb/creator.py:1408
msgid ""
"Make sure to extract the entire liveusb-creator zip file before running this"
" program."
msgstr "پیش از اجرای این برنامه مطمئن شوید که فایل liveusb-creator را از حالت فشرده خارج کردهاید"
-#: ../liveusb/creator.py:1250
+#: ../liveusb/creator.py:1284
msgid ""
"Make sure your USB key is plugged in and formatted with the FAT filesystem"
msgstr "مطمئن شوید یو اس بی شما متصل شده و با فایل سیستم FAT قالب بندی شده است."
-#: ../liveusb/creator.py:849
+#: ../liveusb/creator.py:859
#, python-format
msgid "Mount %s exists after unmounting"
msgstr "نصب %s بعد از حذف موجود است"
-#: ../liveusb/gui.py:559
+#: ../liveusb/gui.py:588
#, python-format
msgid "No free space on device %(device)s"
msgstr "فضای کافی بر روی حافظه وجود ندارد %(device)s"
-#: ../liveusb/creator.py:816
+#: ../liveusb/creator.py:826
msgid "No mount points found"
msgstr "هيچ نقطه بازگذاري يافت نشد"
-#: ../liveusb/creator.py:401
+#: ../liveusb/creator.py:410
#, python-format
msgid ""
"Not enough free space on device.\n"
"%dMB ISO + %dMB overlay > %dMB free space"
msgstr "فضای خالی کافی وجود ندارد.\n%dMB ISO + %dMB overlay > %dMB free space"
-#: ../liveusb/gui.py:540
+#: ../liveusb/gui.py:569
msgid "Partition is FAT16; Restricting overlay size to 2G"
msgstr "قسمتبندی بر اساس فرمت FAT16 است. اندازه جایگذاری به ۲ گیگابایت محدود شود"
-#: ../liveusb/gui.py:536
+#: ../liveusb/gui.py:565
msgid "Partition is FAT32; Restricting overlay size to 4G"
msgstr "پارتیشن به فرمت FAT32 است؛ محدودیت فضا ۴گیگابایت خواهد بود"
-#: ../liveusb/creator.py:228 ../liveusb/creator.py:856
+#: ../liveusb/creator.py:236 ../liveusb/creator.py:866
#, python-format
msgid "Partitioning device %(device)s"
msgstr "در حال پاتیشنبندیِ %(device)s"
-#: ../liveusb/gui.py:607
+#: ../liveusb/gui.py:636
msgid "Persistent Storage"
msgstr "ذخيره سازي مداوم"
@@ -287,53 +304,53 @@ msgstr "ذخيره سازي مداوم"
msgid "Persistent Storage (0 MB)"
msgstr "حافظه دائم (0 مگابایت)"
-#: ../liveusb/gui.py:669 ../liveusb/gui.py:698
+#: ../liveusb/gui.py:698 ../liveusb/gui.py:727
msgid "Please confirm your device selection"
msgstr "لطفا دستگاه انتخابی تان را تایید کنید"
-#: ../liveusb/gui.py:453
+#: ../liveusb/gui.py:481
msgid "Refreshing releases..."
msgstr "بازنگری انتشارها…"
-#: ../liveusb/gui.py:458
+#: ../liveusb/gui.py:486
msgid "Releases updated!"
msgstr "انتشارها بروزرسانی شدند!"
-#: ../liveusb/creator.py:970 ../liveusb/creator.py:1297
+#: ../liveusb/creator.py:997 ../liveusb/creator.py:1331
#, python-format
msgid "Removing %(file)s"
msgstr "برداشتن %(file)s"
-#: ../liveusb/creator.py:483
+#: ../liveusb/creator.py:492
msgid "Removing existing Live OS"
msgstr "حذف Live OS موجود"
-#: ../liveusb/creator.py:1152
+#: ../liveusb/creator.py:1186
#, python-format
msgid "Resetting Master Boot Record of %s"
msgstr "بازنشانی رکورد راهاندازی اصلی از %s"
-#: ../liveusb/gui.py:760
+#: ../liveusb/gui.py:789
msgid "Select Live ISO"
msgstr "انتخاب ایزوی لایو"
-#: ../liveusb/creator.py:184
+#: ../liveusb/creator.py:192
msgid "Setting up OLPC boot file..."
msgstr "تنظیم فایل راهاندازی OLPC..."
-#: ../liveusb/creator.py:730
+#: ../liveusb/creator.py:742
#, python-format
msgid ""
"Some partitions of the target device %(device)s are mounted. They will be "
"unmounted before starting the installation process."
msgstr "بعضی از پارتیشن های موجود بر روی دستگاه %(device)s فعال و راه اندازی شدند. آن ها قبل از شروع مراحل نصب غیر فعال می شوند."
-#: ../liveusb/creator.py:133
+#: ../liveusb/creator.py:141
msgid ""
"Source type does not support verification of ISO MD5 checksum, skipping"
msgstr "نوع منبع، عملیات بازبینی از کنترل ISO MD5 را پشتیبانی نمیکند؛ پرش"
-#: ../liveusb/creator.py:1186
+#: ../liveusb/creator.py:1220
msgid "Synchronizing data on disk..."
msgstr "هماهنگ سازی دادهها بر روی دیسک..."
@@ -341,13 +358,20 @@ msgstr "هماهنگ سازی دادهها بر روی دیسک..."
msgid "Target Device"
msgstr "دستگاه هدف"
-#: ../liveusb/gui.py:763
+#: ../liveusb/gui.py:438
+#, python-format
+msgid ""
+"The device \"%(pretty_name)s\" is too small to install Tails (at least "
+"%(size)s GB is required)."
+msgstr "فضای دستگاه \"%(pretty_name)s\" برای نصب کم است (حداقل %(size)s گیگابایت فضا لازم است)."
+
+#: ../liveusb/gui.py:792
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "فایل انتخابشده قابل خواندن نیست. لطفا اجازه دسترسی به آن را اصلاح کنید یا فایل دیگری را انتخاب کنید"
-#: ../liveusb/creator.py:345
+#: ../liveusb/creator.py:354
#, python-format
msgid ""
"There was a problem executing the following command: `%(command)s`.\n"
@@ -385,134 +409,127 @@ msgstr "این نوار پیشرفت نشان میدهد که شما در ک
msgid "This is the status console, where all messages get written to."
msgstr "اینجا کنسول وضعیت است. جایی که تمام پیغامها در آن نوشته میشوند."
-#: ../liveusb/creator.py:925
+#: ../liveusb/creator.py:952
msgid "Trying to continue anyway."
msgstr "تلاش برای ادامه دادن در هر صورت."
-#: ../liveusb/gui.py:407
+#: ../liveusb/gui.py:464
msgid "USB drive found"
msgstr "درایو USB یافت شد"
-#: ../liveusb/creator.py:958
+#: ../liveusb/creator.py:985
#, python-format
msgid "Unable to change volume label: %(message)s"
msgstr "قادر به تغییر برچسب حافظه نیست: %(message)s"
-#: ../liveusb/creator.py:492 ../liveusb/creator.py:503
+#: ../liveusb/creator.py:501 ../liveusb/creator.py:512
#, python-format
msgid "Unable to chmod %(file)s: %(message)s"
msgstr "قادر به اجرای دستور سطح دسترسی %(file)s نیست: %(message)s"
-#: ../liveusb/creator.py:469
+#: ../liveusb/creator.py:478
#, python-format
msgid "Unable to copy %(infile)s to %(outfile)s: %(message)s"
msgstr "قادر به کپی کردن %(infile)s به %(outfile)s نیست: %(message)s"
-#: ../liveusb/gui.py:402
+#: ../liveusb/gui.py:403
msgid "Unable to find any USB drive"
msgstr "قادر به یافتن هیچ درایو یو اس بی نیست"
-#: ../liveusb/creator.py:1240
+#: ../liveusb/creator.py:1274
msgid "Unable to find any supported device"
msgstr "هیچ دستگاهی که پشتیبانی شود یافت نشد"
-#: ../liveusb/creator.py:1083
+#: ../liveusb/creator.py:1117
msgid "Unable to find partition"
msgstr "قادر به پیدا کردن پارتیشن نیست."
-#: ../liveusb/creator.py:1320
+#: ../liveusb/creator.py:1354
msgid ""
"Unable to get Win32_LogicalDisk; win32com query did not return any results"
msgstr "قادر به دسترسی به Win32_LogicalDisk نیست. فراخواندن win32com هیچ نتیجهای را برگردان نمیکند"
-#: ../liveusb/gui.py:662
+#: ../liveusb/gui.py:691
msgid "Unable to mount device"
msgstr "فادر به بارگذاري دستگاه نيست."
-#: ../liveusb/creator.py:804
+#: ../liveusb/creator.py:814
#, python-format
msgid "Unable to mount device: %(message)s"
msgstr "قادر به نصب حافظه نیست: %(message)s"
-#: ../liveusb/creator.py:508
+#: ../liveusb/creator.py:517
#, python-format
msgid "Unable to remove directory from previous LiveOS: %(message)s"
msgstr "قادر به نصب حافظه نیست: %(message)s"
-#: ../liveusb/creator.py:496
+#: ../liveusb/creator.py:505
#, python-format
msgid "Unable to remove file from previous LiveOS: %(message)s"
msgstr "قادر به حذف فایل از LiveOS قبلی نیست: %(message)s"
-#: ../liveusb/creator.py:1155
+#: ../liveusb/creator.py:1189
msgid ""
"Unable to reset MBR. You may not have the `syslinux` package installed."
msgstr "قادر به راهاندازی دوباره \"رکورد راهاندازی اصلی\" MBR نیست. شما احتمالا بسته \"syslinux\" را نصب نکردهاید."
-#: ../liveusb/gui.py:769
+#: ../liveusb/gui.py:798
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
msgstr "قادر به استفاده از فايل انتخاب شده نيست. اگر فايل ايزو را به ريشه درايو خود (مثلاً C) منتقل كنيد ممكن است شانس بيتشري داشته باشيد."
-#: ../liveusb/creator.py:711
+#: ../liveusb/creator.py:723
#, python-format
msgid "Unable to write on %(device)s, skipping."
msgstr "خطا در نوشتن بر روی دستگاه %(device)s. این مرحله را جا میاندازم."
-#: ../liveusb/creator.py:390
+#: ../liveusb/creator.py:399
msgid "Unknown ISO, skipping checksum verification"
msgstr "ISO ناشناخته؛ پرش از روی بازبینی کنترل"
-#: ../liveusb/creator.py:800
+#: ../liveusb/creator.py:810
#, python-format
msgid "Unknown dbus exception while trying to mount device: %(message)s"
msgstr "اسنثناء ناشاخته در dbus هنگام تلاش برای نصب دستگاه: %(message)s"
-#: ../liveusb/creator.py:779 ../liveusb/creator.py:937
+#: ../liveusb/creator.py:791 ../liveusb/creator.py:964
msgid "Unknown filesystem. Your device may need to be reformatted."
msgstr "نوع فايل سيستم ناشناخته است. دستگاه شما ممكن است نياز به فرمت مجدد داشته باشد."
-#: ../liveusb/gui.py:84
+#: ../liveusb/gui.py:85
#, python-format
msgid "Unknown release: %s"
msgstr "نسخه نرم افزار معتبر نیست: %s"
-#: ../liveusb/creator.py:841
+#: ../liveusb/creator.py:851
#, python-format
msgid "Unmounting '%(udi)s' on '%(device)s'"
msgstr "جداکردن '%(udi)s' روی '%(device)s'"
-#: ../liveusb/creator.py:837
+#: ../liveusb/creator.py:847
#, python-format
msgid "Unmounting mounted filesystems on '%(device)s'"
msgstr "حذف فایل های سیستمی از روی '%(device)s'"
-#: ../liveusb/creator.py:922
+#: ../liveusb/creator.py:949
#, python-format
msgid "Unsupported device '%(device)s', please report a bug."
msgstr "دستگاه پشتیبانی نشده '%(device)s'، لطفا یک باگ را گزارش دهید"
-#: ../liveusb/creator.py:784 ../liveusb/creator.py:940
+#: ../liveusb/creator.py:794 ../liveusb/creator.py:967
#, python-format
msgid "Unsupported filesystem: %s"
msgstr "فایل سیستم های غیرقابل پشتیبانی: %s"
-#: ../liveusb/creator.py:782
-#, python-format
-msgid ""
-"Unsupported filesystem: %s\n"
-"In case you are trying to upgrade a manually installed Tails system (that is, if it was installed without this installer), this option is not supported: you need to install it anew to start with, e.g. by choosing the \"Clone & Install\" action instead."
-msgstr "سیستم پرونده ناشناخته: %s\nدر موردی که شما تلاش میکنید تا یک سیستم Tails را که به صورت دستی نصب شده، به روزرسانی کنید (منظور آن نوعی است که بدون این نصبکننده نصب شده باشد)، از این گزینه پشتیبانی نمیشود: برای شروع لازم است از نوع آن را نصب کنید، برای مثال با انتخاب عملیات جایگزین \\\"کپی Tails\\\"."
-
-#: ../liveusb/creator.py:1253
+#: ../liveusb/creator.py:1287
#, python-format
msgid ""
"Unsupported filesystem: %s\n"
"Please backup and format your USB key with the FAT filesystem."
msgstr "فایل سیستم پشتیبانی نشده: %s\nلطفا از وسیله یواسبی خود پشتیبانی گرفته و آن را با فایل سیستم FAT قالب بندی کنید."
-#: ../liveusb/creator.py:882
+#: ../liveusb/creator.py:892
#, python-format
msgid "Updating properties of system partition %(system_partition)s"
msgstr "در حال به روز رسانی اطلاعات پارتیشن سیستمی %(system_partition)s"
@@ -525,47 +542,47 @@ msgstr "به روزرسانی از ISO را انجام دهید"
msgid "Use existing Live system ISO"
msgstr "استفاده از یک ایزوی زنده موجود"
-#: ../liveusb/creator.py:135
+#: ../liveusb/creator.py:143
msgid "Verifying ISO MD5 checksum"
msgstr "هماهنگ سازی دادهها بر روی دیسک..."
-#: ../liveusb/creator.py:364
+#: ../liveusb/creator.py:373
msgid "Verifying SHA1 checksum of LiveCD image..."
msgstr "تایید جمع کنترلی SHA1 تصویرِ LiveCD..."
-#: ../liveusb/creator.py:368
+#: ../liveusb/creator.py:377
msgid "Verifying SHA256 checksum of LiveCD image..."
msgstr "تایید جمع کنترلی SHA256 تصویرِ LiveCD..."
-#: ../liveusb/creator.py:934 ../liveusb/creator.py:1246
+#: ../liveusb/creator.py:961 ../liveusb/creator.py:1280
msgid "Verifying filesystem..."
msgstr "تایید فایل سیستم..."
-#: ../liveusb/gui.py:696
+#: ../liveusb/gui.py:725
msgid ""
"Warning: Creating a new persistent overlay will delete your existing one."
msgstr "اخطار: ساخت پوشش مداوم آنچه را که از قبل وجود داشته است را از حذف می کند."
-#: ../liveusb/gui.py:376
+#: ../liveusb/gui.py:377
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr "هشدار: اين ابزار نياز به اجرا شدن توسط مدير سيستم دارد. براي انجام اين كار، بر روي آيكون راست كليك كرده، سپس Properties را انتخاب كرده و از لبه Compatibility، گزينه Run the program as an administrator را انتخاب كنيد."
-#: ../liveusb/creator.py:154
+#: ../liveusb/creator.py:162
#, python-format
msgid "Wrote to device at %(speed)d MB/sec"
msgstr "نوشته شده بر روی دستگاه جانبی در %(speed)d مگابایت بر ثانیه"
-#: ../liveusb/gui.py:670
+#: ../liveusb/gui.py:699
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr "شما قصد نصب تیلز روی این دستگاه را دارید: %(size)s %(vendor)s %(model)s :(%(device)s). همه ی اطلاعات موجود روی آن پاک خواهد شد. مطمئن هستید؟"
-#: ../liveusb/gui.py:686
+#: ../liveusb/gui.py:715
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -573,17 +590,17 @@ msgid ""
"unchanged. Continue?"
msgstr "شما تیلز را بر روی دستگاه %(parent_size)s %(vendor)s %(model)s (%(device)s) به روز خواهید کرد. هر درایو ثابتی روی این دستگاه بدون تغییر باقی خواهد ماند. ادامه می دهید؟ "
-#: ../liveusb/creator.py:618
+#: ../liveusb/creator.py:622
msgid ""
"You are using an old version of syslinux-extlinux that does not support the "
"ext4 filesystem"
msgstr "شما از یک نسخهی قدیمی syslinux-extlinux استفاده میکنید که از سیستم پروندهی ext4 پشتیبانی نمیکند."
-#: ../liveusb/gui.py:754
+#: ../liveusb/gui.py:783
msgid "You can try again to resume your download"
msgstr "بار دیگر می توانید برای ادامه دانلود سعی کنید"
-#: ../liveusb/creator.py:94
+#: ../liveusb/creator.py:95
msgid "You must run this application as root"
msgstr "شما بايد اين برنامه را با دسترسي روت اجرا كنيد"
1
0
[translation/liveusb-creator] Update translations for liveusb-creator
by translation@torproject.org 17 Aug '15
by translation@torproject.org 17 Aug '15
17 Aug '15
commit 4ef243b150b8d3a30fe0d70b6cf3cc68fd932e61
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Aug 17 08:45:19 2015 +0000
Update translations for liveusb-creator
---
fa/fa.po | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/fa/fa.po b/fa/fa.po
index d55c13c..cb59d73 100644
--- a/fa/fa.po
+++ b/fa/fa.po
@@ -6,6 +6,7 @@
# zmix <check_people_status(a)yahoo.com>, 2013
# Mohammad Hossein <desmati(a)gmail.com>, 2014
# Eric D Smallberg <esmallberg(a)ndi.org>, 2013
+# Farshad Sadri <farshad.sadri(a)gmail.com>, 2015
# Gilberto, 2015
# zendegi <inactive+zendegi(a)transifex.com>, 2013
# Hamidreza Rajabzadeh <hamidonline.behbahan(a)gmail.com>, 2014
@@ -18,9 +19,9 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-08-04 10:45+0200\n"
-"PO-Revision-Date: 2015-08-08 20:13+0000\n"
-"Last-Translator: Gilberto\n"
+"POT-Creation-Date: 2015-08-10 16:01+0200\n"
+"PO-Revision-Date: 2015-08-17 08:27+0000\n"
+"Last-Translator: Farshad Sadri <farshad.sadri(a)gmail.com>\n"
"Language-Team: Persian (http://www.transifex.com/otf/torproject/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -244,7 +245,7 @@ msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
"created using Tails Installer. You should instead use %(action)s to upgrade "
"Tails on this device."
-msgstr ""
+msgstr "ارتقاء دستگاه %(pretty_name)s غیر ممکن است، زیرا با استفاده از نصبکننده تیلز ایجاد نشده است. شما باید از %(action)s برای ارتقاء تیلز روی این دستگاه استفاده کنید."
#: ../liveusb/gui.py:270
msgid "LiveUSB creation failed!"
@@ -362,7 +363,7 @@ msgstr "دستگاه هدف"
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
-msgstr ""
+msgstr "فضای دستگاه \"%(pretty_name)s\" برای نصب کم است (حداقل %(size)s گیگابایت فضا لازم است)."
#: ../liveusb/gui.py:792
msgid ""
1
0
[globe/master] Fix JavaScript styling issues and add some consistency
by isis@torproject.org 16 Aug '15
by isis@torproject.org 16 Aug '15
16 Aug '15
commit 1c81a61715b0fc7a2dbe3116fbba919e2a956c61
Author: Chaoyi Zha <summermontreal(a)gmail.com>
Date: Sun Aug 16 02:15:39 2015 -0400
Fix JavaScript styling issues and add some consistency
Signed-off-by: Isis Lovecruft <isis(a)torproject.org>
---
src/js/application/app.js | 50 ++++++++++++------------
src/js/components/AlertBoxComponent.js | 2 +-
src/js/components/BandwidthStatsComponent.js | 8 ++--
src/js/components/LoadingIndicatorComponent.js | 2 +-
src/js/controllers/ApplicationController.js | 24 ++++++------
src/js/controllers/Top10Controller.js | 2 +-
src/js/helpers/dataTablesRenderer.js | 8 ++--
src/js/helpers/formatter.js | 28 ++++++-------
src/js/helpers/handlebarsHelper.js | 38 +++++++++---------
src/js/helpers/util.js | 48 +++++++++++------------
src/js/mixins/ContentReadyTriggerableMixin.js | 2 +-
src/js/mixins/PeriodsMixin.js | 16 ++++----
src/js/models/OnionooBandwidthHistory.js | 8 ++--
src/js/models/OnionooClientsHistory.js | 8 ++--
src/js/models/OnionooDetail.js | 50 ++++++++++++------------
src/js/models/OnionooUptimeHistory.js | 8 ++--
src/js/models/OnionooWeightsHistory.js | 6 +--
src/js/models/TemporaryStore.js | 10 ++---
src/js/routes/BridgeDetailRoute.js | 8 ++--
src/js/routes/RelayDetailRoute.js | 12 +++---
src/js/routes/StaticRoutes.js | 6 +--
src/js/routes/SummarySearchRoute.js | 18 ++++-----
src/js/routes/Top10Route.js | 6 +--
src/js/views/DetailViews.js | 8 ++--
src/js/views/HistoryGraphView.js | 40 +++++++++----------
src/js/views/SummariesView.js | 36 ++++++++---------
26 files changed, 226 insertions(+), 226 deletions(-)
diff --git a/src/js/application/app.js b/src/js/application/app.js
index 6fa6ce2..8ec4aa5 100644
--- a/src/js/application/app.js
+++ b/src/js/application/app.js
@@ -5,7 +5,7 @@
var GLOBE = Ember.Application.create();
// @if NODE_ENV == 'TESTING'
-if($.isFunction(window.prepareForTesting)){
+if ($.isFunction(window.prepareForTesting)) {
prepareForTesting(GLOBE);
}
// @endif
@@ -37,14 +37,14 @@ GLOBE = GLOBE.reopen({
}),
// Event that observes GLOBE.title and changes the document title
- titleChanged: function(){
+ titleChanged: function() {
var title = this.get('title');
var suffix = GLOBE.static.titleSuffix + ' ' + GLOBE.static.version;
- if(title.length){
+ if (title.length) {
$(document).attr('title', title + ' | ' + suffix);
- }else{
+ } else {
$(document).attr('title', suffix);
}
@@ -57,8 +57,8 @@ GLOBE = GLOBE.reopen({
* @param {String} msg Alert message
* @return {void}
*/
- setAlert: function(location, type, msg){
- if(this.get('alert').hasOwnProperty(location)){
+ setAlert: function(location, type, msg) {
+ if (this.get('alert').hasOwnProperty(location)) {
this.set('alert.' + location, Em.Object.create({
type: type,
msg: msg
@@ -70,8 +70,8 @@ GLOBE = GLOBE.reopen({
* @param {String} location Alert storage location
* @return {void}
*/
- clearAlert: function(location){
- if(this.get('alert').hasOwnProperty(location)){
+ clearAlert: function(location) {
+ if (this.get('alert').hasOwnProperty(location)) {
this.set('alert.' + location, null);
}
}
@@ -80,7 +80,7 @@ GLOBE = GLOBE.reopen({
GLOBE.static = {
browser: {
// check if the current browser is firefox
- isFirefox: function(){
+ isFirefox: function() {
// @see http://stackoverflow.com/a/9851769
return typeof InstallTrigger !== 'undefined';
}
@@ -444,8 +444,8 @@ GLOBE.static.messages.specifyYourSearch = 'To avoid too many requests, we limit
// fill flag array
-for(var icon in GLOBE.static.icons){
- if(GLOBE.static.icons.hasOwnProperty(icon)){
+for (var icon in GLOBE.static.icons) {
+ if (GLOBE.static.icons.hasOwnProperty(icon)) {
GLOBE.static.iconsArray.push({
key: icon,
value: GLOBE.static.icons[icon]
@@ -454,8 +454,8 @@ for(var icon in GLOBE.static.icons){
}
// fill countries array
-for(var country in GLOBE.static.countries){
- if(GLOBE.static.countries.hasOwnProperty(country)){
+for (var country in GLOBE.static.countries) {
+ if (GLOBE.static.countries.hasOwnProperty(country)) {
GLOBE.static.countriesArray.push({
key: country,
value: GLOBE.static.countries[country]
@@ -463,7 +463,7 @@ for(var country in GLOBE.static.countries){
}
}
// sort by country names
-GLOBE.static.countriesArray.sort(function(a, b){
+GLOBE.static.countriesArray.sort(function(a, b) {
// is a less than b ? -1 else if a greater than b ? 1 otherwise 0 (a==b)
return a.value < b.value ? -1 : a.value > b.value ? 1 : 0;
});
@@ -486,15 +486,15 @@ jQuery.fn.dataTableExt.oSort['port-desc'] = function(x,y) {
x = GLOBE.Formatter.extractPort(x);
y = GLOBE.Formatter.extractPort(y);
- if(x === GLOBE.static.messages.dataEmpty &&
- y !== GLOBE.static.messages.dataEmpty){
+ if (x === GLOBE.static.messages.dataEmpty &&
+ y !== GLOBE.static.messages.dataEmpty) {
return -1;
}
- if(y === GLOBE.static.messages.dataEmpty &&
- x !== GLOBE.static.messages.dataEmpty){
+ if (y === GLOBE.static.messages.dataEmpty &&
+ x !== GLOBE.static.messages.dataEmpty) {
return 1;
}
- if(x === y){
+ if (x === y) {
return 0;
}
@@ -510,15 +510,15 @@ jQuery.fn.dataTableExt.oSort['port-asc'] = function(x,y) {
x = GLOBE.Formatter.extractPort(x);
y = GLOBE.Formatter.extractPort(y);
- if(x === GLOBE.static.messages.dataEmpty &&
- y !== GLOBE.static.messages.dataEmpty){
+ if (x === GLOBE.static.messages.dataEmpty &&
+ y !== GLOBE.static.messages.dataEmpty) {
return 1;
}
- if(y === GLOBE.static.messages.dataEmpty &&
- x !== GLOBE.static.messages.dataEmpty){
+ if (y === GLOBE.static.messages.dataEmpty &&
+ x !== GLOBE.static.messages.dataEmpty) {
return -1;
}
- if(x === y){
+ if (x === y) {
return 0;
}
@@ -530,4 +530,4 @@ jQuery.fn.dataTableExt.oSort['port-asc'] = function(x,y) {
GLOBE.TextField = Em.TextField.extend({
attributeBindings: ['accept', 'autocomplete', 'autofocus', 'name', 'required']
-});
\ No newline at end of file
+});
diff --git a/src/js/components/AlertBoxComponent.js b/src/js/components/AlertBoxComponent.js
index 69cc99b..e6a70fd 100644
--- a/src/js/components/AlertBoxComponent.js
+++ b/src/js/components/AlertBoxComponent.js
@@ -5,7 +5,7 @@ GLOBE.AlertBoxComponent = Em.Component.extend({
classNameBindings: ['baseClass', 'type'],
- isVisible: function(){
+ isVisible: function() {
var type = this.get('type'),
msg = this.get('msg');
diff --git a/src/js/components/BandwidthStatsComponent.js b/src/js/components/BandwidthStatsComponent.js
index a3aa732..8f2d558 100644
--- a/src/js/components/BandwidthStatsComponent.js
+++ b/src/js/components/BandwidthStatsComponent.js
@@ -1,20 +1,20 @@
/*global GLOBE, Em */
GLOBE.GraphStatsComponent = Em.Component.extend({
classNames: ['graph-stats'],
- getAvgs: function(fields){
+ getAvgs: function(fields) {
var avgHistory = {},
data = this.get('data'),
period = this.get('period');
- fields.forEach(function(field){
- if (data && data[field] && data[field][period]){
+ fields.forEach(function(field) {
+ if (data && data[field] && data[field][period]) {
avgHistory[field + 'Avg'] = data[field][period].avg;
}
});
return avgHistory;
},
- avgShouldChange: function(){
+ avgShouldChange: function() {
this.setProperties(this.getAvgs(this.get('avgFields')));
}.observes('period', 'timePeriods')
});
diff --git a/src/js/components/LoadingIndicatorComponent.js b/src/js/components/LoadingIndicatorComponent.js
index 0ef7746..f3bdd8f 100644
--- a/src/js/components/LoadingIndicatorComponent.js
+++ b/src/js/components/LoadingIndicatorComponent.js
@@ -1,6 +1,6 @@
/*global GLOBE, Em */
GLOBE.LoadingIndicatorComponent = Em.Component.extend({
- isDataLoaded: function(){
+ isDataLoaded: function() {
// change isDataLoaded depending on GLOBE.loading number
return (GLOBE.get('loading') <= 0);
diff --git a/src/js/controllers/ApplicationController.js b/src/js/controllers/ApplicationController.js
index 202d117..45d570b 100644
--- a/src/js/controllers/ApplicationController.js
+++ b/src/js/controllers/ApplicationController.js
@@ -43,54 +43,54 @@ GLOBE.ApplicationController = Em.Controller.extend({
flag: null
},
- init: function(){
+ init: function() {
this.set('title', '');
},
- titleChanged: function(){
+ titleChanged: function() {
var title = this.get('title');
var suffix = GLOBE.static.titleSuffix + ' ' + GLOBE.static.version;
- if(title.length){
+ if (title.length) {
$(document).attr('title', title + ' | ' + suffix);
- }else{
+ } else {
$(document).attr('title', suffix);
}
}.observes('title'),
actions: {
- toggleAdvancedSearch: function(){
+ toggleAdvancedSearch: function() {
this.toggleProperty('advancedSearch');
},
/**
* action that prepares a payload and transitions to the search route
*/
- search: function(){
+ search: function() {
var value = this.get('value');
var advanced = this.get('advancedSearch');
var advancedOptions = this.get('advancedSearchOptions');
- if(advanced){
+ if (advanced) {
// serialize form
var serialized = $('.advanced-search-form').serializeArray();
// reset
- for(var option in advancedOptions){
- if(advancedOptions.hasOwnProperty(option)){
+ for (var option in advancedOptions) {
+ if (advancedOptions.hasOwnProperty(option)) {
delete advancedOptions[option];
}
}
- for(var fieldIndex = 0, maxIndex = serialized.length; fieldIndex < maxIndex; fieldIndex++){
+ for (var fieldIndex = 0, maxIndex = serialized.length; fieldIndex < maxIndex; fieldIndex++) {
var field = serialized[fieldIndex];
- if(field.value && field.value.length){
+ if (field.value && field.value.length) {
advancedOptions[field.name] = field.value;
}
}
this.set('advancedSearchOptions', advancedOptions);
- }else{
+ } else {
advancedOptions = {};
}
diff --git a/src/js/controllers/Top10Controller.js b/src/js/controllers/Top10Controller.js
index 8181248..8148b71 100644
--- a/src/js/controllers/Top10Controller.js
+++ b/src/js/controllers/Top10Controller.js
@@ -4,7 +4,7 @@ GLOBE.Top10Controller = Em.ArrayController.extend({
relays: [],
actions: {
- showRelayDetail: function(fingerprint){
+ showRelayDetail: function(fingerprint) {
this.transitionToRoute('relayDetail', fingerprint);
}
}
diff --git a/src/js/helpers/dataTablesRenderer.js b/src/js/helpers/dataTablesRenderer.js
index c0ad797..db7343e 100644
--- a/src/js/helpers/dataTablesRenderer.js
+++ b/src/js/helpers/dataTablesRenderer.js
@@ -8,7 +8,7 @@ GLOBE.DataTableRenderer = {
uptime: function (length) {
return function (data, type, context) {
if (type === 'display') {
- if (context.running){
+ if (context.running) {
return GLOBE.Util.UptimeCalculator(data, length).join(' ');
} else {
return '<span class="has-tip" title="Offline">' + GLOBE.static.messages.dataEmpty + '</span>';
@@ -52,14 +52,14 @@ GLOBE.DataTableRenderer = {
var flagString = '';
// create flag render
- if(!data.length){
+ if (!data.length) {
return '';
}
- data.forEach(function(n){
+ data.forEach(function(n) {
flagString += GLOBE.Formatter.propFlag(n);
});
return flagString;
}
return data;
}
-};
\ No newline at end of file
+};
diff --git a/src/js/helpers/formatter.js b/src/js/helpers/formatter.js
index ac55bdb..e0bdfe8 100644
--- a/src/js/helpers/formatter.js
+++ b/src/js/helpers/formatter.js
@@ -9,11 +9,11 @@ GLOBE.Formatter = {
* // returns '2.05KB/s'
* GLOBE.Formatter.bandwidth(2048)
*/
- bandwidth: function(value){
+ bandwidth: function(value) {
var formatted = GLOBE.static.messages.dataEmpty;
value = parseInt(value, 10);
- if(value !== -1 && !isNaN(value)){
+ if (value !== -1 && !isNaN(value)) {
var bandwidthKB = value / 1000;
var bandwidthMB = bandwidthKB / 1000;
@@ -42,14 +42,14 @@ GLOBE.Formatter = {
* // returns '"<span class="boolean true">true</span>"'
* GLOBE.Formatter.boolean(true)
*/
- boolean: function(value){
+ boolean: function(value) {
var wrapped = '';
- if(value === 'true' || value === true){
+ if (value === 'true' || value === true) {
wrapped = '<span class="boolean true">true</span>';
- }else if(value === 'false' || value === false){
+ }else if (value === 'false' || value === false) {
wrapped = '<span class="boolean false">false</span>';
- }else{
+ } else {
wrapped = '<span class="boolean">' + GLOBE.static.messages.dataEmpty + '</span>';
}
return wrapped;
@@ -64,13 +64,13 @@ GLOBE.Formatter = {
* // returns '"<span title="Germany" data-tooltip class="has-tip country-flag de_png"></span>"'
* GLOBE.Formatter.countryFlag('de')
*/
- countryFlag: function(value){
+ countryFlag: function(value) {
var fullCountry = '';
- if(GLOBE.static.countries.hasOwnProperty(value)){
+ if (GLOBE.static.countries.hasOwnProperty(value)) {
fullCountry = GLOBE.static.countries[value];
- }else{
+ } else {
fullCountry = GLOBE.static.messages.dataEmpty;
value = 'empty';
}
@@ -89,11 +89,11 @@ GLOBE.Formatter = {
* // return '<span class="fa fa-bolt has-tip" data-tooltip title="Fast"></span>'
* GLOBE.Formatter.propFlag('Fast')
*/
- propFlag: function(value){
+ propFlag: function(value) {
var map = GLOBE.static.icons,
withImage = '';
- if(map.hasOwnProperty(value)){
+ if (map.hasOwnProperty(value)) {
withImage = '<span class="fa ' + map[value] + ' has-tip" data-tooltip title="' + value + '"></span>';
}
return withImage;
@@ -107,10 +107,10 @@ GLOBE.Formatter = {
* // returns '9000'
* GLOBE.Formatter.extractPort('10.10.10.1:9000');
*/
- extractPort: function(value){
+ extractPort: function(value) {
var port = GLOBE.static.messages.dataEmpty;
- if(typeof value === 'string'){
+ if (typeof value === 'string') {
var parts = value.split(':'),
part;
@@ -164,4 +164,4 @@ GLOBE.Formatter = {
return 'IPv' + ipV + ':' + port;
}
-};
\ No newline at end of file
+};
diff --git a/src/js/helpers/handlebarsHelper.js b/src/js/helpers/handlebarsHelper.js
index 74f2d57..52fc662 100644
--- a/src/js/helpers/handlebarsHelper.js
+++ b/src/js/helpers/handlebarsHelper.js
@@ -2,7 +2,7 @@
/**
* @see {@link GLOBE.Formatter.boolean()}
*/
-Em.Handlebars.helper('truefalse', function(value){
+Em.Handlebars.helper('truefalse', function(value) {
var wrapped = GLOBE.Formatter.boolean(value);
return new Handlebars.SafeString(wrapped);
});
@@ -10,7 +10,7 @@ Em.Handlebars.helper('truefalse', function(value){
/**
* @see {@link GLOBE.Formatter.bandwidth()}
*/
-Em.Handlebars.helper('bandwidth', function(value){
+Em.Handlebars.helper('bandwidth', function(value) {
var formatted = GLOBE.Formatter.bandwidth(value);
return new Handlebars.SafeString(formatted);
});
@@ -18,11 +18,11 @@ Em.Handlebars.helper('bandwidth', function(value){
/**
* Uses {@link GLOBE.static.countries} to get the full name for a country key
*/
-Em.Handlebars.registerBoundHelper('fullCountry', function(value){
+Em.Handlebars.registerBoundHelper('fullCountry', function(value) {
value = Handlebars.Utils.escapeExpression(value);
var fullCountry = '';
- if(GLOBE.static.countries.hasOwnProperty(value)){
+ if (GLOBE.static.countries.hasOwnProperty(value)) {
fullCountry = GLOBE.static.countries[value];
}
@@ -32,7 +32,7 @@ Em.Handlebars.registerBoundHelper('fullCountry', function(value){
/**
* @see {@link GLOBE.Formatter.countryFlag()}
*/
-Em.Handlebars.registerBoundHelper('prettyCountryFlag', function(value){
+Em.Handlebars.registerBoundHelper('prettyCountryFlag', function(value) {
value = Handlebars.Utils.escapeExpression(value);
var countryLabel = GLOBE.Formatter.countryFlag(value);
@@ -42,7 +42,7 @@ Em.Handlebars.registerBoundHelper('prettyCountryFlag', function(value){
/**
* @see {@link GLOBE.Formatter.countryFlag()}
*/
-Em.Handlebars.registerBoundHelper('flaggifyShort', function(value){
+Em.Handlebars.registerBoundHelper('flaggifyShort', function(value) {
value = Handlebars.Utils.escapeExpression(value);
var withImage = GLOBE.Formatter.countryFlag(value);
return new Handlebars.SafeString(withImage);
@@ -51,11 +51,11 @@ Em.Handlebars.registerBoundHelper('flaggifyShort', function(value){
/**
* Generates HTML that displays an flag icon with flag title
*/
-Em.Handlebars.registerBoundHelper('flaggifyLong', function(value){
+Em.Handlebars.registerBoundHelper('flaggifyLong', function(value) {
var map = GLOBE.static.icons;
value = Handlebars.Utils.escapeExpression(value);
var withImage = value;
- if(map.hasOwnProperty(value)){
+ if (map.hasOwnProperty(value)) {
withImage = '<i class="fa ' + map[value] + '"></i> ' + withImage;
}
return new Handlebars.SafeString(withImage);
@@ -65,8 +65,8 @@ Em.Handlebars.registerBoundHelper('flaggifyLong', function(value){
* Uses the 'long' variant to generate an uptime string
* @see {@title GLOBE.Util.UptimeCalculator}
*/
-Em.Handlebars.helper('uptimeFull', function(value){
- if(!value){
+Em.Handlebars.helper('uptimeFull', function(value) {
+ if (!value) {
return '';
}
value = Handlebars.Utils.escapeExpression(value);
@@ -78,8 +78,8 @@ Em.Handlebars.helper('uptimeFull', function(value){
* Uses the 'short' variant to generate an uptime string
* @see {@title GLOBE.Util.UptimeCalculator}
*/
-Em.Handlebars.helper('uptimeShort', function(value){
- if(!value){
+Em.Handlebars.helper('uptimeShort', function(value) {
+ if (!value) {
return '';
}
value = Handlebars.Utils.escapeExpression(value);
@@ -90,7 +90,7 @@ Em.Handlebars.helper('uptimeShort', function(value){
/**
* @see {@link GLOBE.Formatter.extractPort()}
*/
-Em.Handlebars.helper('extractPort', function(value){
+Em.Handlebars.helper('extractPort', function(value) {
value = Handlebars.Utils.escapeExpression(value);
var port = GLOBE.Formatter.extractPort(value);
@@ -101,11 +101,11 @@ Em.Handlebars.helper('extractPort', function(value){
/**
* uses {@link http://momentjs.com/docs/#/displaying/fromnow/} to display the difference from now and a given time
*/
-Em.Handlebars.helper('fromNow', function(value){
+Em.Handlebars.helper('fromNow', function(value) {
var fromNow = '',
valMoment = moment.utc(value);
- if(valMoment.isValid()){
+ if (valMoment.isValid()) {
fromNow = valMoment.fromNow();
}
@@ -114,18 +114,18 @@ Em.Handlebars.helper('fromNow', function(value){
/**
* @see {@link GLOBE.Formatter.familyToFingerprint()}
*/
-Em.Handlebars.helper('familyToFingerprint', function(value){
+Em.Handlebars.helper('familyToFingerprint', function(value) {
return new Handlebars.SafeString(GLOBE.Formatter.familyToFingerprint(value));
});
/**
* @see {@link GLOBE.Formatter.familyToFingerprint()}
*/
-Em.Handlebars.helper('percent', function(value, precision){
+Em.Handlebars.helper('percent', function(value, precision) {
return new Handlebars.SafeString(GLOBE.Formatter.percent(value, precision));
});
/**
* @see {@link GLOBE.Formatter.familyToFingerprint()}
*/
-Em.Handlebars.helper('anonIpAdress', function(value){
+Em.Handlebars.helper('anonIpAdress', function(value) {
return new Handlebars.SafeString(GLOBE.Formatter.anonymizeIpAddress(value));
-});
\ No newline at end of file
+});
diff --git a/src/js/helpers/util.js b/src/js/helpers/util.js
index f646fd7..921d7ba 100644
--- a/src/js/helpers/util.js
+++ b/src/js/helpers/util.js
@@ -7,7 +7,7 @@ GLOBE.Util = {
* @param {String} string String to check
* @returns {Boolean} If the checked string is a 40 char hex
*/
- is40CharHex: function(string){
+ is40CharHex: function(string) {
var hex40CharRegex = /^[a-f0-9]{40}/i,
result;
@@ -22,7 +22,7 @@ GLOBE.Util = {
* @param {String} fingerprint
* @returns {String} hashed fingerprint
*/
- hashFingerprint: function(fingerprint){
+ hashFingerprint: function(fingerprint) {
var fingerBin = new jsSHA(fingerprint, 'HEX'),
hashed = fingerBin.getHash('SHA-1', 'HEX');
return hashed.toUpperCase();
@@ -33,7 +33,7 @@ GLOBE.Util = {
* @param {String} value UTC Timestamp
* @returns {{h: Number, m: Number, s: Number, d: Number}} hour, minute, second, day
*/
- UtcDiff: function(value){
+ UtcDiff: function(value) {
var momentDate = moment.utc(value, 'YYYY-MM-DD HH:mm:ss'),
diff,
// default result
@@ -72,7 +72,7 @@ GLOBE.Util = {
* @example
* if uptime < days the function returns [ hours, minutes ]
*/
- UptimeCalculator: function(value, type){
+ UptimeCalculator: function(value, type) {
// if not a valid length return empty data message
if (value.length !== 19) {
return [GLOBE.static.messages.dataEmpty];
@@ -89,15 +89,15 @@ GLOBE.Util = {
labels = shortVersion ? ['d', 'h', 'm', 's'] : ['day', 'hour', 'minute', 'second'],
uptimeArray = [];
- for(var i = 0, max = units.length; i < max; i++){
- if(labels[i] && labels[i].length && units[i] > 0){
+ for (var i = 0, max = units.length; i < max; i++) {
+ if (labels[i] && labels[i].length && units[i] > 0) {
digits += 1;
uptimeArray[i] = units[i] + beforeUnit + (pluralize && units[i] > 1 ? labels[i] + 's' : labels[i]) + afterUnit;
- if(digits > 1){
+ if (digits > 1) {
break;
}
- }else{
+ } else {
labels[i] = '';
}
}
@@ -110,7 +110,7 @@ GLOBE.Util = {
* @returns {Date} converted date Object
* @throws {String} will throw an error if the parsed timestamp is invalid
*/
- utcToDate: function(timestamp){
+ utcToDate: function(timestamp) {
var timeMoment = moment.utc(timestamp, 'YYYY-MM-DD HH:mm:ss');
if (!timeMoment.isValid()) {
@@ -126,13 +126,13 @@ GLOBE.Util = {
* @throws {String} throws an error if there is no interval or there is something wrong with start and end date
* @returns {*}
*/
- buildTimeValuePairs: function(historyObject){
- if(historyObject.first && historyObject.last && historyObject.interval){
+ buildTimeValuePairs: function(historyObject) {
+ if (historyObject.first && historyObject.last && historyObject.interval) {
var startDate = this.utcToDate(historyObject.first),
endDate = this.utcToDate(historyObject.last);
// check if Date creation was successfull
- if(!isNaN(startDate.getTime()) && !isNaN(endDate.getTime())){
+ if (!isNaN(startDate.getTime()) && !isNaN(endDate.getTime())) {
// everything worked
var sum = 0,
@@ -142,7 +142,7 @@ GLOBE.Util = {
interval = historyObject.interval * 1000,
currentTime = startDate.getTime();
- for(var i = 0, max = values.length; i < max; i++){
+ for (var i = 0, max = values.length; i < max; i++) {
var realValue = values[i] * historyObject.factor;
newValues.push([
@@ -157,11 +157,11 @@ GLOBE.Util = {
historyObject.avg = (sum / values.length);
historyObject.values = newValues;
- }else{
+ } else {
throw 'There was an error parsing the history object timestamps. Check if ' + historyObject.first + ' or ' + historyObject.last + ' are correct.';
}
- }else{
+ } else {
throw 'Cannot generate time value pairs if there is no time interval given';
}
@@ -173,10 +173,10 @@ GLOBE.Util = {
* @param {Object} toBuild
* @returns {Array}
*/
- prepareHistoryItems: function(history, toBuild){
+ prepareHistoryItems: function(history, toBuild) {
var periods = [];
for (var build in toBuild) {
- if(toBuild.hasOwnProperty(build)){
+ if (toBuild.hasOwnProperty(build)) {
var buildHistory = toBuild[build];
for (var buildKey in buildHistory) {
@@ -220,7 +220,7 @@ GLOBE.Util = {
return looksLike;
},
- processHistoryResponse: function(fieldMapping, response){
+ processHistoryResponse: function(fieldMapping, response) {
var hasRelays = response && response.relays && response.relays.length,
hasBridges = response && response.bridges && response.bridges.length,
relays = {
@@ -302,13 +302,13 @@ GLOBE.Util = {
return processedHistoryResponse;
},
- historyValuesFromNowUntil: function(cfg){
+ historyValuesFromNowUntil: function(cfg) {
var history = cfg.history,
timeAgo = cfg.timeAgo,
source = cfg.sourceField,
dest = cfg.destField;
- Object.keys(history).forEach(function(historyField){
+ Object.keys(history).forEach(function(historyField) {
if (history[historyField][source]) {
// get first timestamp
var sum = 0,
@@ -317,9 +317,9 @@ GLOBE.Util = {
// get youngest dataset from source
now = moment.utc(),
timeFromComputedNowAgo = now - timeAgo,
- filteredSourceValues = sourceValues.filter(function(valuePair){
+ filteredSourceValues = sourceValues.filter(function(valuePair) {
if (valuePair[0] > timeFromComputedNowAgo) {
- if (valuePair[0] < earliestValue){
+ if (valuePair[0] < earliestValue) {
earliestValue = valuePair[0];
}
sum += valuePair[1];
@@ -338,8 +338,8 @@ GLOBE.Util = {
});
},
- nowMinusPeriod: function(period){
+ nowMinusPeriod: function(period) {
var periodObject = GLOBE.static.periodObject[period];
return moment.utc().subtract(periodObject[0], periodObject[1]);
}
-};
\ No newline at end of file
+};
diff --git a/src/js/mixins/ContentReadyTriggerableMixin.js b/src/js/mixins/ContentReadyTriggerableMixin.js
index b9160c7..83adc8b 100644
--- a/src/js/mixins/ContentReadyTriggerableMixin.js
+++ b/src/js/mixins/ContentReadyTriggerableMixin.js
@@ -3,7 +3,7 @@ GLOBE.ContentReadyTriggerableMixin = Em.Mixin.create({
/**
* Function that is called if the controller content is changed.
*/
- contentChanged: function(){
+ contentChanged: function() {
this.trigger('content-ready');
}.observes('content')
});
\ No newline at end of file
diff --git a/src/js/mixins/PeriodsMixin.js b/src/js/mixins/PeriodsMixin.js
index 1a05ac9..32481d9 100644
--- a/src/js/mixins/PeriodsMixin.js
+++ b/src/js/mixins/PeriodsMixin.js
@@ -4,31 +4,31 @@ GLOBE.PeriodsMixin = Em.Mixin.create({
periods: [],
periodsObject: {},
- updatePeriods: function(dataFields){
+ updatePeriods: function(dataFields) {
var props = this.getProperties(dataFields),
periods = this.get('periodsObject'),
periodsArray;
- function populatePeriods(data){
- Object.keys(data).forEach(function(dataKey){
- Object.keys(data[dataKey]).forEach(function(period){
+ function populatePeriods(data) {
+ Object.keys(data).forEach(function(dataKey) {
+ Object.keys(data[dataKey]).forEach(function(period) {
periods[period] = 1;
});
});
}
- dataFields.forEach(function(dataField){
+ dataFields.forEach(function(dataField) {
populatePeriods(props[dataField]);
});
- periodsArray = Object.keys(periods).map(function(period){
+ periodsArray = Object.keys(periods).map(function(period) {
return {
key: period,
title: GLOBE.static.messages[period],
active: false,
pos: GLOBE.static.numbers[period]
};
- }).sort(function(a, b){
+ }).sort(function(a, b) {
return a.pos - b.pos;
});
@@ -44,7 +44,7 @@ GLOBE.PeriodsMixin = Em.Mixin.create({
actions: {
tabActivated: function(key) {
- this.get('periods').forEach(function(period){
+ this.get('periods').forEach(function(period) {
if (period.key === key) {
Em.set(period, 'active', true);
} else {
diff --git a/src/js/models/OnionooBandwidthHistory.js b/src/js/models/OnionooBandwidthHistory.js
index 41ceff6..d50c35e 100644
--- a/src/js/models/OnionooBandwidthHistory.js
+++ b/src/js/models/OnionooBandwidthHistory.js
@@ -9,9 +9,9 @@ GLOBE.OnionooBandwidthHistory.reopenClass({
* @param {Boolean} isHashed flag if the given hash is already hashed
* @returns {Promise}
*/
- find: function(fingerprint, isHashed){
+ find: function(fingerprint, isHashed) {
var hashedFingerprint = fingerprint;
- if(!isHashed){
+ if (!isHashed) {
// use generate hashed fingerprint if not already hashed
hashedFingerprint = GLOBE.Util.hashFingerprint(fingerprint);
}
@@ -19,11 +19,11 @@ GLOBE.OnionooBandwidthHistory.reopenClass({
hashedFingerprint = hashedFingerprint.toUpperCase();
var url = '/bandwidth?lookup=' + hashedFingerprint;
- return GLOBE.getJSON(url).then(function(result){
+ return GLOBE.getJSON(url).then(function(result) {
return GLOBE.Util.processHistoryResponse({
readHistory: 'read_history',
writeHistory: 'write_history'
}, result);
});
}
-});
\ No newline at end of file
+});
diff --git a/src/js/models/OnionooClientsHistory.js b/src/js/models/OnionooClientsHistory.js
index 5e59948..ecc08c5 100644
--- a/src/js/models/OnionooClientsHistory.js
+++ b/src/js/models/OnionooClientsHistory.js
@@ -9,9 +9,9 @@ GLOBE.OnionooClientsHistory.reopenClass({
* @param {Boolean} isHashed flag if the given hash is already hashed
* @returns {Promise}
*/
- find: function(fingerprint, isHashed){
+ find: function(fingerprint, isHashed) {
var hashedFingerprint = fingerprint;
- if(!isHashed){
+ if (!isHashed) {
// use generate hashed fingerprint if not already hashed
hashedFingerprint = GLOBE.Util.hashFingerprint(fingerprint);
}
@@ -19,10 +19,10 @@ GLOBE.OnionooClientsHistory.reopenClass({
hashedFingerprint = hashedFingerprint.toUpperCase();
var url = '/clients?lookup=' + hashedFingerprint;
- return GLOBE.getJSON(url).then(function(result){
+ return GLOBE.getJSON(url).then(function(result) {
return GLOBE.Util.compute3DaysHistory(GLOBE.Util.processHistoryResponse({
averageClients: 'average_clients'
}, result));
});
}
-});
\ No newline at end of file
+});
diff --git a/src/js/models/OnionooDetail.js b/src/js/models/OnionooDetail.js
index ebcf2f5..f229d90 100644
--- a/src/js/models/OnionooDetail.js
+++ b/src/js/models/OnionooDetail.js
@@ -5,23 +5,23 @@ GLOBE.OnionooBridgeDetail = Em.Object.extend({});
GLOBE.OnionooDetail = Em.Object.extend({});
GLOBE.OnionooDetail.reopenClass({
- applyDetailDefaults: function(result, defaults){
+ applyDetailDefaults: function(result, defaults) {
var details = {
relays: [],
bridges: []
};
- if(result &&
+ if (result &&
result.hasOwnProperty('relays') &&
- result.hasOwnProperty('bridges')){
+ result.hasOwnProperty('bridges')) {
var consensus = {
bridges: moment.utc(result.bridges_published),
relays: moment.utc(result.relays_published)
};
- if(result.relays.length){
- for(var i = 0, numRelays = result.relays.length; i < numRelays; i++){
+ if (result.relays.length) {
+ for (var i = 0, numRelays = result.relays.length; i < numRelays; i++) {
// process result relays
var relay = $.extend({}, defaults.relay, result.relays[i]);
@@ -29,9 +29,9 @@ GLOBE.OnionooDetail.reopenClass({
var relayLastSeenMoment = moment.utc(relayObj.get('last_seen'));
// check if consensus.relays and lastSeenMoment exist
- if( consensus.relays && relayLastSeenMoment &&
+ if ( consensus.relays && relayLastSeenMoment &&
// check if both are valid (moment.isValid)
- consensus.relays.isValid() && relayLastSeenMoment.isValid()){
+ consensus.relays.isValid() && relayLastSeenMoment.isValid()) {
relayObj.set('inLatestConsensus', consensus.relays.isSame(relayLastSeenMoment));
}
@@ -40,17 +40,17 @@ GLOBE.OnionooDetail.reopenClass({
}
}
- if(result.bridges.length){
- for(var j = 0, numBridges = result.bridges.length; j < numBridges; j++){
+ if (result.bridges.length) {
+ for (var j = 0, numBridges = result.bridges.length; j < numBridges; j++) {
// process result bridges
var bridge = $.extend({}, defaults.bridge, result.bridges[j]);
var bridgeObj = GLOBE.OnionooRelayDetail.create(bridge);
var bridgeLastSeenMoment = moment.utc(bridgeObj.get('last_seen'));
// check if consensus.relays and lastSeenMoment exist
- if( consensus.bridges && bridgeLastSeenMoment &&
+ if ( consensus.bridges && bridgeLastSeenMoment &&
// check if both are valid (moment.isValid)
- consensus.bridges.isValid() && bridgeLastSeenMoment.isValid()){
+ consensus.bridges.isValid() && bridgeLastSeenMoment.isValid()) {
bridgeObj.set('inLatestConsensus', consensus.bridges.isSame(bridgeLastSeenMoment));
}
@@ -66,7 +66,7 @@ GLOBE.OnionooDetail.reopenClass({
* @param {Object} opts
* @returns {Promise}
*/
- findWithFilter: function(opts){
+ findWithFilter: function(opts) {
//query, filter, fields
var query = opts.query || '';
var filter = opts.filter || {};
@@ -83,15 +83,15 @@ GLOBE.OnionooDetail.reopenClass({
// add fields parameters
var fieldParamString = '';
- if(fields.length){
+ if (fields.length) {
fieldParamString = '&fields=' + fields.join(',');
}
// manually set params
var advancedParamsString = '&';
- for(var filterParam in filter){
- if(filter.hasOwnProperty(filterParam)){
- if(filter[filterParam].length){
+ for (var filterParam in filter) {
+ if (filter.hasOwnProperty(filterParam)) {
+ if (filter[filterParam].length) {
advancedParamsString += filterParam + '=' + filter[filterParam] + '&';
}
}
@@ -105,7 +105,7 @@ GLOBE.OnionooDetail.reopenClass({
url += searchParamString + advancedParamsString + fieldParamString;
- return GLOBE.getJSON(url).then(function(result){
+ return GLOBE.getJSON(url).then(function(result) {
// getJSON success callback
GLOBE.decrementProperty('loading');
@@ -128,11 +128,11 @@ GLOBE.OnionooDetail.reopenClass({
* @param {Boolean} isHashed
* @returns {Promise}
*/
- find: function(fingerprint, isHashed){
+ find: function(fingerprint, isHashed) {
var that = this;
var hashedFingerprint = fingerprint;
- if(!isHashed){
+ if (!isHashed) {
// use generate hashed fingerprint if not already hashed
hashedFingerprint = GLOBE.Util.hashFingerprint(fingerprint);
}
@@ -140,14 +140,14 @@ GLOBE.OnionooDetail.reopenClass({
hashedFingerprint = hashedFingerprint.toUpperCase();
var storedDetail = GLOBE.TemporaryStore.find('details', hashedFingerprint);
- if(storedDetail === undefined){
+ if (storedDetail === undefined) {
// has no detail stored
GLOBE.incrementProperty('loading');
var url = '/details?lookup=' + hashedFingerprint;
- return GLOBE.getJSON(url).then(function(result){
+ return GLOBE.getJSON(url).then(function(result) {
var detailsObj = that.applyDetailDefaults(result, {
relay: GLOBE.defaults.OnionooRelayDetail,
bridge: GLOBE.defaults.OnionooBridgeDetail
@@ -165,7 +165,7 @@ GLOBE.OnionooDetail.reopenClass({
return detailObj;
});
- }else{
+ } else {
return new Em.RSVP.Promise(function (resolve) {
resolve(storedDetail);
});
@@ -177,7 +177,7 @@ GLOBE.OnionooDetail.reopenClass({
* @param {String} order parameter for the onionoo `?order` parameter
* @returns {Promise}
*/
- top10: function(order){
+ top10: function(order) {
var that = this;
var fields = ['fingerprint', 'nickname', 'advertised_bandwidth', 'last_restarted', 'country', 'flags', 'or_addresses', 'dir_address', 'running', 'hashed_fingerprint'];
@@ -191,7 +191,7 @@ GLOBE.OnionooDetail.reopenClass({
url += '&running=true';
GLOBE.incrementProperty('loading');
- return GLOBE.getJSON(url).then(function(result){
+ return GLOBE.getJSON(url).then(function(result) {
GLOBE.decrementProperty('loading');
return that.applyDetailDefaults(result, {
@@ -200,4 +200,4 @@ GLOBE.OnionooDetail.reopenClass({
});
});
}
-});
\ No newline at end of file
+});
diff --git a/src/js/models/OnionooUptimeHistory.js b/src/js/models/OnionooUptimeHistory.js
index 1bc3309..3d5a676 100644
--- a/src/js/models/OnionooUptimeHistory.js
+++ b/src/js/models/OnionooUptimeHistory.js
@@ -9,9 +9,9 @@ GLOBE.OnionooUptimeHistory.reopenClass({
* @param {Boolean} isHashed flag if the given hash is already hashed
* @returns {Promise}
*/
- find: function(fingerprint, isHashed){
+ find: function(fingerprint, isHashed) {
var hashedFingerprint = fingerprint;
- if(!isHashed){
+ if (!isHashed) {
// use generate hashed fingerprint if not already hashed
hashedFingerprint = GLOBE.Util.hashFingerprint(fingerprint);
}
@@ -19,10 +19,10 @@ GLOBE.OnionooUptimeHistory.reopenClass({
hashedFingerprint = hashedFingerprint.toUpperCase();
var url = '/uptime?lookup=' + hashedFingerprint;
- return GLOBE.getJSON(url).then(function(result){
+ return GLOBE.getJSON(url).then(function(result) {
return GLOBE.Util.compute3DaysHistory(GLOBE.Util.processHistoryResponse({
uptime: 'uptime'
}, result));
});
}
-});
\ No newline at end of file
+});
diff --git a/src/js/models/OnionooWeightsHistory.js b/src/js/models/OnionooWeightsHistory.js
index 87be542..31c98cc 100644
--- a/src/js/models/OnionooWeightsHistory.js
+++ b/src/js/models/OnionooWeightsHistory.js
@@ -8,10 +8,10 @@ GLOBE.OnionooWeightsHistory.reopenClass({
* @param {Boolean} isHashed
* @returns {Promise}
*/
- find: function(fingerprint, isHashed){
+ find: function(fingerprint, isHashed) {
var hashedFingerprint = fingerprint;
- if(!isHashed){
+ if (!isHashed) {
// use generate hashed fingerprint if not already hashed
hashedFingerprint = GLOBE.Util.hashFingerprint(fingerprint);
}
@@ -20,7 +20,7 @@ GLOBE.OnionooWeightsHistory.reopenClass({
var url = '/weights?lookup=' + hashedFingerprint;
- return GLOBE.getJSON(url).then(function(result){
+ return GLOBE.getJSON(url).then(function(result) {
return GLOBE.Util.compute3DaysHistory(GLOBE.Util.processHistoryResponse({
consensusWeightFraction: 'consensus_weight_fraction',
guardProbability: 'guard_probability',
diff --git a/src/js/models/TemporaryStore.js b/src/js/models/TemporaryStore.js
index 5b83334..99a2a84 100644
--- a/src/js/models/TemporaryStore.js
+++ b/src/js/models/TemporaryStore.js
@@ -18,12 +18,12 @@ GLOBE.TemporaryStore.reopenClass({
* @example
* GLOBE.TemporaryStore.store('details', 'uid123465' , {foo: 'bar'});
*/
- store: function(where, hashedFingerprint, obj){
+ store: function(where, hashedFingerprint, obj) {
// use only uppercase fingerprints
hashedFingerprint = hashedFingerprint.toUpperCase();
// check if store has property in _where
- if(this.storage.hasOwnProperty('_' + where)){
+ if (this.storage.hasOwnProperty('_' + where)) {
this.storage['_' + where][hashedFingerprint] = obj;
}
@@ -37,17 +37,17 @@ GLOBE.TemporaryStore.reopenClass({
* @example
* var storedItem = NAMESPACE.TemporaryStore.find('details', 'uid123465');
*/
- find: function(where, hashedFingerprint){
+ find: function(where, hashedFingerprint) {
// use only uppercase fingerprints
hashedFingerprint = hashedFingerprint.toUpperCase();
var obj;
// check if store has property in _where
- if(this.storage.hasOwnProperty('_' + where)){
+ if (this.storage.hasOwnProperty('_' + where)) {
obj = this.storage['_' + where][hashedFingerprint];
}
return obj;
}
-});
\ No newline at end of file
+});
diff --git a/src/js/routes/BridgeDetailRoute.js b/src/js/routes/BridgeDetailRoute.js
index 806004a..4943964 100644
--- a/src/js/routes/BridgeDetailRoute.js
+++ b/src/js/routes/BridgeDetailRoute.js
@@ -1,11 +1,11 @@
/*global GLOBE, Em */
GLOBE.BridgeDetailRoute = Em.Route.extend({
- model: function(params){
+ model: function(params) {
return params.fingerprint;
},
- setupController: function(controller, fingerprint){
+ setupController: function(controller, fingerprint) {
- GLOBE.OnionooDetail.find(fingerprint).then(function(item){
+ GLOBE.OnionooDetail.find(fingerprint).then(function(item) {
// check if found bridge
if (item.bridge.hasOwnProperty('hashed_fingerprint')) {
@@ -18,7 +18,7 @@ GLOBE.BridgeDetailRoute = Em.Route.extend({
bandwidth: GLOBE.OnionooBandwidthHistory.find(fingerprint, true),
uptime: GLOBE.OnionooUptimeHistory.find(fingerprint, true),
clients: GLOBE.OnionooClientsHistory.find(fingerprint, true)
- }).then(function(result){
+ }).then(function(result) {
controller.setProperties({
bandwidthPeriods: result.bandwidth.bridges.periods,
diff --git a/src/js/routes/RelayDetailRoute.js b/src/js/routes/RelayDetailRoute.js
index 8682825..bcdf6fc 100644
--- a/src/js/routes/RelayDetailRoute.js
+++ b/src/js/routes/RelayDetailRoute.js
@@ -1,12 +1,12 @@
/*global GLOBE, Em */
GLOBE.RelayDetailRoute = Em.Route.extend({
- model: function(params){
+ model: function(params) {
return params.fingerprint;
},
- setupController: function(controller, fingerprint){
+ setupController: function(controller, fingerprint) {
var that = this;
- GLOBE.OnionooDetail.find(fingerprint).then(function(item){
+ GLOBE.OnionooDetail.find(fingerprint).then(function(item) {
// check if found relay
if (item.relay.hasOwnProperty('fingerprint')) {
@@ -21,7 +21,7 @@ GLOBE.RelayDetailRoute = Em.Route.extend({
weight: GLOBE.OnionooWeightsHistory.find(fingerprint),
bandwidth: GLOBE.OnionooBandwidthHistory.find(fingerprint),
uptime: GLOBE.OnionooUptimeHistory.find(fingerprint)
- }).then(function(result){
+ }).then(function(result) {
controller.setProperties({
weightPeriods: result.weight.relays.periods,
@@ -35,7 +35,7 @@ GLOBE.RelayDetailRoute = Em.Route.extend({
controller.updatePeriods(['weightData', 'bandwidthData', 'uptimeData']);
});
- } else if(item.bridge && item.bridge.hasOwnProperty('hashed_fingerprint')) {
+ } else if (item.bridge && item.bridge.hasOwnProperty('hashed_fingerprint')) {
// has bridge but no relay
that.replaceWith('bridgeDetail', item.bridge.hashed_fingerprint);
} else {
@@ -47,4 +47,4 @@ GLOBE.RelayDetailRoute = Em.Route.extend({
GLOBE.set('title', controller.get('model') ? 'Details for ' + controller.get('nickname') + ' | Relay' : GLOBE.static.messages.detailsNotFound);
});
}
-});
\ No newline at end of file
+});
diff --git a/src/js/routes/StaticRoutes.js b/src/js/routes/StaticRoutes.js
index e49e3a9..75fe424 100644
--- a/src/js/routes/StaticRoutes.js
+++ b/src/js/routes/StaticRoutes.js
@@ -3,7 +3,7 @@
* Route for /index
*/
GLOBE.IndexRoute = Em.Route.extend({
- activate: function(){
+ activate: function() {
GLOBE.set('title', '');
}
});
@@ -12,7 +12,7 @@ GLOBE.IndexRoute = Em.Route.extend({
* Route for /code
*/
GLOBE.CodeRoute = Em.Route.extend({
- activate: function(){
+ activate: function() {
GLOBE.set('title', 'Code');
}
});
@@ -21,7 +21,7 @@ GLOBE.CodeRoute = Em.Route.extend({
* Route for /help
*/
GLOBE.HelpRoute = Em.Route.extend({
- activate: function(){
+ activate: function() {
GLOBE.set('title', 'Help');
}
});
\ No newline at end of file
diff --git a/src/js/routes/SummarySearchRoute.js b/src/js/routes/SummarySearchRoute.js
index af96785..e76cf5e 100644
--- a/src/js/routes/SummarySearchRoute.js
+++ b/src/js/routes/SummarySearchRoute.js
@@ -1,14 +1,14 @@
/*global $, GLOBE, Em */
GLOBE.SummarySearchRoute = Em.Route.extend({
- deactivate: function(){
+ deactivate: function() {
// clear alerts for search
GLOBE.clearAlert('search');
},
- model: function(params){
+ model: function(params) {
return params.query;
},
- setupController: function(controller, params){
+ setupController: function(controller, params) {
// deparam querystring
var deparamd = $.deparam(params),
query = deparamd.query,
@@ -18,8 +18,8 @@ GLOBE.SummarySearchRoute = Em.Route.extend({
fields = ['fingerprint', 'nickname', 'advertised_bandwidth', 'last_restarted', 'country', 'flags', 'or_addresses', 'dir_address', 'running', 'hashed_fingerprint'];
// set controller filters from params
- for(var filter in filters){
- if(filters.hasOwnProperty(filter)){
+ for (var filter in filters) {
+ if (filters.hasOwnProperty(filter)) {
controller.set('controllers.application.advancedSearchOptions.' + filter, filters[filter]);
}
}
@@ -31,7 +31,7 @@ GLOBE.SummarySearchRoute = Em.Route.extend({
controller.set('controllers.application.query', query);
// check if query is a 40 char hex and hash if it's true
- if(GLOBE.Util.is40CharHex(query)){
+ if (GLOBE.Util.is40CharHex(query)) {
query = GLOBE.Util.hashFingerprint(query);
}
@@ -42,9 +42,9 @@ GLOBE.SummarySearchRoute = Em.Route.extend({
query: query,
filter: filters,
fields: fields
- }).then(function(summaries){
+ }).then(function(summaries) {
// show message if there are too much results
- if(summaries.relays.length + summaries.bridges.length >= GLOBE.static.numbers.maxSearchResults){
+ if (summaries.relays.length + summaries.bridges.length >= GLOBE.static.numbers.maxSearchResults) {
GLOBE.setAlert('search', 'info', GLOBE.static.messages.specifyYourSearch);
}
@@ -66,4 +66,4 @@ GLOBE.SummarySearchRoute = Em.Route.extend({
GLOBE.setAlert('search', 'warn', GLOBE.static.messages.invalidSearchTerm);
});
}
-});
\ No newline at end of file
+});
diff --git a/src/js/routes/Top10Route.js b/src/js/routes/Top10Route.js
index bcb7248..da3b8e4 100644
--- a/src/js/routes/Top10Route.js
+++ b/src/js/routes/Top10Route.js
@@ -1,11 +1,11 @@
/*global GLOBE, Em */
GLOBE.Top10Route = Em.Route.extend({
- activate: function(){
+ activate: function() {
GLOBE.set('title', 'Top 10 relays');
},
- setupController: function(controller){
+ setupController: function(controller) {
// update main search bar
- GLOBE.OnionooDetail.top10('-consensus_weight').then(function(summaries){
+ GLOBE.OnionooDetail.top10('-consensus_weight').then(function(summaries) {
controller.set('content', summaries.relays);
});
}
diff --git a/src/js/views/DetailViews.js b/src/js/views/DetailViews.js
index dfc6914..e4cafc5 100644
--- a/src/js/views/DetailViews.js
+++ b/src/js/views/DetailViews.js
@@ -1,19 +1,19 @@
/*global GLOBE, Em */
GLOBE.RelayDetailView = Em.View.extend({
- didInsertElement: function(){
+ didInsertElement: function() {
this.$('.has-tip').qtip(GLOBE.static.qtipConf.detail);
this.get('controller').on('content-ready', Em.run.bind(this, this.bindQTip));
},
- bindQTip: function(){
- Em.run.scheduleOnce('afterRender', this, function(){
+ bindQTip: function() {
+ Em.run.scheduleOnce('afterRender', this, function() {
// remove old tips and init again
this.$('.has-tip').qtip('destroy', true);
this.$('.has-tip').qtip(GLOBE.static.qtipConf.detail);
});
},
- willDestroyElement: function(){
+ willDestroyElement: function() {
this.$('.has-tip').qtip('destroy', true);
}
});
diff --git a/src/js/views/HistoryGraphView.js b/src/js/views/HistoryGraphView.js
index 899ab4a..a5158d1 100644
--- a/src/js/views/HistoryGraphView.js
+++ b/src/js/views/HistoryGraphView.js
@@ -11,9 +11,9 @@ GLOBE.HistoryGraphView = Em.View.extend({
dygraph: null,
hasGraph: false,
- click: function(e){
+ click: function(e) {
// check if clicked element has save-as-png in classList
- if(e.target.classList.contains('save-as-png')){
+ if (e.target.classList.contains('save-as-png')) {
var dygraph = this.get('dygraph');
var tmpImage = document.createElement('image');
@@ -23,7 +23,7 @@ GLOBE.HistoryGraphView = Em.View.extend({
}
},
- plot: function(){
+ plot: function() {
var graphOpts = this.get('graphOpts');
var selector = this.$()[0].id;
var $graphCanvas = $('#' + selector).find('.graph-canvas');
@@ -48,23 +48,23 @@ GLOBE.HistoryGraphView = Em.View.extend({
h = 0;
// check if view width/height are set and use these values, otherwise use computed and store them
- if(storedWidth === 0){
+ if (storedWidth === 0) {
w = $graphCanvas.width();
this.set('width', w);
- }else{
+ } else {
w = storedWidth;
}
- if(storedHeight === 0){
+ if (storedHeight === 0) {
h = $graphCanvas.height() || 250;
this.set('height', h);
- }else{
+ } else {
h = storedHeight;
}
// check what histories data to use
- for(var i = 0, max = graphs.length; i < max; i++){
+ for (var i = 0, max = graphs.length; i < max; i++) {
var graph = graphs[i];
- if(data.hasOwnProperty(graph)){
+ if (data.hasOwnProperty(graph)) {
histories.push(data[graph]);
}
}
@@ -75,22 +75,22 @@ GLOBE.HistoryGraphView = Em.View.extend({
var countedHistory = 0;
var maxVal = 0;
- for(var j = 0, max2 = histories.length; j < max2; j++){
+ for (var j = 0, max2 = histories.length; j < max2; j++) {
var history = histories[j];
// get the data from the chosen period out of the chosen history object
- if(history && history[period] && history[period].values){
+ if (history && history[period] && history[period].values) {
- for(var historyValueIndex = 0, historyValues = history[period].values.length; historyValueIndex < historyValues; historyValueIndex++){
+ for (var historyValueIndex = 0, historyValues = history[period].values.length; historyValueIndex < historyValues; historyValueIndex++) {
var value = history[period].values[historyValueIndex];
// check if map has something in value[0] (timestamp)
- if(dateValueMap.hasOwnProperty(value[0])){
+ if (dateValueMap.hasOwnProperty(value[0])) {
// has already something @timestamp
// check if value has values.length that is plausible with the number of already history items
dateValueMap[value[0]][countedHistory] = value[1];
- }else{
+ } else {
// has nothing for this timestamp
// example execution: dateValueMap[1373286150000] = [,,20234.072];
dateValueMap[value[0]] = [];
@@ -104,8 +104,8 @@ GLOBE.HistoryGraphView = Em.View.extend({
// merge everything into a dygraph format ( [timestamp, value1, value2, ...] )
var dataset = [];
- for(var dateValue in dateValueMap){
- if(dateValueMap.hasOwnProperty(dateValue)){
+ for (var dateValue in dateValueMap) {
+ if (dateValueMap.hasOwnProperty(dateValue)) {
var dateValueItem = dateValueMap[dateValue];
// create array with first position for timestamp
@@ -118,11 +118,11 @@ GLOBE.HistoryGraphView = Em.View.extend({
}
- if(!dataset.length){
+ if (!dataset.length) {
$graphCanvas.html('<div class="missing-data">No data available :(</div>');
this.set('hasGraph', false);
return;
- }else{
+ } else {
this.set('hasGraph', true);
// clear area that holds all the views content
$graphCanvas.html('');
@@ -148,9 +148,9 @@ GLOBE.HistoryGraphView = Em.View.extend({
this.set('dygraph', dygraph);
},
- timePeriodChanged: function(){
+ timePeriodChanged: function() {
var selectedTimePeriod = this.get('period');
- if(selectedTimePeriod !== null){
+ if (selectedTimePeriod !== null) {
this.set('timePeriod', selectedTimePeriod);
this.plot();
}
diff --git a/src/js/views/SummariesView.js b/src/js/views/SummariesView.js
index 3e60988..71e396e 100644
--- a/src/js/views/SummariesView.js
+++ b/src/js/views/SummariesView.js
@@ -9,7 +9,7 @@ GLOBE.BaseSummariesView = Em.View.extend({
classNames: ['relay-summary-list'],
- didInsertElement: function(){
+ didInsertElement: function() {
var that = this;
var $el = this.$();
var table = $el.dataTable({
@@ -25,29 +25,29 @@ GLOBE.BaseSummariesView = Em.View.extend({
'aoColumns': this.get('columnDefinition')
});
- $el.on('click', 'tr', function(){
+ $el.on('click', 'tr', function() {
// set function scope and parameter ( == view scope )
that.rowClickedHandler.call(this, that);
});
this.set('dataTable', table);
Em.$(window).on('resize', function () {
- Em.run.throttle(null, function(){
+ Em.run.throttle(null, function() {
table.fnAdjustColumnSizing();
}, 150);
});
},
- createTableDataItem: function(){return {};},
- rowClickedHandler: function(){},
+ createTableDataItem: function() {return {};},
+ rowClickedHandler: function() {},
- dataChanged: function(){
+ dataChanged: function() {
var data = this.get('data');
var table = this.get('dataTable');
- if(data){
+ if (data) {
var tableData = [];
- for(var i = 0, max = data.length; i < max; i++){
+ for (var i = 0, max = data.length; i < max; i++) {
tableData.push(this.createTableDataItem(data[i]));
}
@@ -59,15 +59,15 @@ GLOBE.BaseSummariesView = Em.View.extend({
}
}.observes('data.length'),
- willDestroyElement: function(){
+ willDestroyElement: function() {
this.$('.has-tip').qtip('destroy', true);
},
- isVisibleChanged: function(){
+ isVisibleChanged: function() {
var table = this.get('dataTable');
var visible = this.get('parentView.isVisible');
- if(visible && table){
- setTimeout(function(){
+ if (visible && table) {
+ setTimeout(function() {
table.fnAdjustColumnSizing();
}, 0);
@@ -113,13 +113,13 @@ GLOBE.RelaySummariesView = GLOBE.BaseSummariesView.extend({
'mRender': GLOBE.Formatter.boolean,
'mDataProp': 'running'
}],
- rowClickedHandler: function(scope){
+ rowClickedHandler: function(scope) {
var item = scope.get('dataTable').fnGetData(this);
- if(item && item.hasOwnProperty('fingerprint') && item.fingerprint.length === 40){
+ if (item && item.hasOwnProperty('fingerprint') && item.fingerprint.length === 40) {
scope.get('controller').send('showRelayDetail', item.fingerprint);
}
},
- createTableDataItem: function(item){
+ createTableDataItem: function(item) {
return {
'running': item.running,
'nickname': item.nickname,
@@ -166,13 +166,13 @@ GLOBE.BridgeSummariesView = GLOBE.BaseSummariesView.extend({
'mRender': GLOBE.Formatter.boolean,
'mDataProp': 'running'
}],
- rowClickedHandler: function(scope){
+ rowClickedHandler: function(scope) {
var item = scope.get('dataTable').fnGetData(this);
- if(item && item.hasOwnProperty('fingerprint') && item.fingerprint.length === 40){
+ if (item && item.hasOwnProperty('fingerprint') && item.fingerprint.length === 40) {
scope.get('controller').send('showBridgeDetail', item.fingerprint);
}
},
- createTableDataItem: function(item){
+ createTableDataItem: function(item) {
return {
'nickname': item.nickname,
'advertisedBandwidth': item.advertised_bandwidth,
1
0
commit 37d0a57e9d59eaafd32ffe10f6ced023759e9a94
Merge: ddc034a 1c81a61
Author: Isis Lovecruft <isis(a)torproject.org>
Date: Mon Aug 17 01:24:33 2015 +0000
Merge branch 'trac-16828'
src/js/application/app.js | 50 ++++++++++++------------
src/js/components/AlertBoxComponent.js | 2 +-
src/js/components/BandwidthStatsComponent.js | 8 ++--
src/js/components/LoadingIndicatorComponent.js | 2 +-
src/js/controllers/ApplicationController.js | 24 ++++++------
src/js/controllers/Top10Controller.js | 2 +-
src/js/helpers/dataTablesRenderer.js | 8 ++--
src/js/helpers/formatter.js | 28 ++++++-------
src/js/helpers/handlebarsHelper.js | 38 +++++++++---------
src/js/helpers/util.js | 48 +++++++++++------------
src/js/mixins/ContentReadyTriggerableMixin.js | 2 +-
src/js/mixins/PeriodsMixin.js | 16 ++++----
src/js/models/OnionooBandwidthHistory.js | 8 ++--
src/js/models/OnionooClientsHistory.js | 8 ++--
src/js/models/OnionooDetail.js | 50 ++++++++++++------------
src/js/models/OnionooUptimeHistory.js | 8 ++--
src/js/models/OnionooWeightsHistory.js | 6 +--
src/js/models/TemporaryStore.js | 10 ++---
src/js/routes/BridgeDetailRoute.js | 8 ++--
src/js/routes/RelayDetailRoute.js | 12 +++---
src/js/routes/StaticRoutes.js | 6 +--
src/js/routes/SummarySearchRoute.js | 18 ++++-----
src/js/routes/Top10Route.js | 6 +--
src/js/views/DetailViews.js | 8 ++--
src/js/views/HistoryGraphView.js | 40 +++++++++----------
src/js/views/SummariesView.js | 36 ++++++++---------
26 files changed, 226 insertions(+), 226 deletions(-)
1
0
commit ddc034a7a2d64a9aa995279b18be710f186dc6a4
Merge: 01f90b1 6db3d02
Author: Isis Lovecruft <isis(a)torproject.org>
Date: Mon Aug 17 01:10:14 2015 +0000
Merge branch 'trac-16827'
src/js/templates/summarySearch.hbs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
1
0
[globe/master] Fix word spacing and capitalization in search result summary
by isis@torproject.org 16 Aug '15
by isis@torproject.org 16 Aug '15
16 Aug '15
commit 6db3d02ec21321c79221e6510bbb627caf09efc0
Author: Chaoyi Zha <summermontreal(a)gmail.com>
Date: Sun Aug 16 01:19:38 2015 -0400
Fix word spacing and capitalization in search result summary
Signed-off-by: Isis Lovecruft <isis(a)torproject.org>
---
src/js/templates/summarySearch.hbs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/js/templates/summarySearch.hbs b/src/js/templates/summarySearch.hbs
index 7b2eba8..3128412 100644
--- a/src/js/templates/summarySearch.hbs
+++ b/src/js/templates/summarySearch.hbs
@@ -7,13 +7,13 @@
{{ bind-attr class=":tabbed-item relaysActive:tabbed-active" }}
{{ action activateSummaries 'relays'}}>
<div {{ bind-attr class=":indicator relays.length:indicator-important" }}>{{ controller.relays.length }}</div>
- <span>Relays</span>
+ <span> relays</span>
</div>
<div
{{ bind-attr class=":tabbed-item bridgesActive:tabbed-active" }}
{{ action activateSummaries 'bridges'}}>
<div {{ bind-attr class=":indicator bridges.length:indicator-important" }}>{{ controller.bridges.length }}</div>
- <span>Bridges</span>
+ <span> bridges</span>
</div>
</h3>
@@ -25,4 +25,4 @@
{{/view}}
</div>
</div>
-</div>
\ No newline at end of file
+</div>
1
0
[tor-browser/tor-browser-38.2.0esr-5.5-1] fixup! Bug #15502. Isolate blob, mediasource & mediastream URLs to first party
by mikeperry@torproject.org 16 Aug '15
by mikeperry@torproject.org 16 Aug '15
16 Aug '15
commit b5ded517ea69201328825c95785200cb1c5bb829
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Wed Aug 12 12:26:34 2015 -0700
fixup! Bug #15502. Isolate blob, mediasource & mediastream URLs to first party
---
dom/base/nsHostObjectProtocolHandler.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dom/base/nsHostObjectProtocolHandler.cpp b/dom/base/nsHostObjectProtocolHandler.cpp
index 429938b..114b45c 100644
--- a/dom/base/nsHostObjectProtocolHandler.cpp
+++ b/dom/base/nsHostObjectProtocolHandler.cpp
@@ -351,7 +351,7 @@ nsHostObjectProtocolHandler::RemoveDataEntry(const nsACString& aUri,
{
if (gDataTable) {
DataInfo* info = GetDataInfo(aUri);
- if (info->mFirstPartyHost == aIsolationKey) {
+ if (info && info->mFirstPartyHost == aIsolationKey) {
nsCString uriIgnoringRef;
int32_t hashPos = aUri.FindChar('#');
if (hashPos < 0) {
1
0
16 Aug '15
commit 1eaebdd5a59a1ba22e3001aecc4329720a5255a2
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Sun Aug 16 14:06:53 2015 -0700
Bump versions for 5.0.1.
---
Bundle-Data/Docs/ChangeLog.txt | 4 ++++
gitian/versions | 2 +-
tools/update-responses/config.yml | 7 ++++---
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 10fc5a1..5795e76 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,7 @@
+Tor Browser 5.0.1 -- August 18 2015
+ * All Platforms
+ * Bug 16771: Fix crash on some websites due to blob URIs
+
Tor Browser 5.5a1 -- August 11 2015
* All Platforms
* Update Firefox to 38.2.0esr
diff --git a/gitian/versions b/gitian/versions
index 6b6f290..98238c6 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -8,7 +8,7 @@ FIREFOX_VERSION=38.2.0esr
TORBROWSER_UPDATE_CHANNEL=release
-TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.0-1-build2
+TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.0-1-build3
TOR_TAG=tor-0.2.6.10
TORLAUNCHER_TAG=0.2.7.7
TORBUTTON_TAG=1.9.3.2
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index 4d2e7cb..fd0e1ee 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -10,14 +10,15 @@ build_targets:
osx64: Darwin_x86_64-gcc3
channels:
alpha: 5.5a1
- release: 5.0
+ release: 5.0.1
versions:
- 5.0:
+ 5.0.1:
platformVersion: 38.2.0
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
- download_url: https://www.torproject.org/dist/torbrowser/5.0
+ download_url: https://www.torproject.org/dist/torbrowser/5.0.1
incremental_from:
- 4.5.3
+ - 5.0
migrate_archs:
osx32: osx64
osx32:
1
0
[tor-browser/tor-browser-38.2.0esr-5.0-1] fixup! Bug #15502. Isolate blob, mediasource & mediastream URLs to first party
by mikeperry@torproject.org 16 Aug '15
by mikeperry@torproject.org 16 Aug '15
16 Aug '15
commit 52e988762c262920f52a7f4b9b89c64f04da3c4c
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Wed Aug 12 12:26:34 2015 -0700
fixup! Bug #15502. Isolate blob, mediasource & mediastream URLs to first party
---
dom/base/nsHostObjectProtocolHandler.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dom/base/nsHostObjectProtocolHandler.cpp b/dom/base/nsHostObjectProtocolHandler.cpp
index 429938b..114b45c 100644
--- a/dom/base/nsHostObjectProtocolHandler.cpp
+++ b/dom/base/nsHostObjectProtocolHandler.cpp
@@ -351,7 +351,7 @@ nsHostObjectProtocolHandler::RemoveDataEntry(const nsACString& aUri,
{
if (gDataTable) {
DataInfo* info = GetDataInfo(aUri);
- if (info->mFirstPartyHost == aIsolationKey) {
+ if (info && info->mFirstPartyHost == aIsolationKey) {
nsCString uriIgnoringRef;
int32_t hashPos = aUri.FindChar('#');
if (hashPos < 0) {
1
0
[translation/bridgedb_completed] Update translations for bridgedb_completed
by translation@torproject.org 16 Aug '15
by translation@torproject.org 16 Aug '15
16 Aug '15
commit 1f1e7b9d2a3906b007f297fb9913d8b21022d90a
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Aug 16 19:15:09 2015 +0000
Update translations for bridgedb_completed
---
tr/LC_MESSAGES/bridgedb.po | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/tr/LC_MESSAGES/bridgedb.po b/tr/LC_MESSAGES/bridgedb.po
index 785f4de..d2b7ac3 100644
--- a/tr/LC_MESSAGES/bridgedb.po
+++ b/tr/LC_MESSAGES/bridgedb.po
@@ -26,7 +26,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: 'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB&keywo…'POT-Creation-Date: 2015-03-19 22:13+0000\n"
-"PO-Revision-Date: 2015-08-02 14:03+0000\n"
+"PO-Revision-Date: 2015-08-16 18:54+0000\n"
"Last-Translator: Ozancan Karataş <ozancankaratas96(a)outlook.com>\n"
"Language-Team: Turkish (http://www.transifex.com/otf/torproject/language/tr/)\n"
"MIME-Version: 1.0\n"
@@ -64,7 +64,7 @@ msgstr "İşte köprüleriniz:"
msgid ""
"You have exceeded the rate limit. Please slow down! The minimum time between\n"
"emails is %s hours. All further emails during this time period will be ignored."
-msgstr "E-posta kotanızı aştınız. Lütfen yavaşlayın! E-postalar arasındaki minimum zaman %s saattir.\nBu süre içinde göndereceğiniz diğer e-postalarınız yok sayılacaktır."
+msgstr "E-posta sınırınızı aştınız. Lütfen yavaşlayın! E-postalar arasındaki en az zaman %s saattir.\nBu süre içinde göndereceğiniz diğer e-postalarınız yok sayılacaktır."
#: lib/bridgedb/strings.py:25
msgid ""
@@ -74,12 +74,12 @@ msgstr "KOMUTlar: (birden fazla seçeneğı aynı anda belirtmek için KOMUTlar
#. TRANSLATORS: Please DO NOT translate the word "BridgeDB".
#: lib/bridgedb/strings.py:28
msgid "Welcome to BridgeDB!"
-msgstr "BridgeDB yazılımına hoş geldiniz!"
+msgstr "BridgeDB'ye hoş geldiniz!"
#. TRANSLATORS: Please DO NOT translate the words "transport" or "TYPE".
#: lib/bridgedb/strings.py:30
msgid "Currently supported transport TYPEs:"
-msgstr "Şu an desteklenen aktarım TYPEleri:"
+msgstr "Şu an desteklenen aktarım TİPleri:"
#: lib/bridgedb/strings.py:31
#, python-format
1
0