Uygulamanız App Engine'de barındırılıyorsa kullanıcıların programlarını kaydetmesine, yüklemesine, paylaşmasına ve yayınlamasına olanak tanıyan bir bulut depolama hizmeti mevcuttur.
App Engine'i ayarlama
İlk hedef, kendi Enginely uygulamanızı kopyalayarak App Engine'de çalıştırmaktır.
- Python SDK'sını indirip yükleyin.
- Google App Engine'e giriş yapın ve bir uygulama oluşturun.
appengine/app.yaml
ifadesini düzenleyin veblockly-demo
olan uygulama kimliğini önceki adımda oluşturduğunuz uygulama adıyla değiştirin.- Aşağıdaki dosyaları ve dizinleri
appengine/static/
klasörüne kopyalayın (veya geride bırakın):demos/
msg/
media/
*_compressed.js
- İsteğe bağlı: Sunucuda
blockly_uncompressed.js
etiketini kullanmak isterseniz bu dosyayıappengine/static/
dosyasına vecore
değerini deappengine/static/
klasörüne kopyalayın. - İsteğe bağlı: Blockly Playground'u çalıştırmak isterseniz 5. adımdaki dosyaların yanı sıra
blocks
,generators
vetests
dizinlerini de kopyalamanız gerekir. - GUI'den Google App Engine Launcher'ı çalıştırın,
appengine
dizininizi mevcut bir uygulama olarak ekleyin ve "Dağıt" düğmesine basın. Komut satırını kullanmayı tercih ederseniz şu komutu çalıştırın:appcfg.py --oauth2 update appengine/
.
Blockly yüklendikten sonra, tarayıcıyı 2. adımda oluşturduğunuz URL'ye yönlendirebilirsiniz. Bulut depolama demosu da dahil olmak üzere demoların bir listesini görürsünüz.
Bulut ile Konuşma
demos/storage/index.html adresindeki depolama demosunun kaynağını inceleyin ve aşağıdaki özelliklere dikkat edin. İlk olarak, cloud storage API'yi yükleyen bir komut dosyası ekleme yöntemi vardır:
<script src="/storage.js"></script>
Bu komut dosyasının, sayfada yalnızca bir Blockly çalışma alanı olduğunu varsayar. Ayrıca, istediğiniz şekilde değiştirmeniz gereken mesaj tanımları da vardır:
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?';
Bu mesajların diğer dillerdeki çevirileri, json dizininde Blockly Games'de bulunabilir.
Mevcut engellemeleri kaydetmek için BlocklyStorage.link()
numaralı telefona tek bir çağrı yapılır:
<button onclick="BlocklyStorage.link()">Save Blocks</button>
Sayfa yüklendiğinde kayıtlı engellemeleri geri yüklemek için Blockly yerleştirildikten sonra URL'nin karmasını içeren BlocklyStorage.retrieveXml
yöntemini çağırın:
if ('BlocklyStorage' in window && window.location.hash.length > 1) { BlocklyStorage.retrieveXml(window.location.hash.substring(1)); }
Yerel Depolama
storage.js
API ayrıca tarayıcının yerel depolama alanına tek bir blok kaydetme seçeneği sunar. Bu, bulut depolama alanı yerine veya bulut depolama alanına ek olarak uygulanabilir (ancak ikinci durumda, aynı anda geri yüklemeye çalışan iki depolama alanı türüne de dikkat edilmelidir).
Yerel depolama alanındaki blokları geri yüklemek için, engelleme işlemi gerçekleştirildikten hemen sonra BlocklyStorage.restoreBlocks
ayarını bir zaman aşımı içinde arayın.
setTimeout(BlocklyStorage.restoreBlocks, 0);
Kullanıcı sayfadan ayrıldığında blokları otomatik olarak yerel depolamaya yedeklemek için BlocklyStorage.backupOnUnload
yöntemini çağırın. Böylece, sayfanın kaldırma etkinliğinde bir etkinlik işleyici kaydeder.
BlocklyStorage.backupOnUnload();
Örnek
Bulut depolama alanının canlı demosunu burada bulabilirsiniz.