From 2f61dfca4466661e1ea23888675a86b601b58c63 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Mon, 30 Jan 2012 14:35:11 -0800
Subject: Setting up new file
Adding base functionality to creating files.
---
js/io/system/coreioapi.js | 64 ++++++++++++------
js/io/system/fileio.js | 169 +++++++++++++++++++++++++++++++++++-----------
2 files changed, 175 insertions(+), 58 deletions(-)
(limited to 'js/io')
diff --git a/js/io/system/coreioapi.js b/js/io/system/coreioapi.js
index 1585fc33..a10063f5 100755
--- a/js/io/system/coreioapi.js
+++ b/js/io/system/coreioapi.js
@@ -7,7 +7,6 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
/* /////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
NOTES:
-These methods should only be access through the file and project IO classes.
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////// */
var Montage = require("montage/core/core").Montage,
@@ -20,22 +19,29 @@ exports.CoreIoApi = Montage.create(Component, {
deserializedFromTemplate: {
enumerable: false,
value: function () {
- ////////////////////////////////////////////////////////////
-
- //TODO: Add logic for getting rooUrl from local storage
-
- ////////////////////////////////////////////////////////////
-
-
-
- //Checking for status of I/O API
- this.ioDetected = this.isActive();
- //TODO: Add welcome screen logic, probably externally
+ //Checking for local storage of URL for IO
+ if (window.localStorage['ioRootUrl']) {
+ //Getting URL from local storage
+ this.rootUrl = window.localStorage['ioRootUrl'];
+ //Checks for IO API to be active
+ this.ioServiceDetected = this.isIoServiceActive();
+ //
+ console.log('FileIO: localStorage URL detected | IO Service Detected: '+ this.ioServiceDetected);
+ //
+ } else {
+ //TODO: Remove, automatically prompt user on welcome
+ this.rootUrl = 'http://localhost:16380';
+ //TODO: Changed to false, welcome screen prompts user
+ this.ioServiceDetected = this.isIoServiceActive();
+ //
+ console.log('FileIO: localStorage URL NOT detected | IO Service Detected: '+ this.ioServiceDetected);
+ //
+ }
}
},
////////////////////////////////////////////////////////////////////
//Method to check status of I/O API, will return false if not active
- isActive: {
+ isIoServiceActive: {
enumerable: false,
value: function () {
//Doing a directory root check, a 200 status means running
@@ -47,27 +53,27 @@ exports.CoreIoApi = Montage.create(Component, {
}
},
////////////////////////////////////////////////////////////////////
- //Root API URL
- _ioDetected: {
+ //
+ _ioServiceDetected: {
enumerable: false,
value: false
},
////////////////////////////////////////////////////////////////////
- //
- ioDetected: {
+ //Checking for service availability on boot
+ ioServiceDetected: {
enumerable: false,
get: function() {
- return this._ioDetected;
+ return this._ioServiceDetected;
},
set: function(value) {
- this._ioDetected = value;
+ this._ioServiceDetected = value;
}
},
////////////////////////////////////////////////////////////////////
//Root API URL
_rootUrl: {
enumerable: false,
- value: 'http://localhost:16380'
+ value: null
},
////////////////////////////////////////////////////////////////////
//
@@ -78,6 +84,24 @@ exports.CoreIoApi = Montage.create(Component, {
},
set: function(value) {
this._rootUrl = value;
+ window.localStorage["ioRootUrl"] = value;
+ }
+ },
+ ////////////////////////////////////////////////////////////////////
+ //API service URL
+ _apiServiceURL: {
+ enumerable: false,
+ value: '/'
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ apiServiceURL: {
+ enumerable: false,
+ get: function() {
+ return this.rootUrl+this._apiServiceURL;
+ },
+ set: function(value) {
+ this._apiServiceURL = value;
}
},
////////////////////////////////////////////////////////////////////
diff --git a/js/io/system/fileio.js b/js/io/system/fileio.js
index 1d76a91b..b3158a68 100755
--- a/js/io/system/fileio.js
+++ b/js/io/system/fileio.js
@@ -3,22 +3,139 @@ This file contains proprietary software owned by Motorola Mobility, Inc.
No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
*/
+/* /////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////
+NOTES:
-//Required modules
-var Serializer = require("montage/core/serializer").Serializer;
+ For newFile, only the 'uri' is required, if contents is empty, such
+ empty file will be created. 'contents' should be a string to be saved
+ as the file. 'contentType' is the mime type of the file.
+
+////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////// */
+//
+var Montage = require("montage/core/core").Montage,
+ CoreIoApi = require("js/io/system/coreioapi").CoreIoApi;
+////////////////////////////////////////////////////////////////////////
//Exporting as File I/O
-exports.FileIo = (require("montage/core/core").Montage).create(Object.prototype, {
- /*
-create: {
- enumerable: true,
- value: function (type) {
- //
- }
- },
-*/
+exports.FileIo = Montage.create(Object.prototype, {
////////////////////////////////////////////////////////////////////
- //
- open: {
+ //newFile Object (*required): {uri*, contents, contentType}
+ //Return codes
+ // 204: File exists | 400: File exists | 404: File does not exists
+ // 201: File succesfully created | 500: Unknown | undefined: Unknown
+ newFile: {
+ enumerable: true,
+ value: function(file) {
+ //Checking for API to be available
+ if (!CoreIoApi.isIoServiceActive()) {
+ //API not available, no IO action taken
+ return null;
+ }
+ //Peforming check for file to exist
+ var check = CoreIoApi.fileExists(file.uri), status, create;
+ //Upon successful check, handling results
+ if (check.success) {
+ //Handling status of check
+ switch (check.status) {
+ case 204:
+ //Storing status to be returned (for UI handling)
+ status = check.status;
+ break;
+ case 404:
+ //File does not exists, ready to be created
+ create = CoreIoApi.createFile(file);
+ //Storing status to be returned (for UI handling)
+ if (create.success) {
+ status = check.status;
+ }
+ break;
+ default:
+ //Unknown Error
+ break;
+ }
+ } else {
+ //Unknown Error
+ }
+ //Returning resulting code
+ return status;
+ }
+ },
+ readFile: {
+ enumerable: true,
+ value: function() {
+ //
+ }
+ },
+ saveFile: {
+ enumerable: true,
+ value: function() {
+ //
+ }
+ },
+ copyFile: {
+ enumerable: true,
+ value: function() {
+ //
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /*
+open: {
enumerable: true,
value: function(doc, type, uri, server) {
//
@@ -70,32 +187,7 @@ create: {
enumerable: true,
value: function(type, id, components) {
- /*
-
- GETS HTML IN LOADED DOCUMENT
- document.getElementById('userDocument').contentDocument.documentElement.outerHTML
-
- GETS HTML IN
AND OR ANYTHING INSIDE
- document.getElementById('userDocument').contentDocument.documentElement.innerHTML
-
- THE ABOVE METHOD SEEMS TO BE BETTER JUST IN CASE PEOPLE REMOVE THE BODY TAG SINCE NOT REQUIRED IN HTML5
-
- GETS HTML IN ONLY
- document.getElementById('userDocument').contentDocument.body.innerHTML
- HACK TO GET THE STYLES OF THE ELEMENTS ADDED WHILE DRAWING
- document.getElementById('userDocument').contentDocument.styleSheets[document.getElementById('userDocument').contentDocument.styleSheets.length-1]
-
- CSS SEEMS TO BE RESERVED WHEN APPENDED, MEANING 0 IN THE ARRAY IS ACTUALLY THE LAST DEFINED STYLE IN THE CSS
-
- //GETS CSS RULES APPLIED TO ALL OBJECTS CREATED BY THE APP
- document.getElementById('userDocument').contentDocument.styleSheets[document.getElementById('userDocument').contentDocument.styleSheets.length-1].cssRules
-
- document.getElementById('userDocument').contentDocument.getElementById('userHead').innerHTML
- document.getElementById('userDocument').contentDocument.getElementById('UserContent').innerHTML
- this.getCssFromRules(document.getElementById('userDocument').contentDocument.styleSheets[document.getElementById('userDocument').contentDocument.styleSheets.length-1].cssRules)
-
- */
//
var contents, counter = 0;
@@ -215,6 +307,7 @@ create: {
return css;
}
}
+*/
--
cgit v1.2.3
From 3b4291c783c4b8fb07f111a240049069277f3c49 Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Mon, 30 Jan 2012 18:19:00 -0800
Subject: Core API initialization routine
Setting up the core API routine to check for cloud API availability. Also cleaned up template files for IO and set up initial string contents.
---
js/io/system/coreioapi.js | 58 ++++++++++++++++++++++++--------
js/io/system/fileio.js | 8 ++++-
js/io/templates/files/_bin/template.css | 0
js/io/templates/files/_bin/template.html | 0
js/io/templates/files/_bin/template.js | 0
js/io/templates/files/_bin/template.json | 0
js/io/templates/files/_bin/template.php | 0
js/io/templates/files/_bin/template.pl | 0
js/io/templates/files/_bin/template.py | 0
js/io/templates/files/_bin/template.rb | 0
js/io/templates/files/_bin/template.xml | 0
js/io/templates/files/_bin/xml.txt | 0
js/io/templates/files/css.txt | 2 ++
js/io/templates/files/html.txt | 19 +++++++++++
js/io/templates/files/js.txt | 1 +
js/io/templates/files/php.txt | 3 ++
js/io/templates/files/pl.txt | 1 +
js/io/templates/files/py.txt | 1 +
js/io/templates/files/rb.txt | 1 +
js/io/templates/files/template.css | 0
js/io/templates/files/template.html | 0
js/io/templates/files/template.js | 0
js/io/templates/files/template.json | 0
js/io/templates/files/template.php | 0
js/io/templates/files/template.pl | 0
js/io/templates/files/template.py | 0
js/io/templates/files/template.rb | 0
js/io/templates/files/template.xml | 0
js/io/templates/files/xml.txt | 0
29 files changed, 79 insertions(+), 15 deletions(-)
create mode 100755 js/io/templates/files/_bin/template.css
create mode 100755 js/io/templates/files/_bin/template.html
create mode 100755 js/io/templates/files/_bin/template.js
create mode 100755 js/io/templates/files/_bin/template.json
create mode 100755 js/io/templates/files/_bin/template.php
create mode 100755 js/io/templates/files/_bin/template.pl
create mode 100755 js/io/templates/files/_bin/template.py
create mode 100755 js/io/templates/files/_bin/template.rb
create mode 100755 js/io/templates/files/_bin/template.xml
create mode 100755 js/io/templates/files/_bin/xml.txt
delete mode 100755 js/io/templates/files/template.css
delete mode 100755 js/io/templates/files/template.html
delete mode 100755 js/io/templates/files/template.js
delete mode 100755 js/io/templates/files/template.json
delete mode 100755 js/io/templates/files/template.php
delete mode 100755 js/io/templates/files/template.pl
delete mode 100755 js/io/templates/files/template.py
delete mode 100755 js/io/templates/files/template.rb
delete mode 100755 js/io/templates/files/template.xml
delete mode 100755 js/io/templates/files/xml.txt
(limited to 'js/io')
diff --git a/js/io/system/coreioapi.js b/js/io/system/coreioapi.js
index a10063f5..33c7bc28 100755
--- a/js/io/system/coreioapi.js
+++ b/js/io/system/coreioapi.js
@@ -24,7 +24,7 @@ exports.CoreIoApi = Montage.create(Component, {
//Getting URL from local storage
this.rootUrl = window.localStorage['ioRootUrl'];
//Checks for IO API to be active
- this.ioServiceDetected = this.isIoServiceActive();
+ this.ioServiceDetected = this.cloudAvailable();
//
console.log('FileIO: localStorage URL detected | IO Service Detected: '+ this.ioServiceDetected);
//
@@ -32,7 +32,7 @@ exports.CoreIoApi = Montage.create(Component, {
//TODO: Remove, automatically prompt user on welcome
this.rootUrl = 'http://localhost:16380';
//TODO: Changed to false, welcome screen prompts user
- this.ioServiceDetected = this.isIoServiceActive();
+ this.ioServiceDetected = this.cloudAvailable();
//
console.log('FileIO: localStorage URL NOT detected | IO Service Detected: '+ this.ioServiceDetected);
//
@@ -41,13 +41,16 @@ exports.CoreIoApi = Montage.create(Component, {
},
////////////////////////////////////////////////////////////////////
//Method to check status of I/O API, will return false if not active
- isIoServiceActive: {
+ cloudAvailable: {
enumerable: false,
value: function () {
- //Doing a directory root check, a 200 status means running
- if (this.getDirectoryContents({uri:'/'}).status === 200) {
+ //
+ if (this.getCloudStatus().status === 200) {
+ //Active
return true;
} else {
+ //Inactive
+ //TODO: Logic to prompt the user for cloud, otherwise return false
return false;
}
}
@@ -83,22 +86,21 @@ exports.CoreIoApi = Montage.create(Component, {
return this._rootUrl;
},
set: function(value) {
- this._rootUrl = value;
- window.localStorage["ioRootUrl"] = value;
+ this._rootUrl = window.localStorage["ioRootUrl"] = value;
}
},
////////////////////////////////////////////////////////////////////
//API service URL
_apiServiceURL: {
enumerable: false,
- value: '/'
+ value: '/cloudstatus'
},
////////////////////////////////////////////////////////////////////
//
apiServiceURL: {
enumerable: false,
get: function() {
- return this.rootUrl+this._apiServiceURL;
+ return String(this.rootUrl+this._apiServiceURL);
},
set: function(value) {
this._apiServiceURL = value;
@@ -115,7 +117,7 @@ exports.CoreIoApi = Montage.create(Component, {
fileServiceURL: {
enumerable: false,
get: function() {
- return this.rootUrl+this._fileServiceURL;
+ return String(this.rootUrl+this._fileServiceURL);
},
set: function(value) {
this._fileServiceURL = value;
@@ -132,7 +134,7 @@ exports.CoreIoApi = Montage.create(Component, {
directoryServiceURL: {
enumerable: false,
get: function() {
- return this.rootUrl+this._directoryServiceURL;
+ return String(this.rootUrl+this._directoryServiceURL);
},
set: function(value) {
this._directoryServiceURL = value;
@@ -921,10 +923,38 @@ exports.CoreIoApi = Montage.create(Component, {
}
return retValue;
}
+ },
+ ////////////////////////////////////////////////////////////////////
+ //
+ getCloudStatus: {
+ enumerable: false,
+ writable:false,
+ value: function() {
+ //
+ var retValue = {success:null, status:null};
+ //
+ try {
+ var serviceURL = this._prepareServiceURL(this.apiServiceURL, '/'),
+ xhr = new XMLHttpRequest();
+ //
+ xhr.open("GET", serviceURL, false);
+ xhr.send();
+ //
+ if (xhr.readyState === 4) {
+ retValue.status = xhr.status;
+ retValue.success = true;
+ }
+ }
+ catch(error) {
+ xhr = null;
+ retValue.success = false;
+ }
+ //
+ return retValue;
+ }
}
-
-
-
+ ////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////
});
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/js/io/system/fileio.js b/js/io/system/fileio.js
index b3158a68..38ab05e8 100755
--- a/js/io/system/fileio.js
+++ b/js/io/system/fileio.js
@@ -28,7 +28,7 @@ exports.FileIo = Montage.create(Object.prototype, {
enumerable: true,
value: function(file) {
//Checking for API to be available
- if (!CoreIoApi.isIoServiceActive()) {
+ if (!CoreIoApi.cloudAvailable()) {
//API not available, no IO action taken
return null;
}
@@ -78,6 +78,12 @@ exports.FileIo = Montage.create(Object.prototype, {
value: function() {
//
}
+ },
+ infoFile: {
+ enumerable: true,
+ value: function() {
+ //
+ }
}
diff --git a/js/io/templates/files/_bin/template.css b/js/io/templates/files/_bin/template.css
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.html b/js/io/templates/files/_bin/template.html
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.js b/js/io/templates/files/_bin/template.js
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.json b/js/io/templates/files/_bin/template.json
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.php b/js/io/templates/files/_bin/template.php
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.pl b/js/io/templates/files/_bin/template.pl
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.py b/js/io/templates/files/_bin/template.py
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.rb b/js/io/templates/files/_bin/template.rb
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/template.xml b/js/io/templates/files/_bin/template.xml
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/_bin/xml.txt b/js/io/templates/files/_bin/xml.txt
new file mode 100755
index 00000000..e69de29b
diff --git a/js/io/templates/files/css.txt b/js/io/templates/files/css.txt
index e69de29b..07da1f8a 100755
--- a/js/io/templates/files/css.txt
+++ b/js/io/templates/files/css.txt
@@ -0,0 +1,2 @@
+@charset "UTF-8";
+/* Created with Motorola Mobility Ninja */
diff --git a/js/io/templates/files/html.txt b/js/io/templates/files/html.txt
index e69de29b..15641348 100755
--- a/js/io/templates/files/html.txt
+++ b/js/io/templates/files/html.txt
@@ -0,0 +1,19 @@
+
+
+
+
+ Untitled
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/js/io/templates/files/js.txt b/js/io/templates/files/js.txt
index e69de29b..0a6e79c2 100755
--- a/js/io/templates/files/js.txt
+++ b/js/io/templates/files/js.txt
@@ -0,0 +1 @@
+/* Created with Motorola Mobility Ninja */
diff --git a/js/io/templates/files/php.txt b/js/io/templates/files/php.txt
index e69de29b..95e76401 100755
--- a/js/io/templates/files/php.txt
+++ b/js/io/templates/files/php.txt
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/js/io/templates/files/pl.txt b/js/io/templates/files/pl.txt
index e69de29b..ee414436 100755
--- a/js/io/templates/files/pl.txt
+++ b/js/io/templates/files/pl.txt
@@ -0,0 +1 @@
+# Created with Motorola Mobility Ninja
diff --git a/js/io/templates/files/py.txt b/js/io/templates/files/py.txt
index e69de29b..abc89039 100755
--- a/js/io/templates/files/py.txt
+++ b/js/io/templates/files/py.txt
@@ -0,0 +1 @@
+# Created with Motorola Mobility Ninja
\ No newline at end of file
diff --git a/js/io/templates/files/rb.txt b/js/io/templates/files/rb.txt
index e69de29b..abc89039 100755
--- a/js/io/templates/files/rb.txt
+++ b/js/io/templates/files/rb.txt
@@ -0,0 +1 @@
+# Created with Motorola Mobility Ninja
\ No newline at end of file
diff --git a/js/io/templates/files/template.css b/js/io/templates/files/template.css
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.html b/js/io/templates/files/template.html
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.js b/js/io/templates/files/template.js
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.json b/js/io/templates/files/template.json
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.php b/js/io/templates/files/template.php
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.pl b/js/io/templates/files/template.pl
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.py b/js/io/templates/files/template.py
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.rb b/js/io/templates/files/template.rb
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/template.xml b/js/io/templates/files/template.xml
deleted file mode 100755
index e69de29b..00000000
diff --git a/js/io/templates/files/xml.txt b/js/io/templates/files/xml.txt
deleted file mode 100755
index e69de29b..00000000
--
cgit v1.2.3