Source of lib-export

/* appjet:version 0.1 */ /* appjet:library */ import('storage'); import('lib-json'); if (!storage.__export) {     storage.__export = new StorableObject(); } /**  * Force the Export panel view  */ function showExportAdminPanel() {     appjet.isPreview == true;     enableStorageExport(); } /**  * Allow the export of app storage  */ function enableStorageExport() {         if (appjet.isPreview) {             if (request.path.match('/import')) {                 if (request.params.password) {                     var json = serializeStorables(storage);                     var json = wpost(request.params.url+'/export', {"password": request.params.password});                     if (json) {                         var obj = unserializeStorables(json);                         if (obj) {                             for(var x in obj) {                                 storage[x] = obj[x];                             }                             print(P({"class""notice"}, "The Import has completed successfully"));                             response.stop(true);                         }                     }                     print(P({"class""notice"}, "The Import failed!"));                 } else {                     print(H4('Import storage from another Application'));                     print(P("The application you are importing from must have lib-storage installed, and enabled. You must know the export password for that app."));                     print(FORM({name: "set-pass""method""post"},                         LABEL({"for""password"}, "External App URL"),                         INPUT({"type""text""name""url"}),                         LABEL({"for""password"}, "External App Password"),                         INPUT({"type""password""name""password"}),                         BUTTON({"type""submit"}, "Import Storage from External App")                     ));                 }             } else if (request.path.match('/export')) {                 if (request.params.password) {                     var json = serializeStorables(storage);                     var result = wpost(request.params.url+'/import', {"json": json, "password": request.params.password});                     if (result == 'ok') {                         print(P({"class""notice"}, "The Import has completed successfully"));                     } else {                         print(P({"class""notice"}, "The Import failed!"));                     }                 } else {                     print(H4('Export storage to another application'));                     print(P("The application you are exporting to must have lib-storage installed, and enabled. You must know the export password for that app."));                     print(FORM({name: "set-pass""method""post"},                         LABEL({"for""password"}, "External App URL"),                         INPUT({"type""text""name""url"}),                         LABEL({"for""password"}, "External App Password"),                         INPUT({"type""password""name""password"}),                         BUTTON({"type""submit"}, "Export Storage to External App")                     ));                 }             } else if (request.path.match('/setpass')) {                 if (request.params.password) {                     storage.__export.password = request.params.password;                     print(P('The export password has been set'));                 } else {                     print(H4('Set Export Password'));                     print(P("The password you set is used to authenticate any application that wants to import your storage objects"));                     print(FORM({name: "set-pass""method""post"},                         LABEL({"for""password"}, "Password"),                         INPUT({"type""password""name""password"}),                         BUTTON({"type""submit"}, "Set export Password")                     ));                 }             } else {                 print(H4("How to export"));                 print(P("You need to install lib-export on both apps."));                 print(P("On the app you want to export to, set an export password."));                 print(P("From the app your are exporting from, choose export, and fill in the target apps password and url.."));                 print(H4("Storage Export Menu"));                 print(UL({"class""nav"},                     LI({"class""nav-item"}, A({"href""/setpass"}, "Set Password")),                     LI({"class""nav-item"}, A({"href""/export"}, "Export")),                     LI({"class""nav-item"}, A({"href""/import"}, "Import"))                 ));             }             response.stop(true);         } else if (request.path.match('/export')) {             if (request.params.password == storage.__export.password) {                 page.setMode('plain');                 var json = serializeStorables(storage);                 print(json);             }             response.stop(true);         } else if (request.path.match('/import')) {             if (request.params.password == storage.__export.password) {                 page.setMode('plain');                 var obj = unserializeStorables(request.params.json);                 if (obj) {                     for(var x in obj) {                         storage[x] = obj[x];                     }                     print('ok');                 } else {                     print('fail');                 }             }             response.stop(true);         } } /**  * Recursively convert a storable object into native JavaScript Object  * @param {storage} Object storable Object or global storage  */ function objectizeStorables(storage) {     if (typeof storage == 'object') {         var obj = {};         for(var x in storage) {             if (x == '__export'continue;             if (storage[x] instanceof StorableCollection) {                 obj[x] = [];                 storage[x].forEach(function(_obj) {                     obj[x].push(objectizeStorables(_obj));                 });             } else if (storage[x] instanceof StorableObject) {                 obj[x] = {};                 for(var y in storage[x]) {                     if (storage[x].hasOwnProperty(y)) {                         obj[x][y] = objectizeStorables(storage[x][y]);                     }                 }             } else {                 obj[x] = storage[x];             }         }         return obj;     }     return storage; } /**  * Serialize a Storable Object to JSON  * @param {storage} Object storable Object or global storage  */ function serializeStorables(storage) {     return JSON.stringify(objectizeStorables(storage)); } /**  * Recursively convert native Objects to storable Object  * @param {obj} Object Native JavaScript Object  */ function storablelizeObjects(obj) {     if (object instanceof Object) {         var storage = {};         for(var x in obj) {             if (obj[x] instanceof Array) {                 storage[x] = new StorableCollection();                 obj[x].forEach(function(_obj) {                     storage[x].add(storablelizeObjects(_obj));                 });             } else if (obj[x] instanceof Object) {                 storage[x] = new StorableObject();                 for(var y in storage[x]) {                     if (storage[x].hasOwnProperty(y)) {                         storage[x][y] = storablelizeObjects(obj[x][y]);                     }                 }             } else {                 storage[x] = obj[x];             }         }         return storage;     }     return obj; } /**  * Unserialize a JSON string into a Storable Object  * Objects become StorableObject and Arrays become StorableCollection Instances  * @param json {String} JSON encode string  */ function unserializeStorables(json) {     try {         var obj = JSON.parse(json);         var Storable = storablelizeObjects(obj);         return Storable;     } catch(e) {         return false;     } }

Go Back to this app | Get plain source

Powered by JGate on AppJet
source
rendered in 6.064s