Skip to content

Commit

Permalink
[DEBUG] Add Apache Cordova raccoon demo - Not working yet, work in pr…
Browse files Browse the repository at this point in the history
…ogress... - see #27
  • Loading branch information
xavierjs committed Sep 24, 2019
1 parent 121a0bb commit d381562
Show file tree
Hide file tree
Showing 106 changed files with 103,024 additions and 447 deletions.
6 changes: 4 additions & 2 deletions demos/appearance/widget.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
//ref : https://github.com/blog/273-github-ribbons
document.addEventListener("DOMContentLoaded", function(event) {
var githubRibbon=document.createElement('a');
const githubRibbon = document.createElement('a');
githubRibbon.setAttribute('href', 'https://github.com/jeeliz/jeelizWeboji');
var githubRibbonImage=document.createElement('img');
githubRibbon.setAttribute('target', '_blank');

const githubRibbonImage = document.createElement('img');
githubRibbonImage.setAttribute('style', 'position: absolute; top: 0; left: 0; border: 0; z-index: 1000');
githubRibbonImage.setAttribute('src', ' https://camo.githubusercontent.com/82b228a3648bf44fc1163ef44c62fcc60081495e/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f6c6566745f7265645f6161303030302e706e67');
githubRibbonImage.setAttribute('alt', 'Fork me on GitHub');
Expand Down
13 changes: 13 additions & 0 deletions demos/cordova/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Apache2 Cordova demos

These demo are not maintained by Jeeliz. Indeed we only do web development.
With these demos you can run Jeeliz Weboji on iOS in a native environment.
With Android it is easier since the `Webview` component can access to the webcam stream.

Big thanx to [davemee](https://github.com/davemee) who submitted a pull request to add this great workaround.
More details can be found here on [the issue #27](https://github.com/jeeliz/jeelizWeboji/issues/27).

There are 2 subdirectories here:
* (canvas-camera-test)[canvas-camera-test]: Only displays the video from the camera in a native IOS application,
* (raccoon)[raccoon]: The raccoon demo

16 changes: 16 additions & 0 deletions demos/cordova/raccoon/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
To build:

> ionic cordova platform add [email protected]
> ionic cordova build ios
> open platforms/ios/MyApp.xcodeproj
In Xcode:

1. under 'Signing', ensure you have a legitimate Team set up!
2. Ensure device is plugged in and set as destaination
3. Click 'Build and run the current scheme'

On device:

* You may need to ensure the Developer App certificate is trusted for your app

7 changes: 7 additions & 0 deletions demos/cordova/raccoon/bower.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "HelloIonic",
"private": "true",
"devDependencies": {
"ionic": "ionic-team/ionic-bower#1.3.4"
}
}
99 changes: 99 additions & 0 deletions demos/cordova/raccoon/config.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>MyApp</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" />
<access origin="*" />
<allow-navigation href="http://ionic.local/*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="webviewbounce" value="false" />
<preference name="UIWebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
<preference name="android-minSdkVersion" value="16" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<platform name="android">
<allow-intent href="market:*" />
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
<icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
<icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
<icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
<splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
<splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
<splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
<splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
<splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
<splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
<splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
<splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
<splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
<splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
</platform>
<platform name="ios">
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>App uses your camera to make video calls.</string>
</config-file>
<config-file parent="NSContactsUsageDescription" target="*-Info.plist">
<string>App needs access to your contacts in order to be able to call them.</string>
</config-file>
<config-file parent="NSMicrophoneUsageDescription" target="*-Info.plist">
<string>App uses your microphone to make calls.</string>
</config-file>
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/[email protected]" width="114" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
<icon height="80" src="resources/ios/icon/[email protected]" width="80" />
<icon height="120" src="resources/ios/icon/[email protected]" width="120" />
<icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
<icon height="100" src="resources/ios/icon/[email protected]" width="100" />
<icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
<icon height="120" src="resources/ios/icon/[email protected]" width="120" />
<icon height="180" src="resources/ios/icon/[email protected]" width="180" />
<icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
<icon height="144" src="resources/ios/icon/[email protected]" width="144" />
<icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
<icon height="152" src="resources/ios/icon/[email protected]" width="152" />
<icon height="167" src="resources/ios/icon/[email protected]" width="167" />
<icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
<icon height="58" src="resources/ios/icon/[email protected]" width="58" />
<icon height="87" src="resources/ios/icon/[email protected]" width="87" />
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
<splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
<splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
<splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
<splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
<splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
<splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
<splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
<splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
<splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
</platform>
<plugin name="cordova-plugin-device" spec="^1.1.7" />
<plugin name="cordova-plugin-splashscreen" spec="^4.1.0" />
<plugin name="cordova-plugin-statusbar" spec="^2.4.3" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.4" />
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
<plugin name="com.virtuoworks.cordova-plugin-canvascamera" spec="git+https://github.com/VirtuoWorks/CanvasCameraPlugin.git">
<variable name="CAMERA_USAGE_DESCRIPTION" value="Display video preview" />
</plugin>
</widget>
27 changes: 27 additions & 0 deletions demos/cordova/raccoon/gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
var gulp = require('gulp');
var sass = require('gulp-sass');
var cleanCss = require('gulp-clean-css');
var rename = require('gulp-rename');

var paths = {
sass: ['./scss/**/*.scss']
};

gulp.task('default', ['sass']);

gulp.task('sass', function(done) {
gulp.src('./scss/ionic.app.scss')
.pipe(sass())
.on('error', sass.logError)
.pipe(gulp.dest('./www/css/'))
.pipe(cleanCss({
keepSpecialComments: 0
}))
.pipe(rename({ extname: '.min.css' }))
.pipe(gulp.dest('./www/css/'))
.on('end', done);
});

gulp.task('watch', ['sass'], function() {
gulp.watch(paths.sass, ['sass']);
});
1 change: 1 addition & 0 deletions demos/cordova/raccoon/hooks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Please read the Cordova [Hooks Guide](https://cordova.apache.org/docs/en/latest/guide/appdev/hooks/) to learn how to hook into Cordova CLI commands.
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/usr/bin/env node

// Add Platform Class
// v1.0
// Automatically adds the platform class to the body tag
// after the `prepare` command. By placing the platform CSS classes
// directly in the HTML built for the platform, it speeds up
// rendering the correct layout/style for the specific platform
// instead of waiting for the JS to figure out the correct classes.

var fs = require('fs');
var path = require('path');

var rootdir = process.argv[2];

function addPlatformBodyTag(indexPath, platform) {
// add the platform class to the body tag
try {
var platformClass = 'platform-' + platform;
var cordovaClass = 'platform-cordova platform-webview';

var html = fs.readFileSync(indexPath, 'utf8');

var bodyTag = findBodyTag(html);
if(!bodyTag) return; // no opening body tag, something's wrong

if(bodyTag.indexOf(platformClass) > -1) return; // already added

var newBodyTag = bodyTag;

var classAttr = findClassAttr(bodyTag);
if(classAttr) {
// body tag has existing class attribute, add the classname
var endingQuote = classAttr.substring(classAttr.length-1);
var newClassAttr = classAttr.substring(0, classAttr.length-1);
newClassAttr += ' ' + platformClass + ' ' + cordovaClass + endingQuote;
newBodyTag = bodyTag.replace(classAttr, newClassAttr);

} else {
// add class attribute to the body tag
newBodyTag = bodyTag.replace('>', ' class="' + platformClass + ' ' + cordovaClass + '">');
}

html = html.replace(bodyTag, newBodyTag);

fs.writeFileSync(indexPath, html, 'utf8');

process.stdout.write('add to body class: ' + platformClass + '\n');
} catch(e) {
process.stdout.write(e);
}
}

function findBodyTag(html) {
// get the body tag
try{
return html.match(/<body(?=[\s>])(.*?)>/gi)[0];
}catch(e){}
}

function findClassAttr(bodyTag) {
// get the body tag's class attribute
try{
return bodyTag.match(/ class=["|'](.*?)["|']/gi)[0];
}catch(e){}
}

if (rootdir) {

// go through each of the platform directories that have been prepared
var platforms = (process.env.CORDOVA_PLATFORMS ? process.env.CORDOVA_PLATFORMS.split(',') : []);

for(var x=0; x<platforms.length; x++) {
// open up the index.html file at the www root
try {
var platform = platforms[x].trim().toLowerCase();
var indexPath;

if(platform == 'android') {
indexPath = path.join('platforms', platform, 'assets', 'www', 'index.html');
} else {
indexPath = path.join('platforms', platform, 'www', 'index.html');
}

if(fs.existsSync(indexPath)) {
addPlatformBodyTag(indexPath, platform);
}

} catch(e) {
process.stdout.write(e);
}
}

}
9 changes: 9 additions & 0 deletions demos/cordova/raccoon/ionic.config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "little_list",
"app_id": "",
"type": "ionic1",
"integrations": {
"cordova": {},
"gulp": {}
}
}
1 change: 1 addition & 0 deletions demos/cordova/raccoon/jsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Loading

0 comments on commit d381562

Please sign in to comment.