Cloud Storage

إذا كان تطبيقك مستضافًا على App Engine، تتوفر خدمة تخزين في السحاب تتيح للمستخدمين إمكانية حفظ برامجهم وتحميلها ومشاركتها ونشرها.

إعداد App Engine

والهدف الأول هو الحصول على نسختك الخاصة من Blockly قيد التشغيل في App Engine.

  1. نزِّل Python SDK وثبِّتها.
  2. سجّل الدخول إلى Google App Engine وأنشئ تطبيقًا.
  3. عدّل appengine/app.yaml وغيّر معرّف التطبيق من blockly-demo إلى اسم التطبيق الذي أنشأته في الخطوة السابقة.
  4. انسخ (أو الرابط الإلكتروني) الملفات والأدلة التالية في appengine/static/:
    • demos/
    • msg/
    • media/
    • *_compressed.js
  5. اختياري: إذا كنت تريد استخدام blockly_uncompressed.js على الخادم، يمكنك أيضًا نسخ هذا الملف إلى appengine/static/ ونسخ core إلى appengine/static/.
  6. اختياري: إذا كنت تريد تشغيل أداة "مساحة المرح"، يجب نسخ الأدلة blocks وgenerators وtests بالإضافة إلى الملفات في الخطوة 5.
  7. شغّل مشغل Google App Engine من واجهة المستخدم التصويرية، وأضف دليل appengine كتطبيق حالي، واضغط على الزر "نشر". إذا كنت تفضّل استخدام سطر الأوامر، يمكنك تشغيل: appcfg.py --oauth2 update appengine/.

بعد تحميل Blockly، يمكنك توجيه المتصفح إلى عنوان URL الذي أنشأته في الخطوة 2. من المفترض أن تظهر لك قائمة بالعروض التوضيحية، بما في ذلك العرض التوضيحي لمساحة التخزين في السحابة الإلكترونية.

التكلّم مع السحاب

افحص مصدر العرض التوضيحي لسعة التخزين على demos/storage/index.html ولاحظ الميزات التالية. أولاً، هناك نص برمجي يتضمن تحميل واجهة برمجة تطبيقات Cloud Storage:

<script src="/storage.js"></script>

يُرجى العِلم أنّ هذا النص البرمجي يفترض وجود مساحة عمل واحدة محظورة في الصفحة. هناك أيضًا تعريفات الرسائل هذه، التي ينبغي لك تعديلها على النحو المطلوب:

BlocklyStorage.HTTPREQUEST_ERROR = 'There was a problem with the request.\n';
BlocklyStorage.LINK_ALERT = 'Share your blocks with this link:\n\n%1';
BlocklyStorage.HASH_ERROR = 'Sorry, "%1" doesn\'t correspond with any saved Blockly file.';
BlocklyStorage.XML_ERROR = 'Could not load your saved file.\n' +
    'Perhaps it was created with a different version of Blockly?';

يمكن العثور على ترجمات لهذه الرسائل إلى لغات أخرى في Blockly Games في دليل json.

حفظ عمليات المنع الحالية هو مكالمة واحدة إلى BlocklyStorage.link():

<button onclick="BlocklyStorage.link()">Save Blocks</button>

لاستعادة عمليات الحظر المحفوظة عند تحميل الصفحة، ما عليك سوى استدعاء BlocklyStorage.retrieveXml مع تجزئة عنوان URL بعد إدخال Blockly:

if ('BlocklyStorage' in window && window.location.hash.length > 1) {
  BlocklyStorage.retrieveXml(window.location.hash.substring(1));
}

التخزين المحلي

كما توفر واجهة برمجة تطبيقات storage.js إمكانية حفظ مجموعة واحدة من القوالب في وحدة التخزين المحلية للمتصفح. قد يتم تنفيذ هذا بدلاً من التخزين في السحاب، أو بالإضافة إلى التخزين في السحاب (على الرغم من أنه في الحالة الثانية يجب أن يكون الشخص الحذر من نوعي التخزين اللذين يحاولان استعادتهما في وقت واحد).

لاستعادة عمليات الحظر من التخزين المحلي، يمكنك استدعاء BlocklyStorage.restoreBlocks في مهلة بعد إدخال Blockly مباشرة.

setTimeout(BlocklyStorage.restoreBlocks, 0);

للاحتفاظ بنسخة احتياطية من القوالب تلقائيًا في وحدة التخزين المحلية عندما يغادر المستخدم الصفحة، اتصل بـ BlocklyStorage.backupOnUnload وسيتم تسجيل مسجِّل حدث في حدث إلغاء تحميل الصفحة.

BlocklyStorage.backupOnUnload();

مثال

إليك عرضًا توضيحيًا مباشرًا للسعة التخزينية في السحاب.