Apps/<your Dropbox app>/، وتُرسَل التغييرات التي تُجرى في Overleaf إلى Dropbox، وتعود التغييرات التي تُجرى في Dropbox إلى Overleaf.
إعداد المزامنة مع Dropbox
أنشئ تطبيقًا في Dropbox App Console، بعد تسجيل الدخول بحساب Dropbox الذي سيملك التطبيق:- انقر على Create app، ثم املأ الصفحة:
- 1. Choose an API: اختر Scoped access.
- 2. Choose the type of access you need: اختر App folder، وليس Full Dropbox. لا يزامن Overleaf إلا داخل مجلد التطبيق.
- 3. Name your app: أدخل اسمًا، مثل
Overleaf. يجب أن يكون فريدًا على Dropbox. تظهر مشاريع كل مستخدم فيApps/<name of your app>/في Dropbox الخاص به، وهذا الاسم هوDROPBOX_APP_NAMEأدناه. - انقر على Create app. يُفتح التطبيق على علامة التبويب Settings.
- في علامة التبويب Permissions، ضمن Files and folders، حدّد
files.metadata.writeوfiles.content.writeوfiles.content.read. يُحدَّدaccount_info.readوfiles.metadata.readمعها ولا يمكن إلغاء تحديدهما. لا تحدّد أي صلاحيات أخرى. - انقر على Submit في الشريط أسفل علامة التبويب Permissions. بدون Submit لا تُحفظ الصلاحيات، ويرفض Dropbox مزامنة الملفات للمستخدمين الذين يربطون حساباتهم.

Dropbox App Console: الصلاحيات التي يجب تحديدها، محفوظة عبر Submit
- في علامة التبويب Settings، ضمن OAuth 2، أدخل
${OVERLEAF_SITE_URL}/user/dropbox/oauth/callbackفي Redirect URIs، ثم انقر على Add. لا تكفي كتابة العنوان: فهو لا يُحفظ إلا بعد ظهوره في القائمة فوق الحقل.

