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. אופציונלי: אם רוצים להפעיל את מגרש המשחקים של Blockly, צריך להעתיק את הספריות blocks, generators ו-tests, וגם את הקבצים בשלב 5.
  7. מריצים את מפעיל האפליקציות של Google App Engine מה-GUI, מוסיפים את הספרייה של appengine כאפליקציה קיימת ולוחצים על הלחצן "Deploy" (פריסה). אם אתם מעדיפים להשתמש בשורת הפקודה, עליכם להריץ את הפקודה: appcfg.py --oauth2 update appengine/.

לאחר ההעלאה של Blockly, תוכלו להפנות את הדפדפן לכתובת ה-URL שיצרתם בשלב 2. אמורה להופיע רשימת הדגמות, כולל הדגמת האחסון בענן.

לדבר עם הענן

בודקים את המקור של ההדגמה של האחסון בכתובת demos/storage/index.html ומציינים את התכונות הבאות. בשלב הראשון יש סקריפט שטוען את Cloud Storage API:

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

שימו לב שהסקריפט הזה מניח שבדף יש רק סביבת עבודה אחת של Blockly. בנוסף, קיימות הגדרות להודעות שכדאי לשנות לפי הצורך:

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));
}

אחסון מקומי

ממשק ה-API של storage.js מאפשר גם לשמור קבוצה אחת של בלוקים באחסון המקומי של הדפדפן. אפשר להשתמש באפשרות הזו במקום באחסון בענן, או בנוסף לנפח האחסון בענן (אם כי במקרה כזה צריך לשים לב לשני סוגי האחסון שמנסים לשחזר בבת אחת).

כדי לשחזר חסימות מאחסון מקומי, יש להתקשר אל BlocklyStorage.restoreBlocks בתום הזמן הקצוב מיד אחרי החדרת ה-Blockly.

setTimeout(BlocklyStorage.restoreBlocks, 0);

כדי לגבות באופן אוטומטי את החסימות לאחסון המקומי, כשהמשתמש עוזב את הדף, צריך להתקשר אל BlocklyStorage.backupOnUnload. לאחר מכן המערכת תרשום האזנה לאירועים באירוע של הסרת הנתונים שנטענו מהדף.

BlocklyStorage.backupOnUnload();

דוגמה

הנה הדגמה חיה של אחסון בענן.