Dropbox App Console: أدخل عنوان إعادة التوجيه، ثم انقر على Add
- في علامة التبويب Settings، ضمن Webhooks، أدخل
${OVERLEAF_SITE_URL}/dropbox/webhookفي Webhook URIs، ثم انقر على Add أيضًا. يستدعيه Dropbox فورًا للتحقق منه، لذا يجب أن يكون Overleaf قيد التشغيل مسبقًا بالإعدادات أدناه وأن يكون قابلًا للوصول من الإنترنت (راجع Webhook). تظهر حالته Enabled بمجرد نجاح التحقق.
DROPBOX_SYNC_PROXY_URL=http://10.0.0.1:10808. يجب أن يكون وكيلًا أماميًا قياسيًا من نوع HTTP/HTTPS، ويجب ألا يستخدم 127.0.0.1.
إنشاء فهارس قاعدة البيانات
شغّل هذا مرة واحدة، قبل أن يربط المستخدمون حساباتهم على Dropbox. لا تُنشأ الفهارس التي تستخدمها المزامنة مع Dropbox تلقائيًا، لذا بدونها يمسح كل بحث مزامنة المجموعة (collection) بأكملها. مستخدمو Toolkit: شغّلواbin/mongo. مستخدمو Docker Compose: شغّلوا docker compose exec mongo mongosh sharelatex. ثم الصقوا:
dropboxEntities الموجودة في tools/migrations: إذ يحذف 20220825160708_recreate_dropboxEntities المجموعة، مما يمحو حالة المزامنة لكل مستخدم.Webhook
يُبلغ Dropbox نظام Overleaf بالتغييرات التي تُجرى في Dropbox عبر webhook، لذا تظهر في Overleaf خلال ثوانٍ. يُرسَل الـ webhook إلى عنوان موقعك،${OVERLEAF_SITE_URL}/dropbox/webhook، ولا حاجة إلى منفذ إضافي، لكن يجب أن يتمكن Dropbox من الوصول إليه من الإنترنت. عند إضافته في App Console، يتحقق منه Dropbox فورًا.
بدون webhook، على سبيل المثال على خادم لا يستطيع Dropbox الوصول إليه، تظل التغييرات التي تُجرى في Overleaf تُرسَل إلى Dropbox، لكن التغييرات التي تُجرى في Dropbox لا تعود إلا عندما ينقر المستخدم على sync this project now في نافذة Dropbox في المحرر.
كيف تعمل المزامنة
- الربط: عندما يربط المستخدم حسابه على Dropbox، تُرسَل المشاريع التي يملكها إلى Dropbox. أما المشاريع المشتركة معه فتظهر في Dropbox مع تغييرها التالي.
- من Overleaf إلى Dropbox: تُرسَل الملفات الجديدة وعمليات إعادة التسمية والنقل والحذف وإعادة تسمية المشاريع فورًا. أما التعديلات في المحرر فتُرسَل بمجرد أن يحفظها Overleaf في مساحة التخزين الخاصة به، بعد بضع دقائق من مغادرة الجميع للمشروع. لإرسالها في وقت أبكر، انقر على sync this project now في نافذة Dropbox في المحرر (مرة واحدة كل دقيقة).
- من Dropbox إلى Overleaf: تُطبَّق الملفات الجديدة والمعدّلة والمجلدات الجديدة وعمليات الحذف في مجلد المشروع على المشروع. ويصبح المجلد الجديد في المستوى الأعلى من مجلد التطبيق مشروعًا جديدًا. ويؤدي حذف مجلد مشروع في Dropbox إلى وضع علامة “محذوف” على المشروع في Overleaf.
- التعارضات: عندما يتغيّر ملف في كلا المكانين في الوقت نفسه، يفوز التغيير الأخير. وقد يحتفظ Dropbox بالنسخة الأخرى كـ conflicted copy.
- المتعاونون: يحصل المتعاونون الذين يربطون حساباتهم على Dropbox على المشاريع المشتركة معهم. ويحصل المشاهدون ذوو صلاحية القراءة فقط والمراجعون على المشروع، لكن تغييراتهم في Dropbox لا تُزامَن عائدةً إلى Overleaf.
- الملفات المتجاهلة: تبقى الملفات التي لا يزامنها Overleaf، مثل مخرجات البناء (
.auxو.logو …) أو.DS_Storeأو بيئات Python الافتراضية، في Dropbox فقط.
أسئلة وأجوبة (Q&A)
لماذا لا يستطيع مستخدم ربط حسابه على Dropbox؟
لماذا لا يستطيع مستخدم ربط حسابه على Dropbox؟
- يُطابَق مجلد Dropbox الذي لا يعرفه Overleaf بعد مع مشروع حسب اسمه، لذا يُطلب من المستخدم الذي تشترك مشاريعه في اسم واحد إعادة تسميتها أولًا. تُقارَن الأسماء دون تمييز بين الأحرف الكبيرة والصغيرة، وتُحتسب المشاريع المؤرشفة والمنقولة إلى سلة المهملات أيضًا.
- لا يمكن ربط حساب Dropbox إلا بحساب Overleaf واحد.
لماذا أُلغي ربط حساب Dropbox؟
لماذا أُلغي ربط حساب Dropbox؟
هل يمكنني إعادة تسمية مجلد مشروع في Dropbox؟
هل يمكنني إعادة تسمية مجلد مشروع في Dropbox؟
لماذا تحمل بعض مجلدات المشاريع أرقامًا، مثل «Thesis (1)»؟
لماذا تحمل بعض مجلدات المشاريع أرقامًا، مثل «Thesis (1)»؟
ماذا يحدث عندما أحذف مجلد مشروع في Dropbox؟
ماذا يحدث عندما أحذف مجلد مشروع في Dropbox؟
- إذا لم يكن هناك مشروع آخر يحمل اسم المجلد، يوضع على المشروع علامة “محذوف” في Overleaf. وتُحفَظ ملفاته وسجله.
- إذا كانت عدة مشاريع تحمل ذلك الاسم، فلا يستطيع Overleaf معرفة المشروع الذي كان المجلد يخصه. فيُلغي ربط حساب Dropbox ويعرض إشعارًا يطلب إعادة تسمية المشاريع. امنح المشاريع أسماء مختلفة قبل حذف مجلداتها في Dropbox.
- المجلد المرقّم، مثل «Thesis (1)»، لا يطابق أي اسم مشروع، لذا لا يؤدي حذفه إلى تغيير المشروع في Overleaf. انقر على sync this project now في نافذة Dropbox في المحرر لإرسال المشروع إلى Dropbox مرة أخرى.
ماذا يحدث في Dropbox عندما أحذف مشروعًا في Overleaf؟
ماذا يحدث في Dropbox عندما أحذف مشروعًا في Overleaf؟
ماذا يحدث للتغييرات في Dropbox بينما يكون المشروع مؤرشفًا أو في سلة المهملات؟
ماذا يحدث للتغييرات في Dropbox بينما يكون المشروع مؤرشفًا أو في سلة المهملات؟
لماذا يفتح رابط Dropbox في المحرر الصفحة الرئيسية لـ Dropbox؟
لماذا يفتح رابط Dropbox في المحرر الصفحة الرئيسية لـ Dropbox؟
Apps/<app folder>/<project> على dropbox.com، كما في Overleaf Cloud. وعندما يعرض Dropbox مجلد Apps باسم مترجم، على سبيل المثال 应用 بالصينية، لا يعثر الرابط على المجلد ويفتح Dropbox صفحته الرئيسية بدلًا من ذلك. افتح مجلد المشروع من مجلد Apps المترجم في Dropbox.لماذا تنقص بعض ملفات المشروع في Dropbox؟
لماذا تنقص بعض ملفات المشروع في Dropbox؟

