mirror of https://github.com/sipwise/ngcp-csc.git
- module scaffolding, colors, font and logo customisation Change-Id: I3a11b66c51e29aed0c5e6d2a8b3ec709eb576932changes/61/9861/5
parent
0e165d6553
commit
a43901f8be
File diff suppressed because it is too large
Load Diff
@ -1,973 +0,0 @@
|
||||
// here, the extra check for window['Ext'] is needed for use with cmd-test
|
||||
// code injection. we need to make that this file will sync up with page global
|
||||
// scope to avoid duplicate Ext.Boot state. That check is after the initial Ext check
|
||||
// to allow the sandboxing template to inject an appropriate Ext var and prevent the
|
||||
// global detection.
|
||||
var Ext = Ext || window['Ext'] || {};
|
||||
|
||||
|
||||
//<editor-fold desc="Microloader">
|
||||
/**
|
||||
* @class Ext.Microloader
|
||||
* @private
|
||||
* @singleton
|
||||
*/
|
||||
Ext.Microloader = Ext.Microloader || (function () {
|
||||
var Boot = Ext.Boot,
|
||||
//<debug>
|
||||
_debug = function (message) {
|
||||
//console.log(message);
|
||||
},
|
||||
//</debug>
|
||||
_warn = function (message) {
|
||||
console.log("[WARN] " + message);
|
||||
},
|
||||
_privatePrefix = '_ext:' + location.pathname,
|
||||
|
||||
/**
|
||||
* @method getStorageKey
|
||||
* The Following combination is used to create isolated local storage keys
|
||||
* '_ext' is used to scope all the local storage keys that we internally by Ext
|
||||
* 'location.pathname' is used to force each assets to cache by an absolute URL (/build/MyApp) (dev vs prod)
|
||||
* 'url' is used to force each asset to cache relative to the page (app.json vs resources/app.css)
|
||||
* 'profileId' is used to differentiate the builds of an application (neptune vs crisp)
|
||||
* 'Microloader.appId' is unique to the application and will differentiate apps on the same host (dev mode running app watch against multiple apps)
|
||||
*/
|
||||
getStorageKey = function(url, profileId) {
|
||||
return _privatePrefix + url + '-' + (profileId ? profileId + '-' : '') + Microloader.appId;
|
||||
},
|
||||
postProcessor, _storage;
|
||||
|
||||
try {
|
||||
_storage = window['localStorage'];
|
||||
} catch(ex) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
var _cache = window['applicationCache'],
|
||||
// Local Storage Controller
|
||||
LocalStorage = {
|
||||
clearAllPrivate: function(manifest) {
|
||||
if(_storage) {
|
||||
|
||||
//Remove the entry for the manifest first
|
||||
_storage.removeItem(manifest.key);
|
||||
|
||||
var i, key,
|
||||
removeKeys = [],
|
||||
suffix = manifest.profile + '-' + Microloader.appId,
|
||||
ln = _storage.length;
|
||||
for (i = 0; i < ln; i++) {
|
||||
key = _storage.key(i);
|
||||
// If key starts with the private key and the suffix is present we can clear this entry
|
||||
if (key.indexOf(_privatePrefix) === 0 && key.indexOf(suffix) !== -1) {
|
||||
removeKeys.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
for(i in removeKeys) {
|
||||
//<debug>
|
||||
_debug("Removing "+ removeKeys[i] + " from Local Storage");
|
||||
//</debug>
|
||||
_storage.removeItem(removeKeys[i]);
|
||||
}
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
retrieveAsset: function (key) {
|
||||
try {
|
||||
return _storage.getItem(key);
|
||||
}
|
||||
catch (e) {
|
||||
// Private browsing mode
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
setAsset: function(key, content) {
|
||||
try {
|
||||
if (content === null || content == '') {
|
||||
_storage.removeItem(key);
|
||||
} else {
|
||||
_storage.setItem(key, content);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
if (_storage && e.code == e.QUOTA_EXCEEDED_ERR) {
|
||||
//<debug>
|
||||
_warn("LocalStorage Quota exceeded, cannot store " + key + " locally");
|
||||
//</debug>
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var Asset = function (cfg) {
|
||||
if (typeof cfg.assetConfig === 'string') {
|
||||
this.assetConfig = {
|
||||
path: cfg.assetConfig
|
||||
};
|
||||
} else {
|
||||
this.assetConfig = cfg.assetConfig;
|
||||
}
|
||||
|
||||
this.type = cfg.type;
|
||||
this.key = getStorageKey(this.assetConfig.path, cfg.manifest.profile);
|
||||
|
||||
if (cfg.loadFromCache) {
|
||||
this.loadFromCache();
|
||||
}
|
||||
};
|
||||
|
||||
Asset.prototype = {
|
||||
shouldCache: function() {
|
||||
return _storage && this.assetConfig.update && this.assetConfig.hash && !this.assetConfig.remote;
|
||||
},
|
||||
|
||||
is: function (asset) {
|
||||
return (!!asset && this.assetConfig && asset.assetConfig && (this.assetConfig.hash === asset.assetConfig.hash))
|
||||
},
|
||||
|
||||
cache: function(content) {
|
||||
if (this.shouldCache()) {
|
||||
LocalStorage.setAsset(this.key, content || this.content);
|
||||
}
|
||||
},
|
||||
|
||||
uncache: function() {
|
||||
LocalStorage.setAsset(this.key, null);
|
||||
},
|
||||
|
||||
updateContent: function (content) {
|
||||
this.content = content;
|
||||
},
|
||||
|
||||
getSize: function () {
|
||||
return this.content ? this.content.length : 0;
|
||||
},
|
||||
|
||||
loadFromCache: function() {
|
||||
if (this.shouldCache()) {
|
||||
this.content = LocalStorage.retrieveAsset(this.key);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var Manifest = function (cfg) {
|
||||
if (typeof cfg.content === "string") {
|
||||
this.content = JSON.parse(cfg.content);
|
||||
} else {
|
||||
this.content = cfg.content;
|
||||
}
|
||||
this.assetMap = {};
|
||||
|
||||
this.url = cfg.url;
|
||||
this.fromCache = !!cfg.cached;
|
||||
this.assetCache = !(cfg.assetCache === false);
|
||||
this.key = getStorageKey(this.url);
|
||||
|
||||
// Pull out select properties for repetitive use
|
||||
this.profile = this.content.profile;
|
||||
this.hash = this.content.hash;
|
||||
this.loadOrder = this.content.loadOrder;
|
||||
this.deltas = this.content.cache ? this.content.cache.deltas : null;
|
||||
this.cacheEnabled = this.content.cache ? this.content.cache.enable : false;
|
||||
|
||||
this.loadOrderMap = (this.loadOrder) ? Boot.createLoadOrderMap(this.loadOrder) : null;
|
||||
|
||||
var tags = this.content.tags,
|
||||
platformTags = Ext.platformTags;
|
||||
|
||||
if (tags) {
|
||||
if (tags instanceof Array) {
|
||||
for (var i = 0; i < tags.length; i++) {
|
||||
platformTags[tags[i]] = true;
|
||||
}
|
||||
} else {
|
||||
Boot.apply(platformTags, tags);
|
||||
}
|
||||
|
||||
// re-apply the query parameters, so that the params as specified
|
||||
// in the url always has highest priority
|
||||
Boot.apply(platformTags, Boot.loadPlatformsParam());
|
||||
}
|
||||
|
||||
// Convert all assets into Assets
|
||||
this.js = this.processAssets(this.content.js, 'js');
|
||||
this.css = this.processAssets(this.content.css, 'css');
|
||||
};
|
||||
|
||||
Manifest.prototype = {
|
||||
processAsset: function(assetConfig, type) {
|
||||
var processedAsset = new Asset({
|
||||
manifest: this,
|
||||
assetConfig: assetConfig,
|
||||
type: type,
|
||||
loadFromCache: this.assetCache
|
||||
});
|
||||
this.assetMap[assetConfig.path] = processedAsset;
|
||||
return processedAsset;
|
||||
},
|
||||
|
||||
processAssets: function(assets, type) {
|
||||
var results = [],
|
||||
ln = assets.length,
|
||||
i, assetConfig;
|
||||
|
||||
for (i = 0; i < ln; i++) {
|
||||
assetConfig = assets[i];
|
||||
results.push(this.processAsset(assetConfig, type));
|
||||
}
|
||||
|
||||
return results;
|
||||
},
|
||||
|
||||
useAppCache: function() {
|
||||
return true;
|
||||
},
|
||||
|
||||
// Concatenate all assets for easy access
|
||||
getAssets: function () {
|
||||
return this.css.concat(this.js);
|
||||
},
|
||||
|
||||
getAsset: function (path) {
|
||||
return this.assetMap[path];
|
||||
},
|
||||
|
||||
shouldCache: function() {
|
||||
return this.hash && this.cacheEnabled;
|
||||
},
|
||||
|
||||
cache: function(content) {
|
||||
if (this.shouldCache()) {
|
||||
LocalStorage.setAsset(this.key, JSON.stringify(content || this.content));
|
||||
}
|
||||
//<debug>
|
||||
else {
|
||||
_debug("Manifest caching is disabled.");
|
||||
}
|
||||
//</debug>
|
||||
},
|
||||
|
||||
is: function(manifest) {
|
||||
//<debug>
|
||||
_debug("Testing Manifest: " + this.hash + " VS " + manifest.hash);
|
||||
//</debug>
|
||||
return this.hash === manifest.hash;
|
||||
},
|
||||
|
||||
// Clear the manifest from local storage
|
||||
uncache: function() {
|
||||
LocalStorage.setAsset(this.key, null);
|
||||
},
|
||||
|
||||
exportContent: function() {
|
||||
return Boot.apply({
|
||||
loadOrderMap: this.loadOrderMap
|
||||
}, this.content);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Microloader
|
||||
* @type {Array}
|
||||
* @private
|
||||
*/
|
||||
var _listeners = [],
|
||||
_loaded = false,
|
||||
Microloader = {
|
||||
init: function () {
|
||||
Ext.microloaded = true;
|
||||
|
||||
// data-app is in the dev template for an application and is also
|
||||
// injected into the app my CMD for production
|
||||
// We use this to prefix localStorage cache to prevent collisions
|
||||
var microloaderElement = document.getElementById('microloader');
|
||||
Microloader.appId = microloaderElement ? microloaderElement.getAttribute('data-app') : '';
|
||||
|
||||
if (Ext.beforeLoad) {
|
||||
postProcessor = Ext.beforeLoad(Ext.platformTags);
|
||||
}
|
||||
|
||||
var readyHandler = Ext._beforereadyhandler;
|
||||
|
||||
Ext._beforereadyhandler = function () {
|
||||
if (Ext.Boot !== Boot) {
|
||||
Ext.apply(Ext.Boot, Boot);
|
||||
Ext.Boot = Boot;
|
||||
}
|
||||
if (readyHandler) {
|
||||
readyHandler();
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
applyCacheBuster: function(url) {
|
||||
var tstamp = new Date().getTime(),
|
||||
sep = url.indexOf('?') === -1 ? '?' : '&';
|
||||
url = url + sep + "_dc=" + tstamp;
|
||||
return url;
|
||||
},
|
||||
|
||||
run: function() {
|
||||
Microloader.init();
|
||||
var manifest = Ext.manifest;
|
||||
|
||||
if (typeof manifest === "string") {
|
||||
var extension = ".json",
|
||||
url = manifest.indexOf(extension) === manifest.length - extension.length
|
||||
? manifest
|
||||
: manifest + ".json",
|
||||
key = getStorageKey(url),
|
||||
content = LocalStorage.retrieveAsset(key);
|
||||
|
||||
// Manifest found in local storage, use this for immediate boot except in PhantomJS environments for building.
|
||||
if (content) {
|
||||
//<debug>
|
||||
_debug("Manifest file, '" + url + "', was found in Local Storage");
|
||||
//</debug>
|
||||
manifest = new Manifest({
|
||||
url: url,
|
||||
content: content,
|
||||
cached: true
|
||||
});
|
||||
if (postProcessor) {
|
||||
postProcessor(manifest);
|
||||
}
|
||||
Microloader.load(manifest);
|
||||
|
||||
|
||||
// Manifest is not in local storage. Fetch it from the server
|
||||
} else {
|
||||
//<debug>
|
||||
_debug("Manifest file was not found in Local Storage, loading: " + url);
|
||||
//</debug>
|
||||
|
||||
if (location.href.indexOf('file:/') === 0) {
|
||||
Manifest.url = Microloader.applyCacheBuster(url + 'p');
|
||||
Boot.load(Manifest.url);
|
||||
}
|
||||
else {
|
||||
Boot.fetch(Microloader.applyCacheBuster(url), function(result) {
|
||||
Microloader.setManifest(result.content);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Embedded Manifest into JS file
|
||||
} else {
|
||||
//<debug>
|
||||
_debug("Manifest was embedded into application javascript file");
|
||||
//</debug>
|
||||
manifest = new Manifest({
|
||||
content: manifest
|
||||
});
|
||||
Microloader.load(manifest);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
* @param cfg
|
||||
*/
|
||||
setManifest: function(cfg) {
|
||||
var manifest = new Manifest({
|
||||
url: Manifest.url,
|
||||
content: cfg
|
||||
});
|
||||
manifest.cache();
|
||||
if (postProcessor) {
|
||||
postProcessor(manifest);
|
||||
}
|
||||
Microloader.load(manifest);
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {Manifest} manifest
|
||||
*/
|
||||
load: function (manifest) {
|
||||
Microloader.urls = [];
|
||||
Microloader.manifest = manifest;
|
||||
Ext.manifest = Microloader.manifest.exportContent();
|
||||
|
||||
var assets = manifest.getAssets(),
|
||||
cachedAssets = [],
|
||||
asset, i, len, include, entry;
|
||||
|
||||
for (len = assets.length, i = 0; i < len; i++) {
|
||||
asset = assets[i];
|
||||
include = Microloader.filterAsset(asset);
|
||||
if (include) {
|
||||
// Asset is using the localStorage caching system
|
||||
if (manifest.shouldCache() && asset.shouldCache()) {
|
||||
// Asset already has content from localStorage, instantly seed that into boot
|
||||
if (asset.content) {
|
||||
//<debug>
|
||||
_debug("Asset: " + asset.assetConfig.path + " was found in local storage. No remote load for this file");
|
||||
//</debug>
|
||||
entry = Boot.registerContent(asset.assetConfig.path, asset.type, asset.content);
|
||||
if (entry.evaluated) {
|
||||
_warn("Asset: " + asset.assetConfig.path + " was evaluated prior to local storage being consulted.");
|
||||
}
|
||||
//load via AJAX and seed content into Boot
|
||||
} else {
|
||||
//<debug>
|
||||
_debug("Asset: " + asset.assetConfig.path + " was NOT found in local storage. Adding to load queue");
|
||||
//</debug>
|
||||
cachedAssets.push(asset);
|
||||
}
|
||||
}
|
||||
Microloader.urls.push(asset.assetConfig.path);
|
||||
Boot.assetConfig[asset.assetConfig.path] = Boot.apply({type: asset.type}, asset.assetConfig);
|
||||
}
|
||||
}
|
||||
|
||||
// If any assets are using the caching system and do not have local versions load them first via AJAX
|
||||
if (cachedAssets.length > 0) {
|
||||
Microloader.remainingCachedAssets = cachedAssets.length;
|
||||
while (cachedAssets.length > 0) {
|
||||
asset = cachedAssets.pop();
|
||||
//<debug>
|
||||
_debug("Preloading/Fetching Cached Assets from: " + asset.assetConfig.path);
|
||||
//</debug>
|
||||
Boot.fetch(asset.assetConfig.path, (function(asset) {
|
||||
return function(result) {
|
||||
Microloader.onCachedAssetLoaded(asset, result);
|
||||
}
|
||||
})(asset));
|
||||
}
|
||||
} else {
|
||||
Microloader.onCachedAssetsReady();
|
||||
}
|
||||
},
|
||||
|
||||
// Load the asset and seed its content into Boot to be evaluated in sequence
|
||||
onCachedAssetLoaded: function (asset, result) {
|
||||
var checksum;
|
||||
result = Microloader.parseResult(result);
|
||||
Microloader.remainingCachedAssets--;
|
||||
|
||||
if (!result.error) {
|
||||
checksum = Microloader.checksum(result.content, asset.assetConfig.hash);
|
||||
if (!checksum) {
|
||||
_warn("Cached Asset '" + asset.assetConfig.path + "' has failed checksum. This asset will be uncached for future loading");
|
||||
|
||||
// Un cache this asset so it is loaded next time
|
||||
asset.uncache();
|
||||
}
|
||||
|
||||
//<debug>
|
||||
_debug("Checksum for Cached Asset: " + asset.assetConfig.path + " is " + checksum);
|
||||
//</debug>
|
||||
Boot.registerContent(asset.assetConfig.path, asset.type, result.content);
|
||||
asset.updateContent(result.content);
|
||||
asset.cache();
|
||||
} else {
|
||||
_warn("There was an error pre-loading the asset '" + asset.assetConfig.path + "'. This asset will be uncached for future loading");
|
||||
|
||||
// Un cache this asset so it is loaded next time
|
||||
asset.uncache();
|
||||
}
|
||||
|
||||
if (Microloader.remainingCachedAssets === 0) {
|
||||
Microloader.onCachedAssetsReady();
|
||||
}
|
||||
},
|
||||
|
||||
onCachedAssetsReady: function(){
|
||||
Boot.load({
|
||||
url: Microloader.urls,
|
||||
loadOrder: Microloader.manifest.loadOrder,
|
||||
loadOrderMap: Microloader.manifest.loadOrderMap,
|
||||
sequential: true,
|
||||
success: Microloader.onAllAssetsReady,
|
||||
failure: Microloader.onAllAssetsReady
|
||||
});
|
||||
},
|
||||
|
||||
onAllAssetsReady: function() {
|
||||
_loaded = true;
|
||||
Microloader.notify();
|
||||
|
||||
if (navigator.onLine !== false) {
|
||||
//<debug>
|
||||
_debug("Application is online, checking for updates");
|
||||
//</debug>
|
||||
Microloader.checkAllUpdates();
|
||||
}
|
||||
else {
|
||||
//<debug>
|
||||
_debug("Application is offline, adding online listener to check for updates");
|
||||
//</debug>
|
||||
if(window['addEventListener']) {
|
||||
window.addEventListener('online', Microloader.checkAllUpdates, false);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
onMicroloaderReady: function (listener) {
|
||||
if (_loaded) {
|
||||
listener();
|
||||
} else {
|
||||
_listeners.push(listener);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
notify: function () {
|
||||
//<debug>
|
||||
_debug("notifying microloader ready listeners.");
|
||||
//</debug>
|
||||
var listener;
|
||||
while((listener = _listeners.shift())) {
|
||||
listener();
|
||||
}
|
||||
},
|
||||
|
||||
// Delta patches content
|
||||
patch: function (content, delta) {
|
||||
var output = [],
|
||||
chunk, i, ln;
|
||||
|
||||
if (delta.length === 0) {
|
||||
return content;
|
||||
}
|
||||
|
||||
for (i = 0,ln = delta.length; i < ln; i++) {
|
||||
chunk = delta[i];
|
||||
|
||||
if (typeof chunk === 'number') {
|
||||
output.push(content.substring(chunk, chunk + delta[++i]));
|
||||
}
|
||||
else {
|
||||
output.push(chunk);
|
||||
}
|
||||
}
|
||||
|
||||
return output.join('');
|
||||
},
|
||||
|
||||
checkAllUpdates: function() {
|
||||
//<debug>
|
||||
_debug("Checking for All Updates");
|
||||
//</debug>
|
||||
if(window['removeEventListener']) {
|
||||
window.removeEventListener('online', Microloader.checkAllUpdates, false);
|
||||
}
|
||||
|
||||
if(_cache) {
|
||||
Microloader.checkForAppCacheUpdate();
|
||||
}
|
||||
|
||||
// Manifest came from a cached instance, check for updates
|
||||
if (Microloader.manifest.fromCache) {
|
||||
Microloader.checkForUpdates();
|
||||
}
|
||||
},
|
||||
|
||||
checkForAppCacheUpdate: function() {
|
||||
//<debug>
|
||||
_debug("Checking App Cache status");
|
||||
//</debug>
|
||||
if (_cache.status === _cache.UPDATEREADY || _cache.status === _cache.OBSOLETE) {
|
||||
//<debug>
|
||||
_debug("App Cache is already in an updated");
|
||||
//</debug>
|
||||
Microloader.appCacheState = 'updated';
|
||||
} else if (_cache.status !== _cache.IDLE && _cache.status !== _cache.UNCACHED) {
|
||||
//<debug>
|
||||
_debug("App Cache is checking or downloading updates, adding listeners");
|
||||
//</debug>
|
||||
Microloader.appCacheState = 'checking';
|
||||
_cache.addEventListener('error', Microloader.onAppCacheError);
|
||||
_cache.addEventListener('noupdate', Microloader.onAppCacheNotUpdated);
|
||||
_cache.addEventListener('cached', Microloader.onAppCacheNotUpdated);
|
||||
_cache.addEventListener('updateready', Microloader.onAppCacheReady);
|
||||
_cache.addEventListener('obsolete', Microloader.onAppCacheObsolete);
|
||||
} else {
|
||||
//<debug>
|
||||
_debug("App Cache is current or uncached");
|
||||
//</debug>
|
||||
Microloader.appCacheState = 'current';
|
||||
}
|
||||
},
|
||||
|
||||
checkForUpdates: function() {
|
||||
// Fetch the Latest Manifest from the server
|
||||
//<debug>
|
||||
_debug("Checking for updates at: " + Microloader.manifest.url);
|
||||
//</debug>
|
||||
Boot.fetch(Microloader.applyCacheBuster(Microloader.manifest.url), Microloader.onUpdatedManifestLoaded);
|
||||
},
|
||||
|
||||
onAppCacheError: function(e) {
|
||||
_warn(e.message);
|
||||
|
||||
Microloader.appCacheState = 'error';
|
||||
Microloader.notifyUpdateReady();
|
||||
},
|
||||
|
||||
onAppCacheReady: function() {
|
||||
_cache.swapCache();
|
||||
Microloader.appCacheUpdated();
|
||||
},
|
||||
|
||||
onAppCacheObsolete: function() {
|
||||
Microloader.appCacheUpdated();
|
||||
},
|
||||
|
||||
appCacheUpdated: function() {
|
||||
//<debug>
|
||||
_debug("App Cache Updated");
|
||||
//</debug>
|
||||
Microloader.appCacheState = 'updated';
|
||||
Microloader.notifyUpdateReady();
|
||||
},
|
||||
|
||||
onAppCacheNotUpdated: function() {
|
||||
//<debug>
|
||||
_debug("App Cache Not Updated Callback");
|
||||
//</debug>
|
||||
Microloader.appCacheState = 'current';
|
||||
Microloader.notifyUpdateReady();
|
||||
},
|
||||
|
||||
|
||||
filterAsset: function(asset) {
|
||||
var cfg = (asset && asset.assetConfig) || {};
|
||||
if(cfg.platform || cfg.exclude) {
|
||||
return Boot.filterPlatform(cfg.platform, cfg.exclude);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
onUpdatedManifestLoaded: function (result) {
|
||||
result = Microloader.parseResult(result);
|
||||
|
||||
if (!result.error) {
|
||||
var currentAssets, newAssets, currentAsset, newAsset, prop,
|
||||
assets, deltas, deltaPath, include,
|
||||
updatingAssets = [],
|
||||
manifest = new Manifest({
|
||||
url: Microloader.manifest.url,
|
||||
content: result.content,
|
||||
assetCache: false
|
||||
});
|
||||
|
||||
Microloader.remainingUpdatingAssets = 0;
|
||||
Microloader.updatedAssets = [];
|
||||
Microloader.removedAssets = [];
|
||||
Microloader.updatedManifest = null;
|
||||
Microloader.updatedAssetsReady = false;
|
||||
|
||||
// If the updated manifest has turned off caching we need to clear out all local storage
|
||||
// and trigger a appupdate as all content is now uncached
|
||||
if (!manifest.shouldCache()) {
|
||||
//<debug>
|
||||
_debug("New Manifest has caching disabled, clearing out any private storage");
|
||||
//</debug>
|
||||
|
||||
Microloader.updatedManifest = manifest;
|
||||
LocalStorage.clearAllPrivate(manifest);
|
||||
Microloader.onAllUpdatedAssetsReady();
|
||||
return;
|
||||
}
|
||||
|
||||
// Manifest itself has changed
|
||||
if (!Microloader.manifest.is(manifest)) {
|
||||
Microloader.updatedManifest = manifest;
|
||||
|
||||
currentAssets = Microloader.manifest.getAssets();
|
||||
newAssets = manifest.getAssets();
|
||||
|
||||
// Look through new assets for assets that do not exist or assets that have different versions
|
||||
for (prop in newAssets) {
|
||||
newAsset = newAssets[prop];
|
||||
currentAsset = Microloader.manifest.getAsset(newAsset.assetConfig.path);
|
||||
include = Microloader.filterAsset(newAsset);
|
||||
|
||||
if (include && (!currentAsset || (newAsset.shouldCache() && (!currentAsset.is(newAsset))))) {
|
||||
//<debug>
|
||||
_debug("New/Updated Version of Asset: " + newAsset.assetConfig.path + " was found in new manifest");
|
||||
//</debug>
|
||||
updatingAssets.push({_new: newAsset, _current: currentAsset});
|
||||
}
|
||||
}
|
||||
|
||||
// Look through current assets for stale/old assets that have been removed
|
||||
for (prop in currentAssets) {
|
||||
currentAsset = currentAssets[prop];
|
||||
newAsset = manifest.getAsset(currentAsset.assetConfig.path);
|
||||
|
||||
//New version of this asset has been filtered out
|
||||
include = !Microloader.filterAsset(newAsset);
|
||||
|
||||
if (!include || !newAsset || (currentAsset.shouldCache() && !newAsset.shouldCache())) {
|
||||
//<debug>
|
||||
_debug("Asset: " + currentAsset.assetConfig.path + " was not found in new manifest, has been filtered out or has been switched to not cache. Marked for removal");
|
||||
//</debug>
|
||||
Microloader.removedAssets.push(currentAsset);
|
||||
}
|
||||
}
|
||||
|
||||
// Loop through all assets that need updating
|
||||
if (updatingAssets.length > 0) {
|
||||
Microloader.remainingUpdatingAssets = updatingAssets.length;
|
||||
while (updatingAssets.length > 0) {
|
||||
assets = updatingAssets.pop();
|
||||
newAsset = assets._new;
|
||||
currentAsset = assets._current;
|
||||
|
||||
// Full Updates will simply download the file and replace its current content
|
||||
if (newAsset.assetConfig.update === "full" || !currentAsset) {
|
||||
|
||||
//<debug>
|
||||
if (newAsset.assetConfig.update === "delta") {
|
||||
_debug("Delta updated asset found without current asset available: " + newAsset.assetConfig.path + " fetching full file");
|
||||
} else {
|
||||
_debug("Full update found for: " + newAsset.assetConfig.path + " fetching");
|
||||
}
|
||||
//</debug>
|
||||
|
||||
// Load the asset and cache its its content into Boot to be evaluated in sequence
|
||||
Boot.fetch(newAsset.assetConfig.path, (function (asset) {
|
||||
return function (result) {
|
||||
Microloader.onFullAssetUpdateLoaded(asset, result)
|
||||
};
|
||||
}(newAsset))
|
||||
);
|
||||
|
||||
// Delta updates will be given a delta patch
|
||||
} else if (newAsset.assetConfig.update === "delta") {
|
||||
deltas = manifest.deltas;
|
||||
deltaPath = deltas + "/" + newAsset.assetConfig.path + "/" + currentAsset.assetConfig.hash + ".json";
|
||||
// Fetch the Delta Patch and update the contents of the asset
|
||||
//<debug>
|
||||
_debug("Delta update found for: " + newAsset.assetConfig.path + " fetching");
|
||||
//</debug>
|
||||
Boot.fetch(deltaPath,
|
||||
(function (asset, oldAsset) {
|
||||
return function (result) {
|
||||
Microloader.onDeltaAssetUpdateLoaded(asset, oldAsset, result)
|
||||
};
|
||||
}(newAsset, currentAsset))
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//<debug>
|
||||
_debug("No Assets needed updating");
|
||||
//</debug>
|
||||
Microloader.onAllUpdatedAssetsReady();
|
||||
}
|
||||
} else {
|
||||
//<debug>
|
||||
_debug("Manifest files have matching hash's");
|
||||
//</debug>
|
||||
Microloader.onAllUpdatedAssetsReady();
|
||||
}
|
||||
} else {
|
||||
_warn("Error loading manifest file to check for updates");
|
||||
Microloader.onAllUpdatedAssetsReady();
|
||||
}
|
||||
},
|
||||
|
||||
onFullAssetUpdateLoaded: function(asset, result) {
|
||||
var checksum;
|
||||
result = Microloader.parseResult(result);
|
||||
Microloader.remainingUpdatingAssets--;
|
||||
|
||||
if (!result.error) {
|
||||
checksum = Microloader.checksum(result.content, asset.assetConfig.hash);
|
||||
//<debug>
|
||||
_debug("Checksum for Full asset: " + asset.assetConfig.path + " is " + checksum);
|
||||
//</debug>
|
||||
if (!checksum) {
|
||||
//<debug>
|
||||
_debug("Full Update Asset: " + asset.assetConfig.path + " has failed checksum. This asset will be uncached for future loading");
|
||||
//</debug>
|
||||
|
||||
// uncache this asset as there is a new version somewhere that has not been loaded.
|
||||
asset.uncache();
|
||||
} else {
|
||||
asset.updateContent(result.content);
|
||||
Microloader.updatedAssets.push(asset);
|
||||
}
|
||||
} else {
|
||||
//<debug>
|
||||
_debug("Error loading file at" + asset.assetConfig.path + ". This asset will be uncached for future loading");
|
||||
//</debug>
|
||||
|
||||
// uncache this asset as there is a new version somewhere that has not been loaded.
|
||||
asset.uncache();
|
||||
}
|
||||
|
||||
if (Microloader.remainingUpdatingAssets === 0) {
|
||||
Microloader.onAllUpdatedAssetsReady();
|
||||
}
|
||||
},
|
||||
|
||||
onDeltaAssetUpdateLoaded: function(asset, oldAsset, result) {
|
||||
var json, checksum, content;
|
||||
result = Microloader.parseResult(result);
|
||||
Microloader.remainingUpdatingAssets--;
|
||||
|
||||
if (!result.error) {
|
||||
//<debug>
|
||||
_debug("Delta patch loaded successfully, patching content");
|
||||
//</debug>
|
||||
try {
|
||||
json = JSON.parse(result.content);
|
||||
content = Microloader.patch(oldAsset.content, json);
|
||||
checksum = Microloader.checksum(content, asset.assetConfig.hash);
|
||||
//<debug>
|
||||
_debug("Checksum for Delta Patched asset: " + asset.assetConfig.path + " is " + checksum);
|
||||
//</debug>
|
||||
if (!checksum) {
|
||||
//<debug>
|
||||
_debug("Delta Update Asset: " + asset.assetConfig.path + " has failed checksum. This asset will be uncached for future loading");
|
||||
//</debug>
|
||||
|
||||
// uncache this asset as there is a new version somewhere that has not been loaded.
|
||||
asset.uncache();
|
||||
} else {
|
||||
asset.updateContent(content);
|
||||
Microloader.updatedAssets.push(asset);
|
||||
}
|
||||
} catch (e) {
|
||||
_warn("Error parsing delta patch for " + asset.assetConfig.path + " with hash " + oldAsset.assetConfig.hash + " . This asset will be uncached for future loading");
|
||||
// uncache this asset as there is a new version somewhere that has not been loaded.
|
||||
asset.uncache();
|
||||
}
|
||||
} else {
|
||||
_warn("Error loading delta patch for " + asset.assetConfig.path + " with hash " + oldAsset.assetConfig.hash + " . This asset will be uncached for future loading");
|
||||
|
||||
// uncache this asset as there is a new version somewhere that has not been loaded.
|
||||
asset.uncache();
|
||||
}
|
||||
if (Microloader.remainingUpdatingAssets === 0) {
|
||||
Microloader.onAllUpdatedAssetsReady();
|
||||
}
|
||||
},
|
||||
|
||||
//TODO: Make this all transaction based to allow for reverting if quota is exceeded
|
||||
onAllUpdatedAssetsReady: function() {
|
||||
var asset;
|
||||
Microloader.updatedAssetsReady = true;
|
||||
|
||||
if (Microloader.updatedManifest) {
|
||||
while (Microloader.removedAssets.length > 0) {
|
||||
asset = Microloader.removedAssets.pop();
|
||||
//<debug>
|
||||
_debug("Asset: " + asset.assetConfig.path + " was removed, un-caching");
|
||||
//</debug>
|
||||
asset.uncache();
|
||||
}
|
||||
|
||||
if (Microloader.updatedManifest) {
|
||||
//<debug>
|
||||
_debug("Manifest was updated, re-caching");
|
||||
//</debug>
|
||||
Microloader.updatedManifest.cache();
|
||||
}
|
||||
|
||||
while (Microloader.updatedAssets.length > 0) {
|
||||
asset = Microloader.updatedAssets.pop();
|
||||
//<debug>
|
||||
_debug("Asset: " + asset.assetConfig.path + " was updated, re-caching");
|
||||
//</debug>
|
||||
asset.cache();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Microloader.notifyUpdateReady();
|
||||
},
|
||||
|
||||
notifyUpdateReady: function () {
|
||||
if (Microloader.appCacheState !== 'checking' && Microloader.updatedAssetsReady) {
|
||||
if (Microloader.appCacheState === 'updated' || Microloader.updatedManifest) {
|
||||
//<debug>
|
||||
_debug("There was an update here you will want to reload the app, trigger an event");
|
||||
//</debug>
|
||||
Microloader.appUpdate = {
|
||||
updated: true,
|
||||
app: Microloader.appCacheState === 'updated',
|
||||
manifest: Microloader.updatedManifest && Microloader.updatedManifest.exportContent()
|
||||
};
|
||||
|
||||
Microloader.fireAppUpdate();
|
||||
}
|
||||
//<debug>
|
||||
else {
|
||||
_debug("AppCache and LocalStorage Cache are current, no updating needed");
|
||||
Microloader.appUpdate = {};
|
||||
}
|
||||
//</debug>
|
||||
}
|
||||
},
|
||||
|
||||
fireAppUpdate: function() {
|
||||
if (Ext.GlobalEvents) {
|
||||
// We defer dispatching this event slightly in order to let the application finish loading
|
||||
// as we are still very early in the lifecycle
|
||||
Ext.defer(function() {
|
||||
Ext.GlobalEvents.fireEvent('appupdate', Microloader.appUpdate);
|
||||
}, 1000);
|
||||
}
|
||||
},
|
||||
|
||||
checksum: function(content, hash) {
|
||||
if(!content || !hash) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var passed = true,
|
||||
hashLn = hash.length,
|
||||
checksumType = content.substring(0, 1);
|
||||
|
||||
if (checksumType == '/') {
|
||||
if (content.substring(2, hashLn + 2) !== hash) {
|
||||
passed = false;
|
||||
}
|
||||
} else if (checksumType == 'f') {
|
||||
if (content.substring(10, hashLn + 10) !== hash) {
|
||||
passed = false;
|
||||
}
|
||||
} else if (checksumType == '.') {
|
||||
if (content.substring(1, hashLn + 1) !== hash) {
|
||||
passed = false;
|
||||
}
|
||||
}
|
||||
return passed;
|
||||
},
|
||||
parseResult: function(result) {
|
||||
var rst = {};
|
||||
if ((result.exception || result.status === 0) && !Boot.env.phantom) {
|
||||
rst.error = true;
|
||||
} else if ((result.status >= 200 && result.status < 300) || result.status === 304
|
||||
|| Boot.env.phantom
|
||||
|| (result.status === 0 && result.content.length > 0)
|
||||
) {
|
||||
rst.content = result.content;
|
||||
} else {
|
||||
rst.error = true;
|
||||
}
|
||||
return rst;
|
||||
}
|
||||
};
|
||||
|
||||
return Microloader;
|
||||
}());
|
||||
|
||||
/**
|
||||
* @type {String/Object}
|
||||
*/
|
||||
Ext.manifest = Ext.manifest || "bootstrap";
|
||||
|
||||
Ext.Microloader.run();
|
@ -1,30 +0,0 @@
|
||||
# ./controller
|
||||
|
||||
This folder contains the application's global controllers. ViewControllers are located
|
||||
alongside their respective view class in `"./view"`. These controllers are used for routing
|
||||
and other activities that span all views.
|
||||
|
||||
# ./model
|
||||
|
||||
This folder contains the application's (data) Model classes.
|
||||
|
||||
# ./view
|
||||
|
||||
This folder contains the views as well as ViewModels and ViewControllers depending on the
|
||||
application's architecture. Pure MVC applications may not have ViewModels, for example. For
|
||||
MVCVM applications or MVC applications that use ViewControllers, the following directory
|
||||
structure is recommended:
|
||||
|
||||
./view/
|
||||
foo/ # Some meaningful grouping of one or more views
|
||||
Foo.js # The view class
|
||||
FooController.js # The controller for Foo (a ViewController)
|
||||
FooModel.js # The ViewModel for Foo
|
||||
|
||||
This structure helps keep these closely related classes together and easily identifiable in
|
||||
most tabbed IDE's or text editors.
|
||||
|
||||
# ./store
|
||||
|
||||
This folder contains any number of store instances or types that can then be reused in the
|
||||
application.
|
@ -1,433 +0,0 @@
|
||||
{
|
||||
/**
|
||||
* The relative path to the appliaction's markup file (html, jsp, asp, etc.)
|
||||
*/
|
||||
"indexHtmlPath": "index.html",
|
||||
|
||||
/**
|
||||
* List of all JavaScript assets in the right execution order.
|
||||
*
|
||||
* Each item is an object with the following format:
|
||||
*
|
||||
* {
|
||||
* // Path to file. If the file is local this must be a relative path from
|
||||
* // this app.json file.
|
||||
* //
|
||||
* "path": "path/to/script.js", // REQUIRED
|
||||
*
|
||||
* // Set to true on one file to indicate that it should become the container
|
||||
* // for the concatenated classes.
|
||||
* //
|
||||
* "bundle": false, // OPTIONAL
|
||||
*
|
||||
* // Set to true to include this file in the concatenated classes.
|
||||
* //
|
||||
* "includeInBundle": false, // OPTIONAL
|
||||
*
|
||||
* // Specify as true if this file is remote and should not be copied into the
|
||||
* // build folder. Defaults to false for a local file which will be copied.
|
||||
* //
|
||||
* "remote": false, // OPTIONAL
|
||||
*
|
||||
* // If not specified, this file will only be loaded once, and cached inside
|
||||
* // localStorage until this value is changed. You can specify:
|
||||
* //
|
||||
* // - "delta" to enable over-the-air delta update for this file
|
||||
* // - "full" means full update will be made when this file changes
|
||||
* //
|
||||
* "update": "", // OPTIONAL
|
||||
*
|
||||
* // A value of true indicates that is a development mode only dependency.
|
||||
* // These files will not be copied into the build directory or referenced
|
||||
* // in the generate app.json manifest for the micro loader.
|
||||
* //
|
||||
* "bootstrap": false // OPTIONAL
|
||||
* }
|
||||
*
|
||||
* To use ext-all-debug.js instead of explicitly loading all framework files at
|
||||
* dev time, add the following entry to this js list :
|
||||
*
|
||||
* {
|
||||
* "path": "${ext.dir}/build/ext-all-debug.js"
|
||||
* }
|
||||
*
|
||||
* Note: when using ext-all-debug.js, you also need to disable the loadOrder portion
|
||||
* of the bootstrap manifest. See the "bootstrap" property for details.
|
||||
*
|
||||
*/
|
||||
"js": [
|
||||
{
|
||||
"path": "app.js",
|
||||
"bundle": true
|
||||
}
|
||||
],
|
||||
|
||||
/**
|
||||
* List of all CSS assets in the right inclusion order.
|
||||
*
|
||||
* Each item is an object with the following format:
|
||||
*
|
||||
* {
|
||||
* // Path to file. If the file is local this must be a relative path from
|
||||
* // this app.json file.
|
||||
* //
|
||||
* "path": "path/to/stylesheet.css", // REQUIRED
|
||||
*
|
||||
* // Specify as true if this file is remote and should not be copied into the
|
||||
* // build folder. Defaults to false for a local file which will be copied.
|
||||
* //
|
||||
* "remote": false, // OPTIONAL
|
||||
*
|
||||
* // If not specified, this file will only be loaded once, and cached inside
|
||||
* // localStorage until this value is changed. You can specify:
|
||||
* //
|
||||
* // - "delta" to enable over-the-air delta update for this file
|
||||
* // - "full" means full update will be made when this file changes
|
||||
* //
|
||||
* "update": "" // OPTIONAL
|
||||
* }
|
||||
*/
|
||||
"css": [
|
||||
{
|
||||
// this entry uses an ant variable that is the calculated
|
||||
// value of the generated output css file for the app,
|
||||
// defined in .sencha/app/defaults.properties
|
||||
"path": "${build.out.css.path}",
|
||||
"bundle": true
|
||||
}
|
||||
],
|
||||
|
||||
/**
|
||||
* This option is used to configure the dynamic loader. At present these options
|
||||
* are supported.
|
||||
*
|
||||
* "loader": {
|
||||
* // This property controls how the loader manages caching for requests:
|
||||
* //
|
||||
* // - true: allows requests to receive cached responses
|
||||
* // - false: disable cached responses by adding a random "cache buster"
|
||||
* // - other: a string (such as the build.timestamp shown here) to allow
|
||||
* // requests to be cached for this build.
|
||||
* //
|
||||
* "cache": "${build.timestamp}",
|
||||
*
|
||||
* // When "cache" is not true, this value is the request parameter used
|
||||
* // to control caching.
|
||||
* //
|
||||
* "cacheParam": "_dc"
|
||||
* },
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* "compressor": {
|
||||
* "type": "closure",
|
||||
* "languageIn": "ECMASCRIPT5"
|
||||
* }
|
||||
*
|
||||
*/
|
||||
"compressor": null,
|
||||
|
||||
/**
|
||||
* override objects for setting build environment specific
|
||||
* settings.
|
||||
*/
|
||||
"production": {
|
||||
"compressor": {
|
||||
"type": "yui"
|
||||
},
|
||||
"cache": {
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
|
||||
"testing": {
|
||||
},
|
||||
|
||||
"development": {
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Controls the output structure of bootstrap artifacts. May be specified by a string:
|
||||
*
|
||||
* "bootstrap": "${app.dir}"
|
||||
*
|
||||
* to adjust the base path for all bootstrap objects, or expanded into object form:
|
||||
*
|
||||
* "bootstrap": {
|
||||
* "base": "${app.dir},
|
||||
* "manifest": "bootstrap.json",
|
||||
* "microloader": "bootstrap.js",
|
||||
* "css": "bootstrap.css"
|
||||
* }
|
||||
*
|
||||
* To disable "loadOrder" metadata when using a framwork build file such as
|
||||
* ext-all-debug.js, use the expanded form of the manifest property:
|
||||
*
|
||||
* "bootstrap": {
|
||||
* "manifest": {
|
||||
* "path": "bootstrap.json",
|
||||
* "exclude": "loadOrder"
|
||||
* }
|
||||
* }
|
||||
*
|
||||
*/
|
||||
"bootstrap":{
|
||||
"base": "${app.dir}"
|
||||
},
|
||||
|
||||
/**
|
||||
* Controls the output directory for build resources. May be set with
|
||||
* either a string:
|
||||
*
|
||||
* output: ""
|
||||
*
|
||||
* or an object containing values for various types of
|
||||
* build artifacts:
|
||||
*
|
||||
* "output": {
|
||||
* "base": "${workspace.build.dir}/${build.environment}/${app.name}",
|
||||
* "page": {
|
||||
* "path": "../index.html",
|
||||
* "enable": false
|
||||
* },
|
||||
* "css": "${app.output.resources}/${app.name}-all.css",
|
||||
* "js": {
|
||||
* "path": "app.js",
|
||||
* "enable": true,
|
||||
* "optimize": {
|
||||
* "defines": true,
|
||||
* "callParent": true,
|
||||
* "requires": true,
|
||||
* }
|
||||
* },
|
||||
* "microloader": {
|
||||
* "path": "microloader.js",
|
||||
* "embed": true,
|
||||
* "enable": true
|
||||
* },
|
||||
* "manifest": {
|
||||
* "path": "app.json",
|
||||
* "embed": false,
|
||||
* "enable": "${app.output.microloader.enable}"
|
||||
* },
|
||||
* "resources": "resources",
|
||||
* "slicer": {
|
||||
* "path": "${app.output.resources}/images",
|
||||
* "enable": false
|
||||
* },
|
||||
* // Setting the "enable" property of this object to a Truthy value will cause a Application Cache
|
||||
* // manifest file to be generated based on this files appCache object. This file will then be injected
|
||||
* // into the index.html file of the built application
|
||||
* "appCache":{
|
||||
* "enable": false"
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
"output": {
|
||||
"base": "${workspace.build.dir}/${build.environment}/${app.name}",
|
||||
"appCache": {
|
||||
"enable": false
|
||||
},
|
||||
"microloader": {
|
||||
"enable": true
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Controls for localStorage caching
|
||||
* "cache": {
|
||||
* // This property controls whether localStorage caching of this manifest file is on or off.
|
||||
* // if disabled no deltas will be generated during a build and full updates will be disabled
|
||||
* "enable": false,
|
||||
*
|
||||
* // This property allows for global toggle of deltas.
|
||||
* // If set to a string the value will be used as the path to where deltas will be generated relative to you build.
|
||||
* // If set to a Truthy Value the default path ok "deltas" will be used
|
||||
* // If set to a Falsey value or if this property is not present deltas will be disabled and not generated.
|
||||
* //
|
||||
* "deltas": "deltas"
|
||||
* }
|
||||
*/
|
||||
"cache": {
|
||||
"enable": false,
|
||||
"deltas": "deltas"
|
||||
},
|
||||
|
||||
/**
|
||||
* This sets the default output folder for cordova packagers builds
|
||||
*
|
||||
* // Cordova Packager Config options
|
||||
* "config": {
|
||||
*
|
||||
* // 'name' This is the name of your cordova application. This will default to your Sencha App name.
|
||||
* // This is only used once during Cordova app creation and cannot be changed after.
|
||||
* "name": "AppNameForCordova",
|
||||
*
|
||||
* // 'id' This will be your package name for Android and your Bundle Identifier for iOS
|
||||
* // This is only used once during Cordova app creation and cannot be changed after
|
||||
* "id": "com.domain.AppName",
|
||||
*
|
||||
* // 'platform' can be a platform or a space seperated list of platform (ios android)
|
||||
* // platform supported on mac: ios, amazon-fireos, android, blackberry10, firefoxos
|
||||
* // platform supported on win: wp7, wp8, windows8, amazon-fireos, android, blackberry10, firefoxos
|
||||
* "platform": "ios"
|
||||
*
|
||||
* // 'verbose' This boolean will determine if all cordova commands will have verbose output or not.
|
||||
* // to properly see this run sencha command with the '-info' flag like the following
|
||||
* // sencha -info app run [buildname]
|
||||
*
|
||||
* // 'path' The path this builds cordova project should be created in.
|
||||
* // This defaults to your {app.dir}/cordova
|
||||
*
|
||||
* // 'target' This is the target for emulator/simulator commands.
|
||||
* // On Android is the name of your Android Virtual Device
|
||||
* // For iOS it is one of the following:
|
||||
* // "iPhone (Retina 3.5-inch)"
|
||||
* // "iPhone (Retina 4-inch)"
|
||||
* // "iPhone"
|
||||
* // "iPad"
|
||||
* // "iPad (Retina)"
|
||||
*
|
||||
*/
|
||||
"cordova": {
|
||||
"config": {
|
||||
"name": "${app.name}",
|
||||
"id": "com.domain.${app.name}",
|
||||
"verbose": false,
|
||||
"target": "",
|
||||
"path": "${app.dir}/cordova"
|
||||
},
|
||||
"js": [
|
||||
{
|
||||
"path": "cordova.js",
|
||||
"remote": true,
|
||||
"priority": 1000
|
||||
}
|
||||
],
|
||||
"microloader": "${app.config.dir}/Microloader.js",
|
||||
"output": {
|
||||
"base": "${app.cordova.config.path}/www",
|
||||
"page": "index.html",
|
||||
"manifest": "${build.id}.json",
|
||||
"appCache": {
|
||||
"enable": false
|
||||
}
|
||||
},
|
||||
"cache": {
|
||||
"enable": false
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* This sets the default output folder for phonegap packagers builds
|
||||
*
|
||||
* // Phonegap Packager Config options
|
||||
* "config": {
|
||||
*
|
||||
* // 'name' This is the name of your phonegap application. This will default to your Sencha App name.
|
||||
* // This is only used once during Phonegap app creation and cannot be changed after.
|
||||
* "name": "AppNameForCordova",
|
||||
*
|
||||
* // 'id' This will be your package name for Android and your Bundle Identifier for iOS
|
||||
* // This is only used once during Phonegap app creation and cannot be changed after
|
||||
* "id": "com.domain.AppName",
|
||||
*
|
||||
* // 'platform' a single platform to build, run or emulate
|
||||
* // platform supported locally: android, ios, wp8, Blackberry 10
|
||||
* // platform supported remotely: android, ios, wp8
|
||||
* //"platform": "ios"
|
||||
*
|
||||
* // 'remote' This boolean will determine if the build should be run on Phonegap's remove server 'http://build.phonegap.com'
|
||||
* // setting remote to true will attempt to build on the cloud.
|
||||
* // To properly use this one must set the following properties in there local.properties file (if this file does not exist create it in your app root)
|
||||
* // phonegap.remote.username=myname@domain.com
|
||||
* // phonegap.remote.password=mys3cr3tp@ssw0rd
|
||||
*
|
||||
* // 'verbose' This boolean will determine if all phonegap commands will have verbose output or not.
|
||||
* // to properly see this run sencha command with the '-info' flag like the following
|
||||
* // sencha -info app run [buildname]
|
||||
*
|
||||
* // 'path' The path this builds phonegap project should be created in.
|
||||
* // This is only used once during Phonegap app creation if changed this will result in a new phonegap application being generated
|
||||
* // This defaults to your {app.dir}/phonegap
|
||||
*
|
||||
*/
|
||||
"phonegap": {
|
||||
"config": {
|
||||
"name": "${app.name}",
|
||||
"id": "com.domain.${app.name}",
|
||||
"remote": false,
|
||||
"verbose": false,
|
||||
"path": "${app.dir}/phonegap"
|
||||
},
|
||||
"js": [
|
||||
{
|
||||
"path": "cordova.js",
|
||||
"remote": true,
|
||||
"priority": 1000
|
||||
}
|
||||
],
|
||||
"microloader": "${app.config.dir}/Microloader.js",
|
||||
"output": {
|
||||
"base": "${app.phonegap.config.path}/www",
|
||||
"page": "index.html",
|
||||
"manifest": "${build.id}.json",
|
||||
"appCache": {
|
||||
"enable": false
|
||||
}
|
||||
},
|
||||
"cache": {
|
||||
"enable": false
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Additional resources used during theme slicing operations
|
||||
*/
|
||||
"slicer": {
|
||||
"js": [
|
||||
{
|
||||
"path": "${app.dir}/sass/example/custom.js",
|
||||
"isWidgetManifest": true
|
||||
}
|
||||
],
|
||||
"output": {
|
||||
"appCache": {
|
||||
"enable": false
|
||||
}
|
||||
},
|
||||
"cache": {
|
||||
"enable": false
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
"fashion": {
|
||||
"inliner": {
|
||||
"enable": false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The manager config object is used by the sencha app publish command to deploy this application to sencha web application manager
|
||||
* "manager": {
|
||||
* // the space id for this application
|
||||
* "id": 12345,
|
||||
* // name of app in space deployments
|
||||
* "name": "${app.name}",
|
||||
* // space host
|
||||
* "host": "https://api.space.sencha.com/json.rpc",
|
||||
* // can be a zip file path, or a folder to be zipped and deployd to sencha space
|
||||
* "file": "${app.output.base}",
|
||||
* // These may be specified here, but are best specified in your user
|
||||
* // ~/.sencha/cmd/sencha.cfg file
|
||||
* "apiKey": "",
|
||||
* "secret": ""
|
||||
* }
|
||||
*/
|
||||
}
|
@ -1,62 +0,0 @@
|
||||
<project name="bootstrap-impl">
|
||||
<!--
|
||||
This macrodef regenerates the bootstrap.js class system metadata, which includes
|
||||
relative file paths, class names, alternate class names, and class alias data
|
||||
-->
|
||||
<macrodef name="x-bootstrap">
|
||||
<attribute name="file"/>
|
||||
<attribute name="basedir"/>
|
||||
<attribute name="coreFilesFile" default="@{file}"/>
|
||||
<attribute name="classMetadataFile" default="@{file}"/>
|
||||
<attribute name="overridesFile" default="@{file}"/>
|
||||
<attribute name="includeBoot" default="true"/>
|
||||
<attribute name="includeManifest" default="false"/>
|
||||
<attribute name="includeCoreFiles" default="false"/>
|
||||
<attribute name="includeMetadata" default="true"/>
|
||||
<attribute name="includeOverrides" default="true"/>
|
||||
<attribute name="appendCoreFiles" default="true"/>
|
||||
<attribute name="appendClassMetadata" default="true"/>
|
||||
<attribute name="appendOverrides" default="true"/>
|
||||
<attribute name="manifestTpl" default="var Ext = Ext || '{' '}'; Ext.manifest = {0};"/>
|
||||
<attribute name="coreFilesJsonpTpl" default="Ext.Boot.loadSync"/>
|
||||
<attribute name="loaderConfigJsonpTpl" default="Ext.Loader.addClassPathMappings"/>
|
||||
<attribute name="overrideTpl" default='Ext.Loader.loadScriptsSync'/>
|
||||
<attribute name="overrideTplType" default="jsonp"/>
|
||||
<attribute name="overrideExcludeTags" default="package-core,package-sencha-core,package-${framework.name},package-${toolkit.name}"/>
|
||||
<text name="launchcode" optional="true"/>
|
||||
<sequential>
|
||||
<local name="temp.file"/>
|
||||
<tempfile property="temp.file"
|
||||
deleteonexit="true"
|
||||
createfile="true"/>
|
||||
<echo file="${temp.file}">@{launchcode}</echo>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
bootstrap
|
||||
-baseDir=@{basedir}
|
||||
-file=@{file}
|
||||
-coreFilesFile=@{coreFilesFile}
|
||||
-classMetadataFile=@{classMetadataFile}
|
||||
-overridesFile=@{overridesFile}
|
||||
-includeBoot=@{includeBoot}
|
||||
-includeManifest=@{includeManifest}
|
||||
-includeCoreFiles=@{includeCoreFiles}
|
||||
-includeMetadata=@{includeMetadata}
|
||||
-includeOverrides=@{includeOverrides}
|
||||
-appendCoreFiles=@{appendCoreFiles}
|
||||
-appendClassMetadata=@{appendClassMetadata}
|
||||
-appendOverrides=@{appendOverrides}
|
||||
-manifestTpl=@{manifestTpl}
|
||||
-coreFilesJsonpTpl=@{coreFilesJsonpTpl}
|
||||
-loaderConfigJsonpTpl=@{loaderConfigJsonpTpl}
|
||||
-overrideTpl=@{overrideTpl}
|
||||
-overrideType=@{overrideTplType}
|
||||
-overrideExcludeTags=@{overrideExcludeTags}
|
||||
-launchContentFile=${temp.file}
|
||||
]]>
|
||||
</x-compile>
|
||||
<delete file="${temp.file}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
</project>
|
@ -1,553 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
********************************** DO NOT EDIT **********************************
|
||||
|
||||
This file will be replaced during upgrades so DO NOT EDIT this file. If you need to
|
||||
adjust the process, reading and understanding this file is the first step.
|
||||
|
||||
In most cases, the adjustments can be achieved by setting properties or providing one
|
||||
of the "hooks" in the form of a "-before-" or "-after-" target. Whenever possible, look
|
||||
for one of these solutions.
|
||||
|
||||
Failing that, you can copy whole targets to your build.xml file and it will overrride
|
||||
the target provided here. Doing that can create problems for upgrading to newer
|
||||
versions of Cmd so it is not recommended but it will be easier to manage than editing
|
||||
this file in most cases.
|
||||
-->
|
||||
<project name="x-app-build-impl" default=".help">
|
||||
<!--
|
||||
===============================================================
|
||||
helper targets for ant integrations with IDE's
|
||||
(human readable target names)
|
||||
===============================================================
|
||||
-->
|
||||
<target name="-before-build-testing"/>
|
||||
<target name="-build-testing" depends="testing,build"/>
|
||||
<target name="-after-build-testing"/>
|
||||
<target name="build-testing"
|
||||
depends="-before-build-testing,
|
||||
-build-testing,
|
||||
-after-build-testing"/>
|
||||
|
||||
<target name="Build - Testing"
|
||||
description="Create a Testing build of this project"
|
||||
depends="build-testing"/>
|
||||
|
||||
<target name="-before-build-production"/>
|
||||
<target name="-build-production" depends="production,build"/>
|
||||
<target name="-after-build-production"/>
|
||||
<target name="build-production"
|
||||
depends="-before-build-production,
|
||||
-build-production,
|
||||
-after-build-production"/>
|
||||
|
||||
<target name="Build - Production"
|
||||
description="Create a Production build of this project"
|
||||
depends="build-production"/>
|
||||
|
||||
<target name="-before-build-native"/>
|
||||
<target name="-build-native" depends="native,build"/>
|
||||
<target name="-after-build-native"/>
|
||||
<target name="build-native"
|
||||
depends="-before-build-native,
|
||||
-build-native,
|
||||
-after-build-native"/>
|
||||
|
||||
<target name="Build - Native"
|
||||
description="Create a Native build of this project"
|
||||
depends="build-native"/>
|
||||
|
||||
<target name="-before-start-local-webserver"/>
|
||||
<target name="-start-local-webserver" depends="init">
|
||||
<x-launch-terminal>
|
||||
<![CDATA[
|
||||
${cmd.dir}/sencha fs web -port=${build.web.port} start -map=${build.web.root}
|
||||
]]>
|
||||
</x-launch-terminal>
|
||||
</target>
|
||||
<target name="-after-start-local-webserver"/>
|
||||
<target name="start-local-webserver"
|
||||
depends="-before-start-local-webserver,
|
||||
-start-local-webserver,
|
||||
-after-start-local-webserver"/>
|
||||
|
||||
<target name="WebServer - Start Local"
|
||||
description="Starts a local webserver for this project"
|
||||
depends="start-local-webserver"/>
|
||||
|
||||
<target name="-before-compass-watch"/>
|
||||
<target name="-compass-watch" depends="init">
|
||||
<x-launch-terminal>
|
||||
compass watch ${app.sass.dir}
|
||||
</x-launch-terminal>
|
||||
</target>
|
||||
<target name="-after-compass-watch"/>
|
||||
<target name="compass-watch"
|
||||
depends="-before-compass-watch,
|
||||
-compass-watch,
|
||||
-after-compass-watch"/>
|
||||
|
||||
<target name="Compass - Watch"
|
||||
description="Opens terminal and watches for SASS updates"
|
||||
depends="compass-watch"/>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
environment setters
|
||||
===============================================================
|
||||
-->
|
||||
<target name="production"
|
||||
description="Sets the build environment to production.">
|
||||
<property name="build.environment" value="production"/>
|
||||
</target>
|
||||
|
||||
<target name="testing"
|
||||
description="Sets the build environment to testing.">
|
||||
<property name="build.environment" value="testing"/>
|
||||
</target>
|
||||
|
||||
<target name="native"
|
||||
description="Sets the build environment to native.">
|
||||
<property name="build.environment" value="native"/>
|
||||
</target>
|
||||
|
||||
<target name="package"
|
||||
description="Sets the build environment to package.">
|
||||
<property name="build.environment" value="package"/>
|
||||
</target>
|
||||
|
||||
<target name="development"
|
||||
description="Sets the build environment to development.">
|
||||
<property name="build.environment" value="development"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Find Cmd
|
||||
uses targets from find-cmd-impl.xml to detect the current
|
||||
install of Sencha Cmd
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/find-cmd-impl.xml"/>
|
||||
<target name="init-cmd"
|
||||
depends="find-cmd-in-path,
|
||||
find-cmd-in-environment,
|
||||
find-cmd-in-shell">
|
||||
<echo>Using Sencha Cmd from ${cmd.dir} for ${ant.file}</echo>
|
||||
|
||||
<!--
|
||||
load the sencha.jar ant task definitions.
|
||||
|
||||
NOTE: the 'loaderref' attribute stores this task def's class loader
|
||||
on the project by that name, so it will be sharable across sub-projects.
|
||||
This fixes out-of-memory issues, as well as increases performance.
|
||||
|
||||
To supoprt this, it is recommended that any customizations that use
|
||||
'ant' or 'antcall' tasks set 'inheritrefs=true' on those tasks, in order
|
||||
to propagate the senchaloader reference to those subprojects.
|
||||
|
||||
The sencha 'x-ant-call' task, which extends 'antcall' and defaults
|
||||
'inheritrefs' to true, may be used in place of antcall in
|
||||
build process customizations.
|
||||
-->
|
||||
<taskdef resource="com/sencha/ant/antlib.xml"
|
||||
classpath="${cmd.dir}/sencha.jar"
|
||||
loaderref="senchaloader"/>
|
||||
|
||||
<!--
|
||||
Some operations require sencha.jar in the current java classpath,
|
||||
so this will extend the java.lang.Thread#contextClassLoader with the
|
||||
specified java classpath entries
|
||||
-->
|
||||
<x-extend-classpath>
|
||||
<jar path="${cmd.dir}/sencha.jar"/>
|
||||
</x-extend-classpath>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Init
|
||||
uses targets from init-impl.xml to load Sencha Cmd config
|
||||
system properties and ant task definitions
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/init-impl.xml"/>
|
||||
<import file="${basedir}/.sencha/app/resolve-impl.xml"/>
|
||||
<target name="init"
|
||||
depends="init-local,
|
||||
init-cmd,
|
||||
-before-init,
|
||||
-init,
|
||||
-after-init,
|
||||
-before-init-defaults,
|
||||
-init-defaults,
|
||||
-after-init-defaults,
|
||||
-init-compiler,
|
||||
-init-native-package"/>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Build
|
||||
this is the starting point for the build process. The 'depends'
|
||||
attribute on the -build target controls the ordering of the
|
||||
different build phases
|
||||
===============================================================
|
||||
-->
|
||||
<target name="-before-build"/>
|
||||
<target name="-build"
|
||||
depends="refresh,
|
||||
resolve,
|
||||
js,
|
||||
resources,
|
||||
slice,
|
||||
sass,
|
||||
page,
|
||||
native-package"/>
|
||||
<target name="-after-build"/>
|
||||
<target name="build"
|
||||
depends="init,-before-build,-build,-after-build"
|
||||
description="Builds the application"/>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Clean
|
||||
removes all artifacts from the output build directories
|
||||
===============================================================
|
||||
-->
|
||||
<target name="-before-clean"/>
|
||||
<target name="-clean">
|
||||
<delete dir="${app.output.base}"/>
|
||||
<delete dir="${build.temp.dir}"/>
|
||||
</target>
|
||||
<target name="-after-clean"/>
|
||||
<target name="clean"
|
||||
depends="init"
|
||||
description="Removes all build output produced by the 'build' target">
|
||||
<x-ant-call unless="skip.clean">
|
||||
<target name="-before-clean"/>
|
||||
<target name="-clean"/>
|
||||
<target name="-after-clean"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Watch
|
||||
uses targets from watch-impl.xml to initiate the application
|
||||
watch process using instrumented state from the compiler
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/watch-impl.xml"/>
|
||||
<target name="-watch-init">
|
||||
<property name="app.watch.enabled" value="true"/>
|
||||
</target>
|
||||
<target name="watch"
|
||||
depends="-watch-init,development,init"
|
||||
description="Starts Watch to keep your app ready for dev mode">
|
||||
<x-ant-call>
|
||||
<param name="build.id" value="${build.id}"/>
|
||||
<param name="build.name" value="${build.name}"/>
|
||||
<target name="-before-watch"/>
|
||||
<target name="-watch"/>
|
||||
<target name="-after-watch"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
JS
|
||||
uses targets from js-impl.xml to produce the output js files
|
||||
containing needed application and framework js classes
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/js-impl.xml"/>
|
||||
<target name="js"
|
||||
depends="init"
|
||||
description="Builds the output javascript file(s)">
|
||||
<x-ant-call unless="skip.js">
|
||||
<target name="-before-js"/>
|
||||
<target name="-js"/>
|
||||
<target name="-after-js"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Sass
|
||||
uses targets from sass-impl.xml to produce the output css
|
||||
files for the application's styling
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/sass-impl.xml"/>
|
||||
<target name="sass"
|
||||
depends="init"
|
||||
description="Builds the Sass files using Compass.">
|
||||
<x-ant-call unless="skip.sass">
|
||||
<target name="-before-sass"/>
|
||||
<target name="-sass"/>
|
||||
<target name="-after-sass"/>
|
||||
<target name="refresh"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Resources
|
||||
uses targets from resources-impl.xml to copy resources from
|
||||
the application and required packages to the output directory
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/resources-impl.xml"/>
|
||||
<target name="resources"
|
||||
depends="init"
|
||||
description="Copy resources to build folder.">
|
||||
<x-ant-call unless="skip.resources">
|
||||
<target name="-before-resources"/>
|
||||
|
||||
<!-- Legacy targets: -->
|
||||
<target name="-before-inherit-resources"/>
|
||||
<target name="-before-copy-resources"/>
|
||||
|
||||
<target name="-resources"/>
|
||||
|
||||
<!-- Legacy targets: -->
|
||||
<target name="-after-copy-resources"/>
|
||||
<target name="-after-inherit-resources"/>
|
||||
|
||||
<target name="-after-resources"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Slice
|
||||
uses targets from slice-impl.xml to extract theme images from
|
||||
the application for use with older browsers that don't
|
||||
support modern css features
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/slice-impl.xml"/>
|
||||
<target name="slice"
|
||||
depends="init"
|
||||
description="Slices CSS3 theme to produce non-CSS3 images and sprites.">
|
||||
<x-ant-call unless="skip.slice">
|
||||
<target name="-before-slice"/>
|
||||
<target name="-slice"/>
|
||||
<target name="-after-slice"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Theme - this is a legacy support target for extjs 4.1 apps. It redirects
|
||||
to the "slice" ant target
|
||||
-->
|
||||
<target name="theme"
|
||||
depends="init"
|
||||
description="Builds the application's theme(s) images using the slicer (Ext JS 4.1 only).">
|
||||
<x-ant-call unless="skip.theme">
|
||||
<target name="-before-theme"/>
|
||||
<target name="slice"/>
|
||||
<target name="-after-theme"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Refresh Theme - uses targets from refresh-impl.xml to rebuild the current
|
||||
theme
|
||||
-->
|
||||
<target name="refresh-theme"
|
||||
depends="init"
|
||||
description="Rebuilds the currently enabled app theme (Ext JS 4.1 only).">
|
||||
<x-ant-call unless="skip.theme">
|
||||
<target name="-before-refresh-theme"/>
|
||||
<target name="-refresh-theme"/>
|
||||
<target name="-after-refresh-theme"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Refresh
|
||||
uses targets from refresh-impl.xml to generate bootstrapping
|
||||
information for the application
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/refresh-impl.xml"/>
|
||||
<target name="refresh"
|
||||
depends="init"
|
||||
description="Refreshes the application bootstrap data.">
|
||||
<x-ant-call unless="skip.refresh">
|
||||
<target name="-before-refresh"/>
|
||||
<target name="-refresh"/>
|
||||
<target name="-after-refresh"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Page
|
||||
uses targets from page-impl.xml to generate the output markup
|
||||
file and associated microloader / app manifest
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/page-impl.xml"/>
|
||||
<target name="page"
|
||||
depends="init"
|
||||
description="Builds the application's HTML page.">
|
||||
<x-ant-call unless="skip.page">
|
||||
<target name="-before-page"/>
|
||||
<target name="-page"/>
|
||||
<target name="-after-page"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Resolve
|
||||
uses targets from resolve-impl.xml to detect dynamic app
|
||||
dependencies using phantomjs
|
||||
===============================================================
|
||||
-->
|
||||
<target name="resolve"
|
||||
depends="init"
|
||||
description="Resolve application dependencies dynamically.">
|
||||
<x-ant-call unless="skip.resolve">
|
||||
<target name="-before-resolve"/>
|
||||
<target name="-resolve"/>
|
||||
<target name="-after-resolve"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Native Package
|
||||
uses targets from packager-impl.xml to run native packager
|
||||
applications to produce stand-alone installable web apps from
|
||||
this built Cmd application
|
||||
===============================================================
|
||||
-->
|
||||
<import file="${basedir}/.sencha/app/packager-impl.xml"/>
|
||||
<import file="${basedir}/.sencha/app/cordova-impl.xml"/>
|
||||
<import file="${basedir}/.sencha/app/phonegap-impl.xml"/>
|
||||
<target name="native-package"
|
||||
depends="init"
|
||||
description="Builds native packages of the application">
|
||||
<x-ant-call unless="skip.native-package">
|
||||
<target name="-before-native-package"/>
|
||||
<target name="-native-package"/>
|
||||
<target name="-after-native-package"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
|
||||
<target name="-before-publish"/>
|
||||
<target name="-after-publish"/>
|
||||
<target name="-publish">
|
||||
<property name="app.manager.file" value="${app.output.base}"/>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
manager
|
||||
version
|
||||
create
|
||||
-id=${app.manager.id}
|
||||
-name=${app.version}
|
||||
-host=${app.manager.host}
|
||||
-secret=${app.manager.secret}
|
||||
-apiKey=${app.manager.apiKey}
|
||||
-file=${app.manager.file}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
</target>
|
||||
<target name="publish"
|
||||
depends="init,-before-publish,-publish,-after-publish"
|
||||
description="Publish app to Sencha Web Application Manager"/>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Build Dependencies
|
||||
uses the compiler to build metadata files for all detected
|
||||
file-to-file dependencies
|
||||
===============================================================
|
||||
-->
|
||||
<target name="build-dependencies" depends="init, -detect-app-build-properties">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
restore
|
||||
page
|
||||
and
|
||||
meta
|
||||
-infoType=Dependencies
|
||||
-basePath=${build.dir}
|
||||
-tpl={0}
|
||||
-out=${build.dir}/dependencies.json
|
||||
and
|
||||
meta
|
||||
-infoType=AppManifest
|
||||
-basePath=${build.dir}
|
||||
-tpl={0}
|
||||
-out=${build.dir}/bootsequence.json
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Help - properties
|
||||
displays all current ant properties
|
||||
===============================================================
|
||||
-->
|
||||
<target name=".props" depends="init"
|
||||
description="Lists all properties defined for the build">
|
||||
<echoproperties/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
===============================================================
|
||||
Help - docs
|
||||
displays the help message
|
||||
===============================================================
|
||||
-->
|
||||
<target name=".help" depends="init"
|
||||
description="Provides help on the build script">
|
||||
<x-get-project-targets property="help.message"/>
|
||||
|
||||
<echo><![CDATA[${help.message}
|
||||
This is the main build script for your application.
|
||||
|
||||
The following properties can be used to disable certain steps in the build
|
||||
process.
|
||||
|
||||
* skip.page Do not build the HTML page.
|
||||
* skip.js Do not build the output js code file(s)
|
||||
* skip.resources Do not copy resources to the build directory
|
||||
* skip.sass Do not build the SASS.
|
||||
* skip.slice Do not build the theme image slicer.
|
||||
|
||||
Most build options are controlled by the app manifest. For details see:
|
||||
|
||||
${basedir}/app.json
|
||||
|
||||
For more specific controls over the build process, see:
|
||||
|
||||
${basedir}/.sencha/app/defaults.properties
|
||||
|
||||
For details about how these options affect your build, see
|
||||
|
||||
${basedir}/.sencha/app/build-impl.xml
|
||||
|
||||
These options can be stored in a local.properties file in this folder or in the
|
||||
local.properties file in the workspace. This file should not be included in
|
||||
source control.
|
||||
|
||||
Alternatively, these can be supplied on the command line. For example:
|
||||
|
||||
ant -Dskip.sass=1 build
|
||||
|
||||
To see all currently defined properties, do this:
|
||||
|
||||
ant .props
|
||||
]]></echo>
|
||||
</target>
|
||||
|
||||
</project>
|
@ -1,20 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in these
|
||||
# lower priority files:
|
||||
#
|
||||
# - ext.properties
|
||||
# - *.defaults.properties
|
||||
# - defaults.properties
|
||||
#
|
||||
# To override a property based on build.environment instead add properties to
|
||||
# one of these higher priority files:
|
||||
#
|
||||
# - production.properties
|
||||
# - testing.properties
|
||||
# - native.properties
|
||||
# - package.properties
|
||||
#
|
||||
# IMPORTANT - Sencha Cmd will merge your changes with its own during upgrades.
|
||||
# To avoid potential merge conflicts avoid making large, sweeping changes to
|
||||
# this file.
|
||||
# =============================================================================
|
@ -1,286 +0,0 @@
|
||||
{
|
||||
"sources": {
|
||||
"config.rb.tpl.merge": {
|
||||
"33f446bd02c3fd24eb27891582eff6a2e789796b": "eJxLLi2KT8ksUrBVcMvMSdUDMvMSc1M14uPdPH1c4+M1ufJLSwpKS+KLSypzUoGqrPJSi0tSU7gALskTcA\u003d\u003d"
|
||||
},
|
||||
"package.properties.merge": {
|
||||
"c6c1fb2fb1dda28480ad0f6e5caffc9b97d196ae": "eJytkUFygzAMRfc5hSZsOxygM11223aRCwgsQBNH8tiCTG5fGWjDAcLOsnjvS27g45XfqYHLxAUGjgQp68KBCqCALpSzHyApi8GgGQINOEeDBTNjF73PKywUgAUclLC/4kjt3lda5yXKxlRat1BZDXsFMBOoxAfwLWk2p9wnEuhmjoFldF512kRw3sFnIFk4q9xIrD013vLz5B2y2P9EhtcqZc1sj3WmTXCI5gWrYZy2xomKwTFV/hSvP5XN+fV9+Xzftjb7SDoc+jClWJmmIGi80N9SwnbVe1HlDUTdWfNvt1togpGEMkYoLP1K7tVfIHKXfeVU/S9+/V9rlbyW"
|
||||
},
|
||||
"testing.properties.merge": {
|
||||
"360e715956c81757e53736789fe20be045acb544": "eJytkMENwjAMRe+d4oveuwE7cGCBoLjUItiVY4q6PW6pKAM0t1g/732nxfnI07S4DlzRcyGMphNnqkgCncgsLhiVxdGrIVOfXsUxJeN0K5GLCQtlsCBATtVZ7t2Wq13wRjJnql1YqK6GbYJkBJUyg5+jmgflPZDg9uKSgxK8xekD4bSBTyCZ2FSeJN41bUQuO++vi/828vRYpKzGPq87fQV/1WLgS5mgrXWKphyYRb6L10c1nAf//gdqIpHi"
|
||||
},
|
||||
"native.properties.merge": {
|
||||
"2c8c063f9588eecff09624782d7369a8a000d61c": "eJytkEsOwjAMRPecYkT3vQF3YMEFguJSi2BXjgni9rgfFQ5AdrEm743T4fTPc+hwGbli4EKYTBtnqkgCbWQWF0zK4hjUkGlIz+JoyThdS+RiwkIZLAiQJOdG/RarfeAmMmeqfUioLoJtgmQElfIGPyY1D8hrJMH1ySWz3AI3K30kHFfuESSNTeVB4v2hi8T5i/tp4vs+nu6zk9XY38tGK/+nWQx87hK0pU3RlAMzu3fv8qaG8s9f/wFV3ZB9"
|
||||
},
|
||||
"production.properties.merge": {
|
||||
"cbdf9712e9b5d37cecb4d0530ba1fccd0ed004a3": "eJytkUEOwjAMBO+8YkXv/QF/4MAHAnGpRbArxy3i97gFQbk3t6ycmbXS4LDl2TU49VzRcSEMphNnqkgCncgsLhiUxdGpIVOXxuKYknE6l5iLhIUyWBCgeJ7Hi7NK+xmtbWQDmTPVNkRUF8knQTKCSnmC74OaB+jRk+A8csks10DOWu8J+x97D5KJTeVO4u2uianjD7lq5N+9PN1mL6uxP5fN3o5Vuwh87hO0pVHRlAMz+//cy7sa2o2/4QV6LJW9"
|
||||
},
|
||||
"sencha.cfg.tpl.merge": {
|
||||
"37e77998d0cc69cbe4c0c2d4481f2e6c43b55a8f": "eJytkMENwkAMBP9XxUp5Qwe8aIAWzMUhli7nk+0Qheq5gOgAf/xY72rHA2IWRzNtbLHDG2eZhB2ErMtCcG5kFDyiiAd0QqOYvas1SKrURxpg7Lpa7rbQrrT92DEz7quUEaMY51DbE7V2/h2fP0GXlIbLX6f3ua4euuD2xTpwTrgVyoz8UeRFIVoddy66fX9QpPJRm54qIxa2B/ekjjkVyeHYJGZU3tjwZPPDnt66VmnK"
|
||||
},
|
||||
"build.properties.merge": {
|
||||
"d4613dc19be3ddb60e7ff5716e28c8b15d954f3a": "eJytUstOw0AMvPMVI/WGoB+AxAFx4sBD0B9ws05idbOOdp2E/j1OH6pEEKfuzR57POP1Co/XfDcrbFopqCUy+qyjBC6gBB05Zw/QqyRDrRmBaxqiYaQstI1e5xlJHCAJ1nJhZ4s6cXYm0Sy2P/CWh5uVI8A9+NvWPqXnbMLllLxdn5jLEvsTmUXrRSHhBO6xpeJyNGE7SAxrTqNkTR27A0nFmAIoBFzIYOpsmhhaHz2glab9x4L3hqEy0bRUa1xMUrMEEpmMvMz3VO2o4d/uXl4/3j83T28bL/niVLWE5y5gkhjRcW4Yex0yPJ8a9zCJtRAr0CkhDNklYOibTP6X6+OyaFRx32q+CqEzS6WpjlJ55xHvaDf3RnLwDmVi7uf4POewKzufy8x83Vv8AQy16fs\u003d"
|
||||
},
|
||||
"development.properties.merge": {
|
||||
"c45c602c9b6f6f73cace183e9f0bf09c00a3ccf6": "eJytkUuOAjEMBfec4one9w24wyy4QFDc0xbBjhyTEbcfp0F89mRny6l6liccvvl2E44rNyxcCNW0c6aGJNBOZlGgKotjUUOmJV2LoyfjdCoxFx0WymBBgJyas/zOj7k2B6+SOVObw0JtMzw6SEZQKTfwpap5UP5WEpyuXHJQgjecvhL2mToVrRcS34Oks6mMYt5NMfbzYr7l8edWns5DzGrst22vu+QtXjR8BAraFqloyoEZAT7l28cW3i9f4R+b7pUs"
|
||||
}
|
||||
},
|
||||
"targets": {
|
||||
"sass/config.rb": {
|
||||
"source": "config.rb.tpl.merge",
|
||||
"version": "33f446bd02c3fd24eb27891582eff6a2e789796b",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
},
|
||||
".sencha/app/package.properties": {
|
||||
"source": "package.properties.merge",
|
||||
"version": "c6c1fb2fb1dda28480ad0f6e5caffc9b97d196ae",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
},
|
||||
".sencha/app/testing.properties": {
|
||||
"source": "testing.properties.merge",
|
||||
"version": "360e715956c81757e53736789fe20be045acb544",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
},
|
||||
".sencha/app/native.properties": {
|
||||
"source": "native.properties.merge",
|
||||
"version": "2c8c063f9588eecff09624782d7369a8a000d61c",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
},
|
||||
".sencha/app/production.properties": {
|
||||
"source": "production.properties.merge",
|
||||
"version": "cbdf9712e9b5d37cecb4d0530ba1fccd0ed004a3",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
},
|
||||
".sencha/app/sencha.cfg": {
|
||||
"source": "sencha.cfg.tpl.merge",
|
||||
"version": "37e77998d0cc69cbe4c0c2d4481f2e6c43b55a8f",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
},
|
||||
".sencha/app/build.properties": {
|
||||
"source": "build.properties.merge",
|
||||
"version": "d4613dc19be3ddb60e7ff5716e28c8b15d954f3a",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
},
|
||||
".sencha/app/development.properties": {
|
||||
"source": "development.properties.merge",
|
||||
"version": "c45c602c9b6f6f73cace183e9f0bf09c00a3ccf6",
|
||||
"parameters": {
|
||||
"appControllers": "",
|
||||
"appModels": "",
|
||||
"appName": "Ngpc.csc",
|
||||
"appStores": "",
|
||||
"appViews": "",
|
||||
"classic": false,
|
||||
"controllerFileName": "Main",
|
||||
"controllerName": "Main",
|
||||
"controllerNamespace": "Ngpc.csc.controller",
|
||||
"frameworkKey": "ext",
|
||||
"frameworkName": "ext",
|
||||
"frameworkPath": "ext",
|
||||
"frameworkVer": "6.2.0.981",
|
||||
"fwIs60": false,
|
||||
"modelNamespace": "Ngpc.csc.model",
|
||||
"modern": false,
|
||||
"name": "Ngpc.csc",
|
||||
"packagesRelPath": "ext/packages",
|
||||
"senchadir": ".sencha",
|
||||
"themeName": "default",
|
||||
"toolkit": "",
|
||||
"uniqueId": "55948c26-d0ca-43e7-add2-2ac8d857c478",
|
||||
"universal": true,
|
||||
"viewFileName": "Main",
|
||||
"viewName": "Main",
|
||||
"viewNamespace": "Ngpc.csc.view"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,180 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="Cordova" default="cordova-help">
|
||||
<!--Legacy properties file support-->
|
||||
<property file="${app.dir}/cordova.local.properties"/>
|
||||
|
||||
<!--Init for All Cordova Task-->
|
||||
<target name="-before-cordova-init"/>
|
||||
<target name="-cordova-init">
|
||||
<if>
|
||||
<x-is-true value="app.cordova.config.verbose"/>
|
||||
<then>
|
||||
<property name="cordova.cli.options" value="-d"/>
|
||||
</then>
|
||||
<else>
|
||||
<property name="cordova.cli.options" value=""/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-cordova-init"/>
|
||||
<target name="cordova-init"
|
||||
depends="-init, -before-cordova-init, -cordova-init, -after-cordova-init"/>
|
||||
|
||||
<target name="cordova-help"/>
|
||||
|
||||
<!-- Create Cordova Application-->
|
||||
<target name="cordova-create" depends="cordova-init">
|
||||
<if>
|
||||
<not>
|
||||
<available file="${app.cordova.config.path}" type="dir"/>
|
||||
</not>
|
||||
<then>
|
||||
<cordova-echo message="Creating Cordova Application with ID "${app.cordova.config.id}" and Name "${app.cordova.config.name}""/>
|
||||
<x-shell reloadprofile="true" dir="${app.dir}">
|
||||
cordova ${cordova.cli.options} create "${app.cordova.config.path}" ${app.cordova.config.id} "${app.cordova.config.name}"
|
||||
</x-shell>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!-- Prepares application for all platforms -->
|
||||
<target name="-before-cordova-prepare"/>
|
||||
<target name="-cordova-prepare" if="args.prepare">
|
||||
<cordova-echo message="Attempting Cordova Prepare for platforms "${cordova.platforms.clean}""/>
|
||||
<x-shell reloadprofile="true" dir="${app.cordova.config.path}">
|
||||
cordova ${cordova.cli.options} prepare ${cordova.platforms.clean}
|
||||
</x-shell>
|
||||
</target>
|
||||
<target name="-after-cordova-prepare"/>
|
||||
<target name="cordova-prepare" depends="cordova-init, -before-cordova-prepare, -cordova-prepare, -after-cordova-prepare"/>
|
||||
|
||||
<!-- Emulates application on all platforms -->
|
||||
<target name="-before-cordova-emulate"/>
|
||||
<target name="-cordova-emulate" if="args.emulate" depends="cordova-platform-add">
|
||||
<cordova-echo message="Attempting Cordova Emulate for platforms "${cordova.platforms.clean}""/>
|
||||
<x-shell reloadprofile="true" dir="${app.cordova.config.path}">
|
||||
cordova ${cordova.cli.options} emulate ${cordova.platforms.clean} --target=${app.cordova.config.target}
|
||||
</x-shell>
|
||||
</target>
|
||||
<target name="-after-cordova-emulate"/>
|
||||
<target name="cordova-emulate" depends="cordova-init, -before-cordova-emulate, -cordova-emulate, -after-cordova-emulate"/>
|
||||
|
||||
<!-- Runs application on device for all platforms -->
|
||||
<target name="-before-cordova-run"/>
|
||||
<target name="-cordova-run" if="args.autorun" depends="cordova-platform-add">
|
||||
<cordova-echo message="Attempting Cordova Run for platforms "${cordova.platforms.clean}""/>
|
||||
<x-shell reloadprofile="true" dir="${app.cordova.config.path}">
|
||||
cordova ${cordova.cli.options} run ${cordova.platforms.clean} --target=${app.cordova.config.target}
|
||||
</x-shell>
|
||||
</target>
|
||||
<target name="-after-cordova-run"/>
|
||||
<target name="cordova-run" depends="cordova-init, -before-cordova-run, -cordova-run, -after-cordova-run"/>
|
||||
|
||||
<!-- Builds application for all platforms -->
|
||||
<target name="-before-cordova-build"/>
|
||||
<target name="-cordova-build" depends="cordova-platform-add">
|
||||
<cordova-echo message="Attempting Cordova Build for platforms "${cordova.platforms.clean}""/>
|
||||
<x-shell reloadprofile="true" dir="${app.cordova.config.path}">
|
||||
cordova ${cordova.cli.options} build ${cordova.platforms.clean}
|
||||
</x-shell>
|
||||
</target>
|
||||
<target name="-after-cordova-build"/>
|
||||
<target name="cordova-build" depends="cordova-init, -before-cordova-build, -cordova-build, -after-cordova-build"/>
|
||||
|
||||
<!-- Adds all missing Platforms from properties file to the project-->
|
||||
<target name="-before-cordova-platform-add"/>
|
||||
<target name="-cordova-platform-add">
|
||||
<fail status="0" message="No platforms were specified, add a platform to ${build.name}'s -> cordova -> config -> platforms property in app.json">
|
||||
<condition>
|
||||
<or>
|
||||
<not>
|
||||
<isset property="cordova.platforms"/>
|
||||
</not>
|
||||
<contains string="${cordova.platforms}" substring="$"/>
|
||||
</or>
|
||||
</condition>
|
||||
</fail>
|
||||
|
||||
|
||||
<script language="javascript">
|
||||
var platforms = project.getProperty("cordova.platforms");
|
||||
|
||||
if (!platforms) {
|
||||
platforms = ""
|
||||
}
|
||||
platforms = platforms.replace("/,/g", " ");
|
||||
project.setProperty("cordova.platforms.clean", platforms);
|
||||
</script>
|
||||
|
||||
<x-shell reloadprofile="true" dir="${app.cordova.config.path}" outputproperty="cordova.platforms.list">
|
||||
cordova ${cordova.cli.options} platform list
|
||||
</x-shell>
|
||||
|
||||
<script language="javascript">
|
||||
var target_platforms = project.getProperty("cordova.platforms.clean").split(" ");
|
||||
var existing_platforms = project.getProperty("cordova.platforms.list");
|
||||
var available = existing_platforms.indexOf("Available");
|
||||
|
||||
if (available >= 0) {
|
||||
existing_platforms = existing_platforms.substring(0, available);
|
||||
}
|
||||
|
||||
var missing_platforms = [], platformIndex, platform;
|
||||
for (platformIndex in target_platforms) {
|
||||
platform = target_platforms[platformIndex];
|
||||
if(existing_platforms.indexOf(platform) === -1){
|
||||
missing_platforms.push(platform);
|
||||
}
|
||||
}
|
||||
|
||||
if(missing_platforms.length > 0) {
|
||||
self.log("Cordova: Missing platforms " + missing_platforms.toString() + ". Attempting add.");
|
||||
project.setProperty("cordova.platforms.missing", missing_platforms.join(" "));
|
||||
} else if(existing_platforms.length() >0){
|
||||
self.log("Cordova: All requested platforms exist");
|
||||
} else {
|
||||
self.log("Cordova: No platforms exist");
|
||||
}
|
||||
</script>
|
||||
|
||||
<if>
|
||||
<isset property="cordova.platforms.missing"/>
|
||||
<then>
|
||||
<cordova-echo message="Cordova is adding platforms "${cordova.platforms.missing}""/>
|
||||
<x-shell reloadprofile="true" dir="${app.cordova.config.path}">
|
||||
cordova ${cordova.cli.options} platform add ${cordova.platforms.missing}
|
||||
</x-shell>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-cordova-platform-add"/>
|
||||
<target name="cordova-platform-add" depends="cordova-init, -before-cordova-platform-add, -cordova-platform-add, -after-cordova-platform-add"/>
|
||||
|
||||
<target name="-before-cordova-init-native-package"/>
|
||||
<target name="-cordova-init-native-package" depends="cordova-create"/>
|
||||
<target name="-after-cordova-init-native-package"/>
|
||||
<target name="cordova-init-native-package" depends="cordova-init, -before-cordova-init-native-package, -cordova-init-native-package, -after-cordova-init-native-package"/>
|
||||
|
||||
<target name="-before-cordova-native-package"/>
|
||||
<target name="-cordova-native-package" depends="cordova-platform-add, cordova-build, cordova-prepare, cordova-emulate, cordova-run"/>
|
||||
<target name="-after-cordova-native-package"/>
|
||||
<target name="cordova-native-package" depends="cordova-init, -before-cordova-native-package, -cordova-native-package, -after-cordova-native-package"/>
|
||||
|
||||
|
||||
<macrodef name="cordova-echo">
|
||||
<text name="text" optional="true"/>
|
||||
<attribute name="message" default=""/>
|
||||
<attribute name="level" default="info"/>
|
||||
<sequential>
|
||||
<if>
|
||||
<equals arg1="@{message}" arg2=""/>
|
||||
<then>
|
||||
<x-echo message="[Cordova] @{text}" level="@{level}"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-echo message="[Cordova] @{message}" level="@{level}"/>
|
||||
</else>
|
||||
</if>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
</project>
|
@ -1,6 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2012-2014. Sencha Inc.
|
||||
#
|
||||
|
||||
# Legacy support here for old build workflow.
|
||||
cordova.platforms=${app.cordova.config.platforms}
|
@ -1,707 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file defines properties used by build-impl.xml and the associated
|
||||
# *-impl.xml files (sass-impl.xml, js-impl.xml, etc.), which are the core of
|
||||
# the applications build process.
|
||||
#
|
||||
# This file represents the lowest priority file for defining these properties
|
||||
# as well as the place to look for documentation and learning what properties
|
||||
# exist.
|
||||
#
|
||||
# The full set of these files is as follows (in priority order):
|
||||
#
|
||||
# - One of these (based on build.environment):
|
||||
# - production.properties
|
||||
# - testing.properties
|
||||
# - native.properties
|
||||
# - package.properties
|
||||
#
|
||||
# - build.properties
|
||||
#
|
||||
# - One of these (based on app.framework):
|
||||
# - ext.properties
|
||||
# - touch.properties
|
||||
#
|
||||
# - One of these (based on build.environment):
|
||||
# - production.defaults.properties
|
||||
# - testing.defaults.properties
|
||||
# - native.defaults.properties
|
||||
# - package.defaults.properties
|
||||
#
|
||||
# - defaults.properties
|
||||
#
|
||||
# Properties are controlled by the first file in the above list to define the
|
||||
# value. Values from all levels, however, can reference each other via the
|
||||
# property expansion.
|
||||
#
|
||||
# IMPORTANT - This file should not be modified by an app as it is overwritten
|
||||
# during each app upgrade.
|
||||
# =============================================================================
|
||||
|
||||
# *****************************************************************************
|
||||
# Global Build Properties
|
||||
# these are cross-concern properties used by many build phases
|
||||
# *****************************************************************************
|
||||
|
||||
# the default build environment type (production, testing, native, package)
|
||||
# NOTE: this is only a default and will typically be set before this file is
|
||||
# loaded, typically by the 'sencha app build" command.
|
||||
# See "sencha help app build" for details.
|
||||
#
|
||||
# The corresponding properties files:
|
||||
# (production.properties, testing.properties, etc.) provide examples of
|
||||
# overriding sets of properties depending on the selected environment
|
||||
# NOTE: this replaces the deprecated args.environment
|
||||
app.environment=production
|
||||
build.environment=${app.environment}
|
||||
|
||||
# the directory to place built application files
|
||||
build.dir=${workspace.build.dir}/${build.environment}/${app.name}
|
||||
|
||||
app.compressor.type=${app.compressor}
|
||||
|
||||
app.output=${build.dir}
|
||||
app.output.base=${app.output}
|
||||
|
||||
app.output.page=index.html
|
||||
app.output.page.path=${app.output.page}
|
||||
app.output.page.enable=true
|
||||
|
||||
app.output.resources=resources
|
||||
app.output.resources.path=${app.output.resources}
|
||||
app.output.resources.enable=true
|
||||
app.output.resources.compress=${app.output.js.compress}
|
||||
|
||||
app.output.css.dir=${app.output.resources.path}
|
||||
app.output.css=${app.output.css.dir}/${app.name}-all.css
|
||||
app.output.css.path=${app.output.css}
|
||||
app.output.css.enable=true
|
||||
app.output.css.compress=true
|
||||
app.output.css.preprocess=true
|
||||
app.output.css.split=4095
|
||||
|
||||
app.output.js=app.js
|
||||
app.output.js.path=${app.output.js}
|
||||
app.output.js.enable=true
|
||||
app.output.js.compress=false
|
||||
app.output.js.optimize=false
|
||||
app.output.js.optimize.cssPrefix=${app.output.js.optimize}
|
||||
app.output.js.optimize.xtemplate=false
|
||||
app.output.js.optimize.propNames=${app.output.js.optimize}
|
||||
app.output.js.optimize.defines=${app.output.js.optimize}
|
||||
app.output.js.optimize.callParent=${app.output.js.optimize}
|
||||
app.output.js.optimize.requires=${app.output.js.optimize}
|
||||
|
||||
app.output.framework=framework.js
|
||||
app.output.framework.path=${app.output.framework}
|
||||
app.output.framework.enable=false
|
||||
|
||||
app.output.microloader=microloader.js
|
||||
app.output.microloader.path=${app.output.microloader}
|
||||
app.output.microloader.enable=true
|
||||
app.output.microloader.embed=true
|
||||
|
||||
app.output.manifest=app.json
|
||||
app.output.manifest.path=${app.output.manifest}
|
||||
app.output.manifest.enable=true
|
||||
app.output.manifest.embed=false
|
||||
|
||||
app.output.slicer=${app.output.resources.path}
|
||||
app.output.slicer.path=${app.output.slicer}
|
||||
app.output.slicer.enable=true
|
||||
|
||||
app.archivePath=archive
|
||||
app.output.archive=${app.archivePath}
|
||||
app.output.archive.path=${app.output.archive}
|
||||
|
||||
app.cache.enable=${app.output.deltas.enable}
|
||||
|
||||
app.output.cache=cache.appcache
|
||||
app.output.cache.path=${app.output.cache}
|
||||
app.output.cache.enable=true
|
||||
app.output.appCache.enable=${app.output.cache.enable}
|
||||
app.output.appCache.path=${app.output.cache.path}
|
||||
|
||||
build.out.base.path=${app.output.base}
|
||||
build.out.page.path=${build.out.base.path}/${app.output.page.path}
|
||||
build.out.resources.path=${build.out.base.path}/${app.output.resources.path}
|
||||
build.out.css.path=${build.out.base.path}/${app.output.css.path}
|
||||
build.out.js.path=${build.out.base.path}/${app.output.js.path}
|
||||
build.out.framework.path=${build.out.base.path}/${app.output.framework.path}
|
||||
build.out.archive.path=${build.out.base.path}/${app.output.archive.path}
|
||||
build.out.manifest.path=${build.out.base.path}/${app.output.manifest.path}
|
||||
build.out.microloader.path=${build.out.base.path}/${app.output.microloader.path}
|
||||
build.out.appCache.path=${build.out.base.path}/${app.output.appCache.path}
|
||||
|
||||
# Moved to init-impl.xml to handle truthy special values
|
||||
#build.out.deltas.path=${build.out.base.path}/${app.output.deltas.path}
|
||||
build.out.slicer.path=${build.out.base.path}/${app.output.slicer.path}
|
||||
|
||||
# place holder properties to allow the newer .path property to control the existing .dir property
|
||||
build.out.resources.dir=${build.out.resources.path}
|
||||
build.out.css.dir=${build.out.base.path}/${app.output.css.dir}
|
||||
|
||||
build.out.metadata.path=${build.out.page.path}
|
||||
|
||||
# a temporary output directory used for staging intermediate build artifacts
|
||||
build.temp.dir=${workspace.build.dir}/temp/${build.environment}/${app.name}
|
||||
|
||||
# the directory under the output folder for placing resources
|
||||
build.resources.dir=${build.out.resources.path}
|
||||
|
||||
app.manifest.bootstrap=bootstrap.json
|
||||
|
||||
app.bootstrap=${app.dir}
|
||||
app.bootstrap.base=${app.bootstrap}
|
||||
app.bootstrap.page=${app.indexHtmlPath}
|
||||
app.bootstrap.page.path=${app.bootstrap.page}
|
||||
app.bootstrap.css=${app.bootstrap.css.name}
|
||||
app.bootstrap.css.path=${app.bootstrap.css}
|
||||
app.bootstrap.microloader=${app.bootstrap.js.name}
|
||||
app.bootstrap.microloader.path=${app.bootstrap.microloader}
|
||||
app.bootstrap.manifest=${app.manifest.bootstrap}
|
||||
app.bootstrap.manifest.path=${app.bootstrap.manifest}
|
||||
|
||||
build.bootstrap.base.path=${app.bootstrap.base}
|
||||
build.bootstrap.page.path=${build.bootstrap.base.path}/${app.bootstrap.page.path}
|
||||
build.bootstrap.css.path=${build.bootstrap.base.path}/${app.bootstrap.css.path}
|
||||
build.bootstrap.microloader.path=${build.bootstrap.base.path}/${app.bootstrap.microloader.path}
|
||||
build.bootstrap.manifest.path=${build.bootstrap.base.path}/${app.bootstrap.manifest.path}
|
||||
|
||||
build.bootstrap.metadata.path=${build.bootstrap.page.path}
|
||||
|
||||
# *****************************************************************************
|
||||
# JS
|
||||
# these properties control various aspects of output js code construction
|
||||
# *****************************************************************************
|
||||
|
||||
# the output js file that contains all needed js code
|
||||
|
||||
# deprecated, now controlled by app.output.js / app.output.js.path in app.json
|
||||
build.classes.file=${build.out.js.path}
|
||||
|
||||
# the output js file for framework code, if the framework
|
||||
# classes are not included in the default all-classes.js file
|
||||
# deprecated, now controlled by app.output.framework / app.output.framework.path in app.json
|
||||
build.framework.file=${build.out.framework.path}
|
||||
|
||||
# Don't use these - they are deprecated
|
||||
build.options.debug.enable=debug:true
|
||||
build.options.debug.disable=debug:false
|
||||
build.options.logger.enable=logger:yes
|
||||
build.options.logger.disable=logger:no
|
||||
|
||||
# This property enables/disables <feature logger> blocks in js output, see build.options
|
||||
build.options.logger=no
|
||||
|
||||
# This property enables/disables <debug> blocks in js output, see build.options
|
||||
build.options.debug=false
|
||||
|
||||
# This property can be used to pass custom build options in addition to any of the other
|
||||
# build.options flags. When overlapping, these options take priority, see build.options
|
||||
build.options.custom=
|
||||
|
||||
# This value is specified by the framework
|
||||
build.options.default=
|
||||
|
||||
# This property contains the framework ("product") used for filtering of JavaScript using
|
||||
# the preprocessor. This is set by either ext.properties or touch.properties.
|
||||
#
|
||||
#build.options.product=touch
|
||||
|
||||
# This property contains the desired API level used for preprocessor filtering of JavaScript.
|
||||
# This is set by either ext.properties or touch.properties.
|
||||
#
|
||||
#build.options.minVersion=2.1
|
||||
|
||||
# This property holds the set of js preprocessor options in the form:
|
||||
#
|
||||
# name1:value1,name2:value2,...
|
||||
#
|
||||
# (used by -init-compiler in init-impl.xml)
|
||||
#
|
||||
# This property is not likely to be set directly. Rather, you should set one of the
|
||||
# contributing properties that are combined to form this one:
|
||||
#
|
||||
# build.options.debug
|
||||
# build.options.logger
|
||||
# build.options.custom
|
||||
#
|
||||
# The other properties that contribute to this are typically not needing to be set:
|
||||
#
|
||||
# build.options.product
|
||||
# build.options.minVersion
|
||||
#
|
||||
build.options=logger:${build.options.logger},debug:${build.options.debug},product:${build.options.product},minVersion:${build.options.minVersion},${build.options.default},${build.options.custom}
|
||||
|
||||
# This property can be modified to change general build options
|
||||
# such as excluding files from the set. The format expects newlines
|
||||
# for each argument, for example:
|
||||
#
|
||||
# build.operations=\
|
||||
# exclude\n \
|
||||
# -namespace=Ext\n
|
||||
#
|
||||
# NOTE: modifications to build.operations are intended to be
|
||||
# placed in an override of the "-after-init" target, where it
|
||||
# can be calculated based on other
|
||||
# ant properties
|
||||
#
|
||||
# build.operations=
|
||||
|
||||
# enables / disables the full class optimizer during js builds
|
||||
# (used by the -compile-* targets in js-impl.xml)
|
||||
build.optimize.defines=${app.output.js.optimize.defines}
|
||||
build.optimize.callparent=${app.output.js.optimize.callParent}
|
||||
build.optimize.cssPrefix=${app.output.js.optimize.cssPrefix}
|
||||
build.optimize.xtemplate=${app.output.js.optimize.xtemplate}
|
||||
build.optimize.propNames=${app.output.js.optimize.propNames}
|
||||
build.optimize.include.metadata=${app.output.js.optimize.requires}
|
||||
build.optimize.enable=\
|
||||
optimize\n \
|
||||
-property-name=${build.optimize.propNames}\n \
|
||||
-css-prefix=${build.optimize.cssPrefix}\n \
|
||||
-xtemplate=${build.optimize.xtemplate}\n \
|
||||
-define-rewrite=${build.optimize.defines}\n \
|
||||
-call-parent=${build.optimize.callparent}\n \
|
||||
-include-metadata=${build.optimize.include.metadata}
|
||||
|
||||
build.optimize.disable=
|
||||
build.optimize=${build.optimize.disable}
|
||||
|
||||
# enables / disables removing text references from
|
||||
# package js build files
|
||||
build.remove.references=true
|
||||
|
||||
# enables / disables removing "requires" and "uses" elements
|
||||
# from class definitions
|
||||
build.remove.requirement.nodes=true
|
||||
|
||||
# enables / disables de-quoting certain string references to classes
|
||||
# like mixin references
|
||||
build.optimize.string.references=true
|
||||
|
||||
# enables / disables yui compression
|
||||
build.compression.yui=${app.output.js.compress}
|
||||
|
||||
# enables / disables closure compression
|
||||
build.compression.closure=0
|
||||
|
||||
# enables / disables uglify compression
|
||||
build.compression.ugilfy=0
|
||||
|
||||
build.compile.temp.dir=${build.temp.dir}/sencha-compiler
|
||||
|
||||
# controles whether to keep the temp compile dir after the build
|
||||
build.compile.temp.dir.keep=true
|
||||
|
||||
# ------------------------------------------
|
||||
# DOC ONLY - Do Not Set
|
||||
# this variable will be set to the appropriate compressor
|
||||
# option, and is calculated in init-impl.xml, but may be overridded in
|
||||
# app.properties, <environment>.properties, or via command line
|
||||
#
|
||||
# build.compression=
|
||||
# ------------------------------------------
|
||||
|
||||
# *****************************************************************************
|
||||
# Page
|
||||
# these variables control aspects of building the output markup page
|
||||
# *****************************************************************************
|
||||
|
||||
# controls whether the microloader content will be embedded in the output
|
||||
# markup, or left as a separate resource
|
||||
build.enable.embedded.microloader=${app.output.microloader.embed}
|
||||
|
||||
# whether to include the page's manifest.json code with the
|
||||
# microloader content. Production.properties files should set this to
|
||||
# false to have manifest.json exist as a server resource.
|
||||
build.enable.embedded.manifest=${app.output.manifest.embed}
|
||||
|
||||
# enables / disables compression of resources referenced in app.json / package.json
|
||||
# js and css entries
|
||||
enable.resource.compression=${app.output.resources.compress}
|
||||
|
||||
# defaults to index.html, but may be overridden in app.json
|
||||
app.indexHtmlPath=index.html
|
||||
|
||||
# the input page file for the application
|
||||
app.page.name=${app.indexHtmlPath}
|
||||
app.page.file=${app.dir}/${app.page.name}
|
||||
|
||||
# the output page file
|
||||
# deprecated, now controlled by app.output.page / app.output.page.path in app.json
|
||||
build.page.name=${app.page.name}
|
||||
build.page.dir=${build.out.base.path}
|
||||
build.page.file=${build.out.page.path}
|
||||
|
||||
# the directory where the microloader files may be found
|
||||
app.microloader.dir=${app.config.dir}/microloader
|
||||
|
||||
# the file names of the individual microloaders
|
||||
app.microloader.development=development.js
|
||||
app.microloader.testing=testing.js
|
||||
app.microloader.production=production.js
|
||||
|
||||
# the target microloader to use for builds
|
||||
app.microloader.name=${app.microloader.development}
|
||||
app.microloader=${app.microloader.dir}/${app.microloader.name}
|
||||
app.microloader.path=${app.microloader}
|
||||
|
||||
# specifies how to embed the microloader code into the output markup
|
||||
# {0} is replaced with the content of the microloader file specified
|
||||
# by app.microloader.path
|
||||
build.microloader.code.tpl={0}
|
||||
|
||||
# the template to use when generating a stand-alone json manifest file
|
||||
build.microloader.json.tpl.standalone={0}
|
||||
|
||||
# the template to use when embedding the manifest json directly next to the
|
||||
# microloader in the output microloader content
|
||||
build.microloader.json.tpl.embedded=Ext.blink({0});
|
||||
|
||||
# the template to use in the output microloader content when supplying
|
||||
# the manifest json as a separate server-side resource ('production' builds)
|
||||
build.microloader.json.tpl.external=Ext.blink('{'id:''${app.id}'''}');
|
||||
|
||||
# the template string to use when embedding the microloader content
|
||||
# into the output markup
|
||||
build.embedded.microloader.tpl=<script id="microloader" data-app="${app.id}" type="text/javascript">{0}</script>
|
||||
|
||||
# the compressor to use when embedding the microloader into a page
|
||||
# can be -closure or -yui, or leave empty to disable compression
|
||||
build.embedded.microloader.compressor=
|
||||
|
||||
# the path to the microloader content file, if external to the outpout markup
|
||||
build.microloader.path=${build.out.microloader.path}
|
||||
|
||||
# the inner markup to embed into the output markup when not including
|
||||
# the microloader content directly into the output markup
|
||||
build.embedded.microloader.src=${build.microloader.name}
|
||||
build.external.microloader.markup=<script id="microloader" data-app="${app.id}" src="${build.embedded.microloader.src}"></script>
|
||||
|
||||
# a flag indicating which mode the microloader should run in (production, testing, etc.)
|
||||
# currently unused : is a placeholder for future microloader interactions
|
||||
build.microloader.mode=${build.environment}
|
||||
|
||||
# the tag name to use when generating the compiler save set for
|
||||
# the page's js code
|
||||
build.tag.name=full-page
|
||||
|
||||
# the name of the archive folder containing source versions for
|
||||
# delta patch generation
|
||||
# deprecated, now controlled by app.output.archive / app.output.archive.path in app.json
|
||||
build.archive.name=archive
|
||||
|
||||
# the output cache manifest file
|
||||
build.manifest.name=${app.output.appCache.path}
|
||||
build.manifest.path=${build.out.appCache.path}
|
||||
|
||||
# the name of the manifest json file
|
||||
build.json.name=${app.manifest.name}
|
||||
|
||||
# the full path to the manifest json file
|
||||
build.out.json.path=${build.out.manifest.path}
|
||||
|
||||
# Defines the file that will contain Ext.setVersion calls for each used package.
|
||||
build.out.package.versions=${build.compile.temp.dir}/cmd-packages.js
|
||||
|
||||
# a temp directory for managing extracted resources during the page build
|
||||
build.app.temp.dir=${build.compile.temp.dir}/app
|
||||
|
||||
# controls the format of checksum headers injected into microloaded content
|
||||
# either comment style, or code style for js and css files
|
||||
delta.comment.checksums=false
|
||||
|
||||
# *****************************************************************************
|
||||
# Refresh
|
||||
# these properties are used for generating bootstrap js and css
|
||||
# files to support dev-time interaction with the app
|
||||
# *****************************************************************************
|
||||
|
||||
# the base path to use for generating / calculating bootstrap info
|
||||
# this property is not longer defaulted here, but calculated in refresh-impl.xml
|
||||
# based on new app.bootstrap properties
|
||||
# app.bootstrap.base.path=${app.dir}
|
||||
|
||||
# these control the name of the bootstrap js file
|
||||
# note: there will be corresponding entries in either the index page
|
||||
# or app.json that reference these names
|
||||
# deprecated, use app.bootstrap.microloader
|
||||
app.bootstrap.js.name=bootstrap.js
|
||||
app.bootstrap.js=${build.bootstrap.microloader.path}
|
||||
|
||||
# these control the name of the bootstrap css file (for ext 4.2+ apps)
|
||||
# note: there will be corresponding entries in either the index page
|
||||
# or app.json that reference these names
|
||||
app.bootstrap.css.name=bootstrap.css
|
||||
|
||||
# the microloader to use for bootstrapping operations
|
||||
app.microloader.bootstrap=${app.microloader.dir}/${app.microloader.development}
|
||||
|
||||
# the name of the bootstrap microloader manifest
|
||||
build.json.bootstrap.name=${app.manifest.bootstrap}
|
||||
|
||||
# the full path to the bootstrap microloader manifest
|
||||
build.json.bootstrap.path=${build.bootstrap.manifest.path}
|
||||
|
||||
# enables inclusion of override files in the generated bootstrap
|
||||
bootstrap.include.overrides=true
|
||||
|
||||
# enables inclusion of the Boot.js code in the generated bootstrap
|
||||
bootstrap.include.boot=false
|
||||
|
||||
# controls the template used to generate load calls for override files
|
||||
bootstrap.override.tpl=Ext.Loader.loadScriptFile(''{0}'', Ext.emptyFn);
|
||||
|
||||
build.boot.name=Boot.js
|
||||
build.boot.file=${app.config.dir}/${build.boot.name}
|
||||
build.slicer.microloader.name=Microloader.js
|
||||
build.slicer.microloader.file=${app.config.dir}/${build.slicer.microloader.name}
|
||||
|
||||
# the type of the override template ('tpl' or 'jsonp')
|
||||
bootstrap.override.tpltype=tpl
|
||||
|
||||
# *****************************************************************************
|
||||
# Sass / Css
|
||||
# properties for controling features of sass generation and compilation
|
||||
# *****************************************************************************
|
||||
|
||||
# controls the ruby command that is used to execute compasss
|
||||
# a full path to ruby may be specified rather than allowing the system
|
||||
# shell to resolve the command
|
||||
build.ruby.path=ruby
|
||||
|
||||
# --------------------
|
||||
# these control properties select the mode used to build the app's styling
|
||||
# see sass-impl.xml for how then are used
|
||||
|
||||
# enables theme builds for apps using ext 41 style themes
|
||||
enable.ext41.themes=false
|
||||
|
||||
# enables theme builds for apps using ext 42 style themes
|
||||
enable.ext42.themes=false
|
||||
|
||||
# enables theme builds for apps using touch style themes
|
||||
enable.touch.themes=false
|
||||
# --------------------
|
||||
|
||||
# selector count threshold to use when
|
||||
# splitting a single css file into multiple
|
||||
# css files (IE selector limit workaround)
|
||||
#
|
||||
# NOTE: applies only to ext js 4.2+ style theme management, currently
|
||||
# see the above theme control variables for details
|
||||
build.css.selector.limit=${app.output.css.split}
|
||||
|
||||
# enables / disable css preprocessor (enable.ext42.themes only)
|
||||
build.css.preprocess=${app.output.css.preprocess}
|
||||
|
||||
# sets the css preprocessor options, in the form:
|
||||
# name1:value1,name2:value2,...
|
||||
build.css.preprocessor.opts=
|
||||
|
||||
# enables / disable css compressor (enable.ext42.themes only)
|
||||
build.css.compress=${app.output.css.compress}
|
||||
|
||||
# controls the directory used to generate the output app scss file
|
||||
# for apps that use theme packages
|
||||
build.sass.dir=${build.temp.dir}/sass
|
||||
|
||||
# Specify the name for the individual resource dirs in the app
|
||||
# (enable.touch.themes only)
|
||||
app.sass.name=sass
|
||||
|
||||
# Specify the sass path in the app
|
||||
# (enable.touch.themes only)
|
||||
app.sass.dir=${app.dir}/resources/${app.sass.name}
|
||||
|
||||
# name prefix to use for output css / sass files
|
||||
app.out.base=${app.name}-all
|
||||
app.out.base.debug=${app.out.base}
|
||||
|
||||
# the output sass file to generate (used with enable.ext42.themes)
|
||||
app.out.scss=${build.sass.dir}/${app.out.base.debug}.scss
|
||||
# the output ruby compass config file to generate (used with enable.ext42.themes)
|
||||
app.out.ruby=${build.sass.dir}/config.rb
|
||||
|
||||
# output css file prefix
|
||||
app.out.css.prefix=${app.out.base.debug}
|
||||
|
||||
# output css file name
|
||||
app.out.css.name=${app.out.css.prefix}.css
|
||||
|
||||
# output css file path (relative to build directory root
|
||||
app.out.css.rel=${app.output.resources.path}/${app.out.css.name}
|
||||
|
||||
# output css file path (full path)
|
||||
app.out.css=${build.out.css.path}
|
||||
|
||||
# separate file name to use for generating a compressed copy
|
||||
# of the output css file (this default will compress the file in-place)
|
||||
app.out.css.compressed=${build.out.css.path}
|
||||
|
||||
# the directory containing sass files for compass to compile
|
||||
compass.sass.dir=${build.sass.dir}
|
||||
|
||||
# the output directory where compass should place built css files
|
||||
compass.css.dir=${build.out.css.dir}
|
||||
|
||||
# the directory containing the ruby config file for compass
|
||||
compass.config.file=${app.out.ruby}
|
||||
|
||||
# enables / disables console highlighting for compass
|
||||
compass.compile.boring=false
|
||||
|
||||
# enables / disables forced rebuilds for compass
|
||||
compass.compile.force=true
|
||||
|
||||
# enables / disables stack traces in compass failure output
|
||||
compass.compile.trace=true
|
||||
|
||||
compass.cache.dir=${workspace.build.dir}/.sass-cache
|
||||
|
||||
compass.working.dir=${build.sass.dir}
|
||||
|
||||
# ---------------------------------------------------
|
||||
# Legacy properties for ext41 theme directories
|
||||
# Specify the resources path in the app
|
||||
app.packages.dir=${app.dir}/packages
|
||||
|
||||
# Specify the theme path in the app (this directory contains the themes)
|
||||
app.theme.dir=${app.packages.dir}
|
||||
|
||||
# the currently selected ext 41 theme name
|
||||
theme.name=default
|
||||
# ---------------------------------------------------
|
||||
|
||||
# *****************************************************************************
|
||||
# Slice
|
||||
# these properties control features of the theme slice build phase
|
||||
# *****************************************************************************
|
||||
|
||||
# the resources directory of the application
|
||||
# note: this property is currently only used for building ext 4.1 style themes
|
||||
# (used by x-build-theme and x-copy-resources in slice-impl.xml)
|
||||
app.resources.dir=${app.dir}/resources
|
||||
|
||||
# the directory containing the slicer widget example page
|
||||
app.example.dir=${app.dir}/sass/example
|
||||
|
||||
# properties to control the recirect css file that is
|
||||
# generated for the slicer example page
|
||||
app.example.css.name=example.css
|
||||
app.example.css.file=${app.example.dir}/${app.example.css.name}
|
||||
|
||||
# the base path for generating the bootstrap code for the
|
||||
# slicer page
|
||||
bootstrap.base.path=${app.example.dir}
|
||||
|
||||
# the full file name of the slicer page's bootstrap js file
|
||||
bootstrap.example.js=${app.example.dir}/bootstrap.js
|
||||
|
||||
# the full file name of the slicer page's bootstrap js file
|
||||
bootstrap.example.json.name=bootstrap.json
|
||||
bootstrap.example.json=${app.example.dir}/${bootstrap.example.json.name}
|
||||
|
||||
# this is the directory used for intermediate build artifacts used
|
||||
# by the slicer for generating theme images
|
||||
app.example.build.dir=${build.temp.dir}/slicer-temp
|
||||
|
||||
# the name of the intermediate screenshot file used for image slicing
|
||||
build.capture.png=${app.example.build.dir}/theme-capture.png
|
||||
|
||||
# the name of the intermediate widget manifest file used for image slicing
|
||||
build.capture.json=${app.example.build.dir}/theme-capture.json
|
||||
|
||||
# the location of the slicer widget page
|
||||
app.example.theme.html.name=theme.html
|
||||
app.example.fashion.html.name=fashion.html
|
||||
app.example.theme.html=${app.example.dir}/${app.example.theme.html.name}
|
||||
app.example.fashion.html=${app.example.dir}/${app.example.fashion.html.name}
|
||||
|
||||
# a name prefix used for slicer page temporary artifacts
|
||||
app.example.base=${app.name}-example
|
||||
|
||||
# the special slicer page scss file name to generate
|
||||
app.example.scss=${app.example.build.dir}/${app.example.base}.scss
|
||||
|
||||
# the relative path from the slicer css file to the slicer html file
|
||||
app.example.css.rel=${app.example.base}.css
|
||||
|
||||
# the path to the css file that will be built for the slicer page
|
||||
app.example.css=${app.example.build.dir}/${app.example.css.rel}
|
||||
|
||||
# the ruby compass config file to generate for slicer page scss
|
||||
app.example.out.ruby=${app.example.build.dir}/config.rb
|
||||
app.example.compass.config=${app.example.out.ruby}
|
||||
|
||||
# legacy ext 41 theme property indicating the name of the
|
||||
# slicer example page contained in the theme directory
|
||||
theme.page.name=theme.html
|
||||
|
||||
# Options to pass to the "sencha fs slice" command.
|
||||
build.slice.options=
|
||||
|
||||
# *****************************************************************************
|
||||
# Packager
|
||||
# these properties control features of the native packaging phase of the
|
||||
# build process
|
||||
# *****************************************************************************
|
||||
|
||||
# enables packaging the built application with the Sencha Desktop Packager
|
||||
# NOTE: currently unsupported
|
||||
enable.desktop.packager=false
|
||||
|
||||
# skips packaging the built application with cordova/phonegap
|
||||
skip.native-package=false
|
||||
|
||||
# a property that controls whether a standalone manifest.json file will be
|
||||
# generated for the native packaged application
|
||||
enable.standalone.manifest=false
|
||||
|
||||
# *****************************************************************************
|
||||
# Resolve
|
||||
# these properties control aspects of the dynamic dependency resolver, which
|
||||
# uses phantomjs to load the application and extract Ext.Loader class load
|
||||
# history.
|
||||
# *****************************************************************************
|
||||
|
||||
# enables / disables dynamic dependency resolution
|
||||
skip.resolve=true
|
||||
|
||||
# enables the local web server. this may be disabled to load the application's
|
||||
# page from an existing web server.
|
||||
skip.web-start=false
|
||||
|
||||
# the port number to start the local web server on
|
||||
build.web.port=1841
|
||||
|
||||
# the directory representing the root web folder
|
||||
build.web.root=${workspace.dir}
|
||||
|
||||
# the base url to access the local web server
|
||||
build.resolve.url=http://localhost:${build.web.port}
|
||||
|
||||
# a template string used to format the detected dynamic dependencies
|
||||
build.resolve.tpl={0}
|
||||
|
||||
# the mode to use when formatting the detected dynamic dependencies
|
||||
build.resolve.mode=references
|
||||
|
||||
# the output file for the detected dynamic dependencies
|
||||
build.resolve.file=${build.temp.dir}/resolve.json
|
||||
|
||||
# controls whether unmatched external references in the specified file will
|
||||
# generate build warnings or build failures
|
||||
build.resolve.allow.unmatched=true
|
||||
|
||||
# *****************************************************************************
|
||||
# Watch
|
||||
# these properties adjust the behavior of the app watch process.
|
||||
# *****************************************************************************
|
||||
|
||||
# the default set of actions to run when triggering a rebuild
|
||||
build.trigger.targets=refresh,resources,sass
|
||||
|
||||
# the watcher targets to run that monitor for code changes
|
||||
build.watcher.targets=-watch-compiler
|
@ -1,30 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file defines default property values that apply to the "development" build
|
||||
# environment.
|
||||
#
|
||||
# Please use testing.properties to customize these properties unless you want
|
||||
# your customizations to be for all environments. In that case, you can instead
|
||||
# override these properties in build.properties.
|
||||
#
|
||||
# The properties defined in this file take priority over defaults.properties
|
||||
# but are lower priority than build.properties which in turn is lower priority
|
||||
# than development.properties.
|
||||
#
|
||||
# IMPORTANT - This file should not be modified by an app as it is overwritten
|
||||
# during each app upgrade.
|
||||
# =============================================================================
|
||||
|
||||
build.options.logger=yes
|
||||
|
||||
build.options.debug=true
|
||||
|
||||
build.css.compress=false
|
||||
|
||||
build.include.all.scss=true
|
||||
|
||||
# By default we don't need to build an "all.js" file, or a new markup page or
|
||||
# slice images for IE8/9. These can be added to "development.properties" and
|
||||
# set to 0 to enable them if needed.
|
||||
skip.page=1
|
||||
skip.js=1
|
||||
skip.slice=1
|
@ -1,8 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# testing.defaults.properties. These properties are only imported when building
|
||||
# for the "development" environment.
|
||||
#
|
||||
# Properties defined in this file take priority over build.properties but are
|
||||
# only loaded for "development" builds.
|
||||
# =============================================================================
|
@ -1,45 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file defines default property values that apply to all builds based on
|
||||
# Ext JS 5.x framework.
|
||||
#
|
||||
# Please use build.properties to customize these properties.
|
||||
#
|
||||
# To override a property based on build.environment instead add properties to
|
||||
# one of these higher priority files:
|
||||
#
|
||||
# - production.properties
|
||||
# - testing.properties
|
||||
# - native.properties
|
||||
# - package.properties
|
||||
#
|
||||
# The properties defined in this file take priority over defaults.properties
|
||||
# and *.defaults.properties.
|
||||
#
|
||||
# IMPORTANT - This file should not be modified by an app as it is overwritten
|
||||
# during each app upgrade.
|
||||
# =============================================================================
|
||||
|
||||
enable.ext42.themes=true
|
||||
|
||||
enable.sencha-core.filter=true
|
||||
|
||||
build.options.product=ext
|
||||
|
||||
build.options.minVersion=5
|
||||
|
||||
bootstrap.include.boot=true
|
||||
bootstrap.override.tpl=Ext.Loader.loadScriptsSync
|
||||
bootstrap.override.tpltype=jsonp
|
||||
|
||||
app.microloader.name=Microloader.js
|
||||
app.microloader.dir=${app.config.dir}
|
||||
app.microloader.bootstrap=${app.microloader.dir}/${app.microloader.name}
|
||||
app.microloader.path=${app.microloader.dir}/${app.microloader.name}
|
||||
|
||||
build.microloader.json.tpl.embedded=var Ext = Ext || '{' '}'; Ext.manifest = Ext.manifest || {0};
|
||||
build.microloader.manifest.name=${app.manifest.name}
|
||||
build.microloader.json.tpl.external=var Ext = Ext || '{' '}'; Ext.manifest = Ext.manifest || "${build.microloader.manifest.name}";
|
||||
|
||||
build.skip.versions.file=true
|
||||
build.enable.appmanifest=true
|
||||
compass.compile.force=false
|
@ -1,58 +0,0 @@
|
||||
<project name="find-cmd-impl">
|
||||
<!--
|
||||
Run "sencha which" to find the Sencha Cmd basedir and get "cmd.dir" setup. We
|
||||
need to execute the command with curdir set properly for Cmd to pick up that we
|
||||
are running for an application.
|
||||
-->
|
||||
<target name="find-cmd-in-path" unless="cmd.dir">
|
||||
<exec executable="sencha"
|
||||
dir="${basedir}"
|
||||
failifexecutionfails="false"
|
||||
outputproperty="exec.error">
|
||||
<arg value="which"/>
|
||||
<arg value="-p=cmd.dir"/>
|
||||
<arg value="-o=$cmddir$"/>
|
||||
</exec>
|
||||
|
||||
<!-- Now read the generated properties file and delete it -->
|
||||
<property file="$cmddir$"/>
|
||||
<delete file="$cmddir$"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Run "sencha which" again, similar to the above target, but explicitly check
|
||||
for the 'SENCHA_CMD' environment variable to have been set, in case sencha
|
||||
cmd isn't on the current path settings for the user
|
||||
-->
|
||||
<target name="find-cmd-in-environment" unless="cmd.dir">
|
||||
<exec executable="${env.SENCHA_CMD}/sencha"
|
||||
dir="${basedir}"
|
||||
failifexecutionfails="false">
|
||||
<arg value="which"/>
|
||||
<arg value="-p=cmd.dir"/>
|
||||
<arg value="-o=$cmddir$"/>
|
||||
</exec>
|
||||
|
||||
<property file="$cmddir$"/>
|
||||
<delete file="$cmddir$"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
== Mac OSX launchd fix ==
|
||||
create a child shell process that will source in ~/.bash_profile
|
||||
and then attempt to call 'sencha which' with the current user's
|
||||
shell profile settings. sencha which will create a properties file
|
||||
that can then be loaded into this (the parent) process.
|
||||
|
||||
This allows ant integrations in IDE's like netbeans or eclipse to properly
|
||||
locate Sencha Cmd, even if the IDE was launched via launchd (Finder)
|
||||
-->
|
||||
<target name="find-cmd-in-shell" unless="cmd.dir">
|
||||
<delete quiet="true" file="$cmddir$"/>
|
||||
<echo file="tmp.sh"> source ~/.bash_profile; sencha which -p cmd.dir -o '$cmddir$'</echo>
|
||||
<exec executable="/bin/sh"><arg value="tmp.sh"/></exec>
|
||||
<property file="$cmddir$"/>
|
||||
<delete file="tmp.sh"/>
|
||||
<delete file="$cmddir$"/>
|
||||
</target>
|
||||
</project>
|
@ -1,418 +0,0 @@
|
||||
<project name="init-impl">
|
||||
<!--
|
||||
Init-Local
|
||||
-->
|
||||
<target name="-before-init-local"/>
|
||||
<target name="-init-local">
|
||||
<!--
|
||||
${basedir} is actually the basedir of build.xml, in the app root
|
||||
so this imports ${app.dir}/local.properties, if present
|
||||
-->
|
||||
<property file="${basedir}/local.properties"/>
|
||||
|
||||
<!--
|
||||
This will traverse upwards in the file system, starting at the
|
||||
app root directory, looking for the workspace. Once found,
|
||||
${workspace.dir}/local.properties will be imported into this
|
||||
project
|
||||
-->
|
||||
<script language="javascript">
|
||||
<![CDATA[
|
||||
var f = new java.io.File(project.getProperty("basedir"));
|
||||
var sub = ".sencha/workspace/sencha.cfg";
|
||||
|
||||
for (var p = f; p; p = p.getParentFile()) {
|
||||
var t = new java.io.File(p, sub);
|
||||
if (t.exists()) {
|
||||
// we found the workspace folder!
|
||||
|
||||
t = new java.io.File(p, "local.properties");
|
||||
if (t.exists()) {
|
||||
var loader = project.createTask("property");
|
||||
loader.setFile(new java.io.File(t.getCanonicalPath()));
|
||||
loader.execute();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
|
||||
</target>
|
||||
<target name="-after-init-local"/>
|
||||
<target name="init-local"
|
||||
depends="-before-init-local,-init-local,-after-init-local"/>
|
||||
|
||||
<target name="-before-init"/>
|
||||
<target name="-init" unless="internal.x-sencha-initialized">
|
||||
<!--
|
||||
Now, apply various project updates, such as ant class loader path
|
||||
updates, as well as loading Sencha Cmd config system properties
|
||||
into ant property space
|
||||
-->
|
||||
<x-sencha-init prefix=""/>
|
||||
|
||||
<!--
|
||||
default the build environment to production if it is unset by this point
|
||||
-->
|
||||
<property name="build.environment" value="production"/>
|
||||
<property name="CR" value=" "/>
|
||||
|
||||
<tstamp>
|
||||
<!-- sets DSTAMP=yyyyMMdd, TSTAMP=hhmm -->
|
||||
<format property="build.year" pattern="yyyy"/>
|
||||
<format property="build.datetime" pattern="yyyy-MM-dd HH:mm:ss"/>
|
||||
<format property="build.date" pattern="MMMM d, yyyy"/>
|
||||
<format property="build.timestamp" pattern="yyyyMMddHHmmss"/>
|
||||
</tstamp>
|
||||
|
||||
<x-load-properties>
|
||||
<!-- If available, load user-defined properties for this build identifier -->
|
||||
<file path="${app.config.dir}/${build.id}.properties" required="false"/>
|
||||
<file path="${app.config.dir}/${app.locale}.properties" required="false"/>
|
||||
<file path="${app.config.dir}/${app.theme}.properties" required="false"/>
|
||||
<file path="${app.config.dir}/${build.name}.properties" required="false"/>
|
||||
<file path="${app.config.dir}/multi-build.properties" required="false"/>
|
||||
<!-- Load user-defined properties for environment then general: -->
|
||||
<file path="${app.config.dir}/${build.environment}.properties" required="false"/>
|
||||
<file path="${app.config.dir}/build.properties" required="false"/>
|
||||
<!-- Pick up the defaults by framework/environment followed by general: -->
|
||||
<file path="${app.config.dir}/${framework.name}.properties" required="true"/>
|
||||
<file path="${app.config.dir}/${app.packager}.defaults.properties" required="false"/>
|
||||
<file path="${app.config.dir}/${build.environment}.defaults.properties" required="true"/>
|
||||
<file path="${app.config.dir}/defaults.properties" required="true"/>
|
||||
</x-load-properties>
|
||||
|
||||
<!--
|
||||
calculate the appropriate build.compression value
|
||||
-->
|
||||
<condition property="build.compression" value="-yui">
|
||||
<or>
|
||||
<x-is-true value="${build.compression.yui}"/>
|
||||
<equals arg1="yui" arg2="${app.compressor.type}"/>
|
||||
</or>
|
||||
</condition>
|
||||
|
||||
<condition property="build.compression" value="-closure">
|
||||
<or>
|
||||
<x-is-true value="${build.compression.closure}"/>
|
||||
<equals arg1="closure" arg2="${app.compressor.type}"/>
|
||||
</or>
|
||||
</condition>
|
||||
|
||||
<condition property="build.compression" value="-uglify">
|
||||
<or>
|
||||
<x-is-true value="${build.compression.uglify}"/>
|
||||
<equals arg1="uglify" arg2="${app.compressor.type}"/>
|
||||
</or>
|
||||
</condition>
|
||||
|
||||
<property name="build.compression" value=""/>
|
||||
|
||||
<!--
|
||||
this id string is used to share a common compiler instance
|
||||
for all x-compile calls in this project
|
||||
-->
|
||||
<property name="compiler.ref.id" value="app-compiler"/>
|
||||
|
||||
<!--
|
||||
this property is set indicating we've reached the end of the
|
||||
core init phase. it's presence will indicate that we've already
|
||||
executed this target, and will bypass firing the init code
|
||||
repeatedly in sub projects (antcall, x-ant-call)
|
||||
See the above 'unless' attribute on the -init target
|
||||
-->
|
||||
<property name="internal.x-sencha-initialized" value="true"/>
|
||||
|
||||
<!--
|
||||
this is a helper property that is the relative path prefix from the
|
||||
application's root directory to the root of the build directory
|
||||
-->
|
||||
<x-get-relative-path from="${app.dir}"
|
||||
to="${build.out.base.path}"
|
||||
property="build.dir.relative"/>
|
||||
|
||||
|
||||
<if>
|
||||
<isset property="app.toolkit"/>
|
||||
<then>
|
||||
<property name="app.sass.fashion" value="true"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<property name="app.sass.fashion" value="false"/>
|
||||
<property name="app.sass.rhino" value="false"/>
|
||||
<property name="app.sass.dynamic" value="false"/>
|
||||
<property name="app.sass.generated.var" value="${app.sass.save}"/>
|
||||
|
||||
</target>
|
||||
<target name="-after-init"/>
|
||||
|
||||
<target name="-before-init-defaults"/>
|
||||
<target name="-init-defaults">
|
||||
<!--
|
||||
This property can be modified to change general build options
|
||||
such as excluding files from the set. The format expects newlines
|
||||
for each argument, for example:
|
||||
|
||||
<property name="build.operations"/>
|
||||
exclude
|
||||
-namespace=Ext
|
||||
</property>
|
||||
-->
|
||||
<property name="build.operations" value=""/>
|
||||
|
||||
<!--
|
||||
This property can be modified to change concatenation
|
||||
specific options
|
||||
|
||||
-strip-comments: comment suppression
|
||||
-remove-text-references: transform string literal class references to objects
|
||||
-beautify: unpack the source
|
||||
|
||||
<property name="build.concat.options"/>
|
||||
-strip-comments
|
||||
-remove-text-references
|
||||
-beautify
|
||||
</property>
|
||||
-->
|
||||
<property name="build.concat.options" value=""/>
|
||||
|
||||
<!--
|
||||
This property can be modified to change page compilation options
|
||||
|
||||
-scripts: inject the given script path into the generated markup ahead of the all classes file
|
||||
|
||||
<property name="build.page.options"/>
|
||||
-scripts=framework.js
|
||||
</property>
|
||||
-->
|
||||
<property name="build.page.options" value=""/>
|
||||
|
||||
|
||||
<dirname property="build.out.page.dir" file="${build.out.page.path}"/>
|
||||
<dirname property="build.out.js.dir" file="${build.out.js.path}"/>
|
||||
<dirname property="build.out.framework.dir" file="${build.out.framework.path}"/>
|
||||
<dirname property="build.out.css.dir" file="${build.out.css.path}"/>
|
||||
<dirname property="build.out.microloader.dir" file="${build.out.microloader.path}"/>
|
||||
<dirname property="build.out.manifest.dir" file="${build.out.manifest.path}"/>
|
||||
<dirname property="build.out.metadata.dir" file="${build.out.metadata.path}"/>
|
||||
|
||||
<dirname property="build.bootstrap.page.dir" file="${build.bootstrap.page.path}"/>
|
||||
<dirname property="build.bootstrap.css.dir" file="${build.bootstrap.css.path}"/>
|
||||
<dirname property="build.bootstrap.microloader.dir" file="${build.bootstrap.microloader.path}"/>
|
||||
<dirname property="build.bootstrap.manifest.dir" file="${build.bootstrap.manifest.path}"/>
|
||||
<dirname property="build.bootstrap.metadata.dir" file="${build.bootstrap.metadata.path}"/>
|
||||
|
||||
<x-get-relative-path from="${build.out.base.path}" to="${build.out.js.path}" property="build.classes.name"/>
|
||||
<x-get-relative-path from="${build.out.base.path}" to="${build.out.framework.path}" property="build.framework.name"/>
|
||||
<x-get-relative-path from="${build.out.page.dir}" to="${build.out.microloader.path}" property="build.microloader.name"/>
|
||||
<x-get-relative-path from="${build.out.page.dir}" to="${build.out.manifest.path}" property="app.manifest.name"/>
|
||||
<x-get-relative-path from="${build.out.page.dir}" to="${build.out.appCache.path}" property="build.out.appCache.name"/>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${app.output.microloader.enable}"/>
|
||||
<then>
|
||||
<property name="build.output.markuponly" value="false"/>
|
||||
</then>
|
||||
<else>
|
||||
<property name="build.output.markuponly" value="true"/>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<if>
|
||||
<equals arg1="${app.toolkit}" arg2="modern"/>
|
||||
<then>
|
||||
<property name="skip.slice" value="1"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<if>
|
||||
<!--If AppCache is FALSE or non-existent skip it-->
|
||||
<or>
|
||||
<x-is-false value="${app.output.appCache.enable}"/>
|
||||
<not>
|
||||
<isset property="app.output.appCache.enable"/>
|
||||
</not>
|
||||
</or>
|
||||
<then>
|
||||
<property name="skip.appCache" value="1"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<if>
|
||||
<!--If Deltas are FALSE, deltas do not exist, or caching is disabled then skip delta patching-->
|
||||
<or>
|
||||
<x-is-false value="${app.cache.enable}"/>
|
||||
<!-- This was done because deltas is possibly a boolean OR a string. x-is-false on any normal string appears a falsey value-->
|
||||
<equals arg1="${app.cache.deltas}" arg2="false"/>
|
||||
<not>
|
||||
<isset property="app.cache.deltas"/>
|
||||
</not>
|
||||
</or>
|
||||
<then>
|
||||
<property name="skip.deltas" value="1"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<!-- If Deltas are True, 'yes' or 'on' default to 'deltas' otherwise set the appropriate delta path -->
|
||||
<if>
|
||||
<x-is-true value="${app.cache.deltas}"/>
|
||||
<then>
|
||||
<property name="build.out.deltas.path" location="${build.out.base.path}/deltas"/>
|
||||
</then>
|
||||
<else>
|
||||
<property name="build.out.deltas.path" location="${build.out.base.path}/${app.cache.deltas}"/>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<!--<if>-->
|
||||
<!--<not>-->
|
||||
<!--<equals arg1="${build.environment}" arg2="development"/>-->
|
||||
<!--</not>-->
|
||||
<!--<then>-->
|
||||
<!--<property name="skip.refresh" value="true"/>-->
|
||||
<!--</then>-->
|
||||
<!--</if>-->
|
||||
|
||||
</target>
|
||||
<target name="-after-init-defaults"/>
|
||||
|
||||
<!--
|
||||
Initializes the compiler instances, reading in the app.json and package.json
|
||||
definitions, as well as scanning and parsing all js files found on the
|
||||
various classpath entries for the framework, workspace, packages, and app
|
||||
-->
|
||||
<target name="-init-compiler" depends="-init">
|
||||
<local name="include.versions.file"/>
|
||||
<local name="include.versions.file.command"/>
|
||||
|
||||
<condition property="internal.app.css.rel" value="${app.out.css.rel}">
|
||||
<x-is-true value="${enable.ext42.themes}"/>
|
||||
</condition>
|
||||
<property name="internal.app.css.rel" value=""/>
|
||||
|
||||
<property name="include.versions.file.command">
|
||||
<![CDATA[
|
||||
meta
|
||||
+packages
|
||||
-out=${build.out.package.versions}
|
||||
and
|
||||
classpath
|
||||
-path=${build.out.package.versions}
|
||||
-name=framework
|
||||
and
|
||||
require
|
||||
-scopeName=framework
|
||||
-source=Ext.Base
|
||||
-requires=${build.out.package.versions}
|
||||
-allow-unmet=false
|
||||
and
|
||||
]]>
|
||||
</property>
|
||||
|
||||
<property name="exclude.boot.command">
|
||||
<![CDATA[
|
||||
exclude
|
||||
-class=Ext.Boot
|
||||
and
|
||||
]]>
|
||||
</property>
|
||||
|
||||
<condition property="include.versions.file" value="${include.versions.file.command}">
|
||||
<x-is-false value="${build.skip.versions.file}"/>
|
||||
</condition>
|
||||
|
||||
<property name="include.versions.file" value="#skip"/>
|
||||
|
||||
<condition property="exclude.boot" value="${exclude.boot.command}">
|
||||
<not>
|
||||
<x-is-true value="${build.output.markuponly}"/>
|
||||
</not>
|
||||
</condition>
|
||||
|
||||
<property name="exclude.boot" value="#skip"/>
|
||||
|
||||
<condition property="enable.split.framework" value="true">
|
||||
<x-is-true value="${enable.split.mode}"/>
|
||||
</condition>
|
||||
<condition property="enable.split.framework" value="true">
|
||||
<x-is-true value="${app.output.framework.enable}"/>
|
||||
</condition>
|
||||
<property name="enable.split.framework" value="false"/>
|
||||
|
||||
|
||||
<x-compile refid="${compiler.ref.id}"
|
||||
dir="${app.dir}"
|
||||
initOnly="true"
|
||||
inheritAll="true">
|
||||
<![CDATA[
|
||||
# base build command
|
||||
-tempDir=${build.compile.temp.dir}
|
||||
-keepTempDir=${build.compile.temp.dir.keep}
|
||||
-options=${build.options}
|
||||
load-app
|
||||
-splitFramework=${enable.split.framework}
|
||||
-frameworkFile=${build.framework.name}
|
||||
-jsBundleFile=${build.classes.name}
|
||||
-cssBundleFile=${internal.app.css.rel}
|
||||
-tempDir=${build.app.temp.dir}
|
||||
-tag=${build.tag.name}
|
||||
and
|
||||
restore
|
||||
${build.tag.name}
|
||||
and
|
||||
${include.versions.file}
|
||||
union
|
||||
-recursive
|
||||
-tag=${build.tag.name}
|
||||
and
|
||||
save
|
||||
${build.tag.name}-overrides
|
||||
and
|
||||
${build.operations}
|
||||
and
|
||||
${exclude.boot}
|
||||
save
|
||||
page
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-init-app-js-files" depends="-init-compiler">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
union
|
||||
-recursive
|
||||
-tag=${build.tag.name}
|
||||
and
|
||||
save
|
||||
${build.tag.name}-overrides
|
||||
and
|
||||
${build.operations}
|
||||
and
|
||||
${exclude.boot}
|
||||
save
|
||||
page
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-init-web-server" unless="skip.web.start">
|
||||
<x-server port="${build.web.port}"
|
||||
portPropertyName="build.web.port"
|
||||
defaultSassFile="${app.out.scss}"
|
||||
defaultCssFile="${app.out.css}"
|
||||
refid="app.web.server"
|
||||
saveVariablesProp="app.sass.generated.var"
|
||||
uiDirProp="app.sass.generated.src"
|
||||
sassNamespaceProp="app.sass.namespace"
|
||||
j2eeMode="${use.webxml}">
|
||||
<mapping name="~cmd" path="${cmd.dir}"/>
|
||||
<mapping name="" path="${build.web.root}"/>
|
||||
</x-server>
|
||||
<x-echo>Application available at http://localhost:${build.web.port}</x-echo>
|
||||
</target>
|
||||
|
||||
</project>
|
@ -1,111 +0,0 @@
|
||||
<project name="x-js-impl">
|
||||
<!--
|
||||
this target extracts split mode information from the compiler's app
|
||||
processor to determine various pieces of information
|
||||
-->
|
||||
<target name="-detect-app-build-properties"
|
||||
depends="-init-app-js-files">
|
||||
<x-load-app-builder-properties
|
||||
refid="${compiler.ref.id}"
|
||||
splitModePropName="enable.split.mode"
|
||||
pageModePropName="app.page.mode"
|
||||
hasJsSdkPropName="app.has.js.sdk"
|
||||
hasCssSdkPropName="app.has.css.sdk"/>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
this is the standard js compile target that builds the output js file(s)
|
||||
-->
|
||||
<target name="-compile-js" depends="-detect-app-build-properties">
|
||||
<if>
|
||||
<x-is-true value="${enable.split.mode}"/>
|
||||
<then>
|
||||
<property name="app.output.framework.include"
|
||||
value="package-sencha-core,framework,toolkit,package-core"/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# build a separate sdk-only js file
|
||||
restore
|
||||
page
|
||||
and
|
||||
${build.optimize}
|
||||
and
|
||||
exclude
|
||||
-all
|
||||
and
|
||||
include
|
||||
-tag=${app.output.framework.include}
|
||||
and
|
||||
save
|
||||
allframework
|
||||
and
|
||||
intersect
|
||||
-set=page,allframework
|
||||
and
|
||||
save
|
||||
frameworkdeps
|
||||
and
|
||||
include
|
||||
-tag=Ext.cmd.derive
|
||||
and
|
||||
concat
|
||||
-remove-text-references=${build.remove.references}
|
||||
-optimize-string-references=${build.optimize.string.references}
|
||||
-remove-requirement-nodes=${build.remove.requirement.nodes}
|
||||
${build.compression}
|
||||
-out=${build.framework.file}
|
||||
${build.concat.options}
|
||||
|
||||
# now build the all-classes file, without
|
||||
# the framework code included
|
||||
and
|
||||
restore
|
||||
page
|
||||
and
|
||||
exclude
|
||||
-set=frameworkdeps
|
||||
and
|
||||
exclude
|
||||
-tag=Ext.cmd.derive,derive
|
||||
and
|
||||
concat
|
||||
-remove-text-references=${build.remove.references}
|
||||
-optimize-string-references=${build.optimize.string.references}
|
||||
-remove-requirement-nodes=${build.remove.requirement.nodes}
|
||||
${build.compression}
|
||||
-out=${build.classes.file}
|
||||
${build.concat.options}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# build an all-classes.js file that contains
|
||||
# all code needed by the app
|
||||
restore
|
||||
page
|
||||
and
|
||||
${build.optimize}
|
||||
and
|
||||
concat
|
||||
-remove-text-references=${build.remove.references}
|
||||
-optimize-string-references=${build.optimize.string.references}
|
||||
-remove-requirement-nodes=${build.remove.requirement.nodes}
|
||||
${build.compression}
|
||||
-out=${build.classes.file}
|
||||
${build.concat.options}
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Build javascript
|
||||
-->
|
||||
<target name="-before-js"/>
|
||||
<target name="-js" depends="-compile-js"/>
|
||||
<target name="-after-js"/>
|
||||
</project>
|
@ -1,28 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file defines default property values that apply to the "native" build
|
||||
# environment.
|
||||
#
|
||||
# Please use native.properties to customize these properties unless you want
|
||||
# your customizations to be for all environments. In that case, you can instead
|
||||
# override these properties in build.properties.
|
||||
#
|
||||
# The properties defined in this file take priority over defaults.properties
|
||||
# but are lower priority than build.properties which in turn is lower priority
|
||||
# than native.properties.
|
||||
#
|
||||
# IMPORTANT - This file should not be modified by an app as it is overwritten
|
||||
# during each app upgrade.
|
||||
# =============================================================================
|
||||
|
||||
build.options.logger=no
|
||||
|
||||
build.options.debug=false
|
||||
|
||||
# enable yui compression
|
||||
build.compression.yui=1
|
||||
|
||||
enable.standalone.manifest=true
|
||||
|
||||
app.microloader.name=testing.js
|
||||
|
||||
skip.native-package=false
|
@ -1,8 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# native.defaults.properties. These properties are only imported when building
|
||||
# for the "native" environment.
|
||||
#
|
||||
# Properties defined in this file take priority over build.properties but are
|
||||
# only loaded for "native" builds.
|
||||
# =============================================================================
|
@ -1,27 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file defines default property values that apply to the "package" build
|
||||
# environment.
|
||||
#
|
||||
# Please use package.properties to customize these properties unless you want
|
||||
# your customizations to be for all environments. In that case, you can instead
|
||||
# override these properties in build.properties.
|
||||
#
|
||||
# The properties defined in this file take priority over defaults.properties
|
||||
# but are lower priority than build.properties which in turn is lower priority
|
||||
# than package.properties.
|
||||
#
|
||||
# IMPORTANT - This file should not be modified by an app as it is overwritten
|
||||
# during each app upgrade.
|
||||
#
|
||||
# NOTE: This use of "package" applies to native packaged application, not a
|
||||
# Package in the general since of code libraries.
|
||||
# =============================================================================
|
||||
|
||||
build.options.logger=no
|
||||
|
||||
build.options.debug=false
|
||||
|
||||
# enable yui compression
|
||||
build.compression.yui=1
|
||||
|
||||
app.microloader.name=testing.js
|
@ -1,11 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# package.defaults.properties. These properties are only imported when building
|
||||
# for the "package" environment.
|
||||
#
|
||||
# Properties defined in this file take priority over build.properties but are
|
||||
# only loaded for "package" builds.
|
||||
#
|
||||
# NOTE: This use of "package" applies to native packaged application, not a
|
||||
# Package in the general since of code libraries.
|
||||
# =============================================================================
|
@ -1,22 +0,0 @@
|
||||
<project name="packager-impl" default="-native-package">
|
||||
<target name="-init-native-package">
|
||||
<if>
|
||||
<isset property="app.packager"/>
|
||||
<then>
|
||||
<x-ant-call target="${app.packager}-init-native-package" inheritall="true" inheritrefs="true"/>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!--Sencha App build will land here after everything is done-->
|
||||
<target name="-before-native-package"/>
|
||||
<target name="-native-package">
|
||||
<if>
|
||||
<isset property="app.packager"/>
|
||||
<then>
|
||||
<x-ant-call target="${app.packager}-native-package" inheritall="true" inheritrefs="true"/>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-native-package"/>
|
||||
</project>
|
@ -1,327 +0,0 @@
|
||||
<project name="x-page-impl.xml">
|
||||
|
||||
<macrodef name="x-build-microload-markup">
|
||||
<sequential>
|
||||
<if>
|
||||
<not>
|
||||
<equals arg1="${build.compression}" arg2=""/>
|
||||
</not>
|
||||
<then>
|
||||
<x-sencha-command dir="${app.dir}" inheritall="true">
|
||||
<![CDATA[
|
||||
fs
|
||||
minify
|
||||
${build.embedded.microloader.compressor}
|
||||
-from=${build.microloader.path}
|
||||
-to=${build.microloader.path}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
</then>
|
||||
</if>
|
||||
<if>
|
||||
<x-is-true value="${build.enable.embedded.microloader}"/>
|
||||
<then>
|
||||
<x-run-if-true value="${app.output.page.enable}">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
markup
|
||||
-contentFile=${build.microloader.path}
|
||||
-tpl=${build.embedded.microloader.tpl}
|
||||
-out=${build.out.page.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
<!--once the generated microloader file is embedded, delete it-->
|
||||
<delete file="${build.microloader.path}"/>
|
||||
</x-run-if-true>
|
||||
</then>
|
||||
<else>
|
||||
<x-run-if-true value="${app.output.page.enable}">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
markup
|
||||
-markup=${build.external.microloader.markup}
|
||||
-out=${build.out.page.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</x-run-if-true>
|
||||
</else>
|
||||
</if>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<target name="-build-output-manifest-page">
|
||||
<local name="metadata.base.path"/>
|
||||
<property name="metadata.base.path" value="${build.out.metadata.dir}"/>
|
||||
<x-run-if-true value="${app.output.manifest.enable}">
|
||||
<if>
|
||||
<x-is-true value="${build.enable.embedded.manifest}"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate microloader file
|
||||
# generate json file
|
||||
microload
|
||||
-operation=manifest
|
||||
-jsonp=Ext.Microloader.setManifest
|
||||
-fashion=${use.fashion}
|
||||
-tpl=${build.microloader.json.tpl.embedded}
|
||||
-out=${build.microloader.path}
|
||||
-resourcePath=${build.out.base.path}
|
||||
-basePath=${metadata.base.path}
|
||||
and
|
||||
microload
|
||||
-append
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.path}
|
||||
-bootPath=${build.boot.file}
|
||||
-tpl=${build.microloader.code.tpl}
|
||||
-out=${build.microloader.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate json file
|
||||
microload
|
||||
-operation=manifest
|
||||
-jsonp=Ext.Microloader.setManifest
|
||||
-fashion=${use.fashion}
|
||||
-tpl=${build.microloader.json.tpl.standalone}
|
||||
-out=${build.out.json.path}
|
||||
-resourcePath=${build.out.base.path}
|
||||
-basePath=${metadata.base.path}
|
||||
and
|
||||
microload
|
||||
-operation=manifest
|
||||
-jsonp=Ext.Microloader.setManifest
|
||||
-fashion=${use.fashion}
|
||||
-tpl=${build.microloader.json.tpl.external}
|
||||
-out=${build.microloader.path}
|
||||
-resourcePath=${build.out.base.path}
|
||||
-basePath=${metadata.base.path}
|
||||
and
|
||||
# generate microloader file
|
||||
microload
|
||||
-append
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.path}
|
||||
-bootPath=${build.boot.file}
|
||||
-tpl=${build.microloader.code.tpl}
|
||||
-out=${build.microloader.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
</x-run-if-true>
|
||||
<x-build-microload-markup/>
|
||||
</target>
|
||||
|
||||
<target name="-build-output-microload-page">
|
||||
<if>
|
||||
<x-is-true value="${build.enable.embedded.manifest}"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate microloader file
|
||||
microload
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.path}
|
||||
-tpl=${build.microloader.code.tpl}
|
||||
-out=${build.microloader.path}
|
||||
and
|
||||
# generate json file
|
||||
microload
|
||||
-operation=json
|
||||
-append
|
||||
-tpl=${build.microloader.json.tpl.embedded}
|
||||
-out=${build.microloader.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate json file
|
||||
microload
|
||||
-operation=json
|
||||
-tpl=${build.microloader.json.tpl.standalone}
|
||||
-out=${build.out.json.path}
|
||||
and
|
||||
# generate microloader file
|
||||
microload
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.path}
|
||||
-tpl=${build.microloader.code.tpl}
|
||||
-out=${build.microloader.path}
|
||||
and
|
||||
microload
|
||||
-operation=json
|
||||
-append
|
||||
-tpl=${build.microloader.json.tpl.external}
|
||||
-out=${build.microloader.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
<x-build-microload-markup/>
|
||||
</target>
|
||||
|
||||
<!-- generates a separate json manifest for use with native packager -->
|
||||
<target name="-build-standalone-json-manifest">
|
||||
<x-run-if-true value="${enable.standalone.manifest}">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
# generate json file
|
||||
microload
|
||||
-operation=json
|
||||
-tpl=${build.microloader.json.tpl.standalone}
|
||||
-out=${build.out.json.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<target name="-build-output-markup-page">
|
||||
<condition property="internal.app.css.rel" value="${app.out.css.rel}">
|
||||
<x-is-true value="${enable.ext42.themes}"/>
|
||||
</condition>
|
||||
<property name="internal.app.css.rel" value=""/>
|
||||
|
||||
<if>
|
||||
<isset property="framework.isV5"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
markup
|
||||
-out=${build.out.page.path}
|
||||
-basePath=${build.out.metadata.dir}
|
||||
-resourcePath=${build.out.base.path}
|
||||
and
|
||||
# generate microloader file
|
||||
# generate json file
|
||||
microload
|
||||
-operation=manifest
|
||||
-fashion=${use.fashion}
|
||||
-tpl=${build.microloader.json.tpl.embedded}
|
||||
-out=${build.microloader.path}
|
||||
-resourcePath=${build.out.base.path}
|
||||
-basePath=${build.out.metadata.dir}
|
||||
]]>
|
||||
</x-compile>
|
||||
<x-compress-js srcFile="${build.microloader.path}" outFile="${build.microloader.path}"/>
|
||||
<concat destfile="${build.out.js.path}.tmp">
|
||||
<fileset file="${build.microloader.path}"/>
|
||||
<fileset file="${build.out.js.path}"/>
|
||||
</concat>
|
||||
<delete file="${build.microloader.path}"/>
|
||||
<delete file="${build.out.js.path}"/>
|
||||
<move file="${build.out.js.path}.tmp" tofile="${build.out.js.path}"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
markup
|
||||
-out=${build.out.page.path}
|
||||
-resourcePath=${build.out.base.path}
|
||||
-basePath=${build.out.metadata.dir}
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!-- '-detect-app-build-properties' is defined in js-impl.xml -->
|
||||
<target name="-build-output-page"
|
||||
depends="-detect-app-build-properties,-build-standalone-json-manifest">
|
||||
<if>
|
||||
<x-is-true value="${build.output.markuponly}"/>
|
||||
<then>
|
||||
<x-ant-call target="-build-output-markup-page"/>
|
||||
</then>
|
||||
<else>
|
||||
<if>
|
||||
<x-is-true value="${build.enable.appmanifest}"/>
|
||||
<then>
|
||||
<x-ant-call target="-build-output-manifest-page"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-ant-call target="-build-output-microload-page"/>
|
||||
</else>
|
||||
</if>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-copy-app-resources" depends="-init-compiler">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
app-resources
|
||||
-compress=${enable.resource.compression}
|
||||
-out=${build.out.base.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-apply-version-stamps" depends="-init-compiler">
|
||||
<x-run-if-true value="${app.cache.enable}">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
versions
|
||||
-resourcePath=${build.out.base.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<target name="-generate-deltas" depends="-apply-version-stamps">
|
||||
<if>
|
||||
<and>
|
||||
<x-is-false value="${skip.deltas}"/>
|
||||
<x-is-false value="${build.output.markuponly}"/>
|
||||
</and>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
deltas
|
||||
-archivePath=${build.out.archive.path}
|
||||
-deltaPath=${build.out.deltas.path}
|
||||
-resourcePath=${build.out.base.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-generate-cache-manifest" depends="-init-compiler">
|
||||
<if>
|
||||
<and>
|
||||
<x-is-false value="${skip.appCache}"/>
|
||||
<x-is-false value="${build.output.markuponly}"/>
|
||||
</and>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
cache-manifest
|
||||
-cacheManifestPath=${build.manifest.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
<replace file="${build.out.page.path}"
|
||||
token="<html manifest="""
|
||||
value="<html manifest="${build.out.appCache.name}""/>
|
||||
</then>
|
||||
</if>
|
||||
<!--remove manifest placeholder if present-->
|
||||
<replace file="${build.out.page.path}"
|
||||
token="<html manifest="""
|
||||
value="<html"/>
|
||||
</target>
|
||||
|
||||
<target name="-before-page"/>
|
||||
<target name="-page"
|
||||
depends="-copy-app-resources,
|
||||
-generate-deltas,
|
||||
-build-output-page,
|
||||
-generate-cache-manifest"/>
|
||||
<target name="-after-page"/>
|
||||
</project>
|
@ -1,231 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="PhoneGap" default="phonegap-help">
|
||||
<!--Legacy properties file support-->
|
||||
<property file="${app.dir}/phonegap.local.properties"/>
|
||||
|
||||
<!--Init for All PhoneGap Tasks-->
|
||||
<target name="-before-phonegap-init"/>
|
||||
<target name="-phonegap-init">
|
||||
<if>
|
||||
<or>
|
||||
<x-is-true value="${args.emulate}"/>
|
||||
<x-is-true value="${args.autorun}"/>
|
||||
</or>
|
||||
<then>
|
||||
<property name="phonegap.skip.build" value="true"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<!--Check for verbose output config from the user-->
|
||||
<if>
|
||||
<x-is-true value="app.phonegap.config.verbose"/>
|
||||
<then>
|
||||
<property name="phonegap.cli.options" value="-d"/>
|
||||
</then>
|
||||
<else>
|
||||
<property name="phonegap.cli.options" value=""/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-phonegap-init"/>
|
||||
<target name="phonegap-init"
|
||||
depends="-init, -before-phonegap-init, -phonegap-init, -after-phonegap-init"/>
|
||||
|
||||
<!--Default target outputs help information-->
|
||||
<target name="phonegap-help"/>
|
||||
|
||||
<!-- Create Phonegap Application-->
|
||||
<target name="phonegap-create" depends="phonegap-init">
|
||||
<if>
|
||||
<not>
|
||||
<available file="${app.phonegap.config.path}" type="dir"/>
|
||||
</not>
|
||||
<then>
|
||||
<phonegap-echo message="Creating Phonegap Application with ID "${app.phonegap.config.id}" and Name "${app.phonegap.config.name}""/>
|
||||
<x-shell reloadprofile="true" dir="${app.dir}">
|
||||
phonegap ${phonegap.cli.options} create "${app.phonegap.config.path}" ${app.phonegap.config.id} ${app.phonegap.config.name}
|
||||
</x-shell>
|
||||
<!--
|
||||
Phonegap puts config.xml in the www root folder, this is dangerous due to how we clean this folder out
|
||||
we will move it up to the phonegap root in order to keep parity with cordova.
|
||||
Later we will copy this file back into www during remote builds
|
||||
-->
|
||||
<move file="${build.out.base.path}/config.xml" todir="${app.phonegap.config.path}" failonerror="false" overwrite="false" />
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!-- Prepares application for specified platform -->
|
||||
<target name="-before-phonegap-prepare"/>
|
||||
<target name="-phonegap-prepare" if="args.prepare">
|
||||
<fail status="0" message="Phonegap does not currently support prepare command, if this is required for your workflow please try Apache Cordova "/>
|
||||
</target>
|
||||
<target name="-after-phonegap-prepare"/>
|
||||
<target name="phonegap-prepare" depends="phonegap-init, -before-phonegap-prepare, -phonegap-prepare, -after-phonegap-prepare"/>
|
||||
|
||||
<!-- Emulates application for the specified platform -->
|
||||
<target name="-before-phonegap-emulate"/>
|
||||
<target name="-phonegap-emulate" depends="-phonegap-check-platform, -phonegap-check-config-xml" if="args.emulate">
|
||||
<if>
|
||||
<x-is-true value="${phonegap.build.remote}"/>
|
||||
<then>
|
||||
<x-ant-call target="-phonegap-remote-emulate"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-ant-call target="-phonegap-local-emulate"/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-phonegap-emulate"/>
|
||||
<target name="phonegap-emulate" depends="phonegap-init, -before-phonegap-emulate, -phonegap-emulate, -after-phonegap-emulate"/>
|
||||
|
||||
|
||||
<!-- Runs application on a device for the specified platform -->
|
||||
<target name="-before-phonegap-run"/>
|
||||
<target name="-phonegap-run" depends="-phonegap-check-platform, -phonegap-check-config-xml" if="args.autorun">
|
||||
<if>
|
||||
<x-is-true value="${phonegap.build.remote}"/>
|
||||
<then>
|
||||
<x-ant-call target="-phonegap-remote-run"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-ant-call target="-phonegap-local-run"/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-phonegap-run"/>
|
||||
<target name="phonegap-run" depends="phonegap-init, -before-phonegap-run, -phonegap-run, -after-phonegap-run"/>
|
||||
|
||||
|
||||
<!-- Overall Phonegap Build Target. Determines type of build to use -->
|
||||
<target name="-before-phonegap-build"/>
|
||||
<target name="-phonegap-build" depends="-phonegap-check-platform, -phonegap-check-config-xml" unless="phonegap.skip.build">
|
||||
<if>
|
||||
<x-is-true value="${phonegap.build.remote}"/>
|
||||
<then>
|
||||
<x-ant-call target="-phonegap-remote-build"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-ant-call target="-phonegap-local-build"/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-phonegap-build"/>
|
||||
<target name="phonegap-build" depends="phonegap-init, -before-phonegap-build, -phonegap-build, -after-phonegap-build" />
|
||||
|
||||
<!-- Private Utility Target to make sure users have declared a platform to take action on -->
|
||||
<target name="-phonegap-check-platform">
|
||||
<fail status="0" message="No platforms were specified, add a platform to ${build.name}'s -> phonegap -> config -> platform property in app.json">
|
||||
<condition>
|
||||
<or>
|
||||
<not>
|
||||
<isset property="phonegap.platform"/>
|
||||
</not>
|
||||
<contains string="${phonegap.platform}" substring="$"/>
|
||||
</or>
|
||||
</condition>
|
||||
</fail>
|
||||
|
||||
|
||||
|
||||
</target>
|
||||
|
||||
<!-- Private Utility target to copy the config.xml file back into the WWW folder -->
|
||||
<target name="-phonegap-check-config-xml">
|
||||
<copy todir="${build.out.base.path}" file="${app.phonegap.config.path}/config.xml" failonerror="false" overwrite="true" quiet="true"/>
|
||||
</target>
|
||||
|
||||
<!-- Private Remote Build Targets-->
|
||||
<target name="-phonegap-remote-login">
|
||||
<phonegap-echo message="Attempting login to PhoneGap Build"/>
|
||||
<if>
|
||||
<not>
|
||||
<and>
|
||||
<isset property="phonegap.build.remote.username"/>
|
||||
<isset property="phonegap.build.remote.password"/>
|
||||
</and>
|
||||
</not>
|
||||
<then>
|
||||
<phonegap-echo level="warning">
|
||||
Phonegap Build login credentials were was not found. If you have not logged in prior to running this command.
|
||||
Please either login via "phonegap remote login" or edit your [APP_ROOT]/local.properties and set "phonegap.username" and "phonegap.password" appropriately
|
||||
</phonegap-echo>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.config.path}">
|
||||
phonegap ${phonegap.cli.options} remote login --username="${phonegap.build.remote.username}" --password="${phonegap.build.remote.password}"
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-remote-build" depends="-phonegap-remote-login">
|
||||
<phonegap-echo message="Attempting PhoneGap remote build for ${phonegap.platform}"/>
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.config.path}">
|
||||
phonegap ${phonegap.cli.options} remote build ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-remote-run" depends="-phonegap-remote-login">
|
||||
<phonegap-echo message="Attempting PhoneGap remote run for ${phonegap.platform}"/>
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.config.path}">
|
||||
phonegap ${phonegap.cli.options} remote run ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-remote-emulate" depends="-phonegap-remote-login">
|
||||
<phonegap-echo message="Attempting PhoneGap remote emulate for ${phonegap.platform}"/>
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.config.path}">
|
||||
phonegap ${phonegap.cli.options} remote run ${phonegap.platform} --emulator
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<!-- Private Local Build Targets-->
|
||||
<target name="-phonegap-local-build">
|
||||
<phonegap-echo message="Attempting PhoneGap local build for ${phonegap.platform}"/>
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.config.path}">
|
||||
phonegap ${phonegap.cli.options} local build ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-local-run">
|
||||
<phonegap-echo message="Attempting PhoneGap local run for ${phonegap.platform}"/>
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.config.path}">
|
||||
phonegap ${phonegap.cli.options} local run ${phonegap.platform}
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<target name="-phonegap-local-emulate">
|
||||
<phonegap-echo message="Attempting PhoneGap local emulate for ${phonegap.platform}"/>
|
||||
<x-shell reloadprofile="true" dir="${app.phonegap.config.path}">
|
||||
phonegap ${phonegap.cli.options} local run ${phonegap.platform} --emulator
|
||||
</x-shell>
|
||||
</target>
|
||||
|
||||
<!-- Internal Packager Hooks -->
|
||||
<target name="-before-phonegap-init-native-package"/>
|
||||
<target name="-phonegap-init-native-package" depends="phonegap-init, phonegap-create"/>
|
||||
<target name="-after-phonegap-init-native-package"/>
|
||||
<target name="phonegap-init-native-package" depends="-before-phonegap-init-native-package, -phonegap-init-native-package, -after-phonegap-init-native-package"/>
|
||||
|
||||
<target name="-before-phonegap-native-package"/>
|
||||
<target name="-phonegap-native-package" depends="phonegap-build, phonegap-emulate, phonegap-run"/>
|
||||
<target name="-after-phonegap-native-package"/>
|
||||
<target name="phonegap-native-package" depends="phonegap-init, -before-phonegap-native-package, -phonegap-native-package, -after-phonegap-native-package"/>
|
||||
|
||||
<macrodef name="phonegap-echo">
|
||||
<text name="text" optional="true"/>
|
||||
<attribute name="message" default=""/>
|
||||
<attribute name="level" default="info"/>
|
||||
<sequential>
|
||||
<if>
|
||||
<equals arg1="@{message}" arg2=""/>
|
||||
<then>
|
||||
<x-echo message="[Phonegap] @{text}" level="@{level}"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-echo message="[Phonegap] @{message}" level="@{level}"/>
|
||||
</else>
|
||||
</if>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
</project>
|
@ -1,15 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2012-2014. Sencha Inc.
|
||||
#
|
||||
|
||||
# Original PhoneGap Packager used the following properties
|
||||
# here we map in the app space properties to allow for app.json
|
||||
# setting of these instead of properties files
|
||||
phonegap.platform=${app.phonegap.config.platform}
|
||||
phonegap.build.remote=${app.phonegap.config.remote}
|
||||
|
||||
# These are simply shorthanded as the user must specify them in
|
||||
# a local.properties file anyway.
|
||||
# No need for the user to type all this out.
|
||||
phonegap.build.remote.username=${phonegap.username}
|
||||
phonegap.build.remote.password=${phonegap.password}
|
@ -1,32 +0,0 @@
|
||||
<project basedir=".">
|
||||
<!--
|
||||
This file can be freely edited, so long as the <import file="${sencha.workspace.config.dir}/plugin.xml"/>
|
||||
statement is not removed.
|
||||
|
||||
One of the purposes of this file is to hook various Sencha Command operations and do
|
||||
processing before or after the command is processed. To do this, simply provide the
|
||||
logic in a <target> using one of these names:
|
||||
|
||||
-before-generate-app Called before an application is generated
|
||||
-after-generate-app Called after an application is generated
|
||||
|
||||
-before-generate-controller Called before a controller is generated
|
||||
-after-generate-controller Called after a controller is generated
|
||||
|
||||
-before-generate-model Called before a model is generated
|
||||
-after-generate-model Called after a model is generated
|
||||
|
||||
-before-generate-profile Called before a profile is generated
|
||||
-after-generate-profile Called after a profile is generated
|
||||
-->
|
||||
<import file="${workspace.config.dir}/plugin.xml"/>
|
||||
|
||||
<!--
|
||||
<target name="-after-generate-model">
|
||||
... use ${args.path}, ${args.name} and ${args.fields} as needed ...
|
||||
</target>
|
||||
|
||||
Other targets are similar. There are properties prefixed with "args." and the name of
|
||||
the command line option that hold the parameters for the command.
|
||||
-->
|
||||
</project>
|
@ -1,27 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file defines default property values that apply to the "production" build
|
||||
# environment.
|
||||
#
|
||||
# Please use production.properties to customize these properties unless you want
|
||||
# your customizations to be for all environments. In that case, you can instead
|
||||
# override these properties in build.properties.
|
||||
#
|
||||
# The properties defined in this file take priority over defaults.properties
|
||||
# but are lower priority than build.properties which in turn is lower priority
|
||||
# than production.properties.
|
||||
#
|
||||
# IMPORTANT - This file should not be modified by an app as it is overwritten
|
||||
# during each app upgrade.
|
||||
# =============================================================================
|
||||
|
||||
build.options.logger=no
|
||||
|
||||
build.options.debug=false
|
||||
|
||||
# enable the full class system optimizer
|
||||
app.output.js.optimize=true
|
||||
build.optimize=${build.optimize.enable}
|
||||
|
||||
enable.resource.compression=true
|
||||
|
||||
build.embedded.microloader.compressor=-closure
|
@ -1,8 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# production.defaults.properties. These properties are only imported when building
|
||||
# for the "production" environment.
|
||||
#
|
||||
# Properties defined in this file take priority over build.properties but are
|
||||
# only loaded for "production" builds.
|
||||
# =============================================================================
|
@ -1,143 +0,0 @@
|
||||
<project name="x-refresh-impl">
|
||||
<import file="bootstrap-impl.xml"/>
|
||||
|
||||
<target name="-init-refresh" depends="-detect-app-build-properties">
|
||||
<property name="app.bootstrap.base.path"
|
||||
value="${build.bootstrap.metadata.dir}"/>
|
||||
</target>
|
||||
|
||||
<target name="-refresh-app-manifest" if="build.enable.appmanifest" depends="-init-refresh">
|
||||
|
||||
<local name="manifest.root.excludes"/>
|
||||
<condition property="manifest.root.excludes" value="${app.bootstrap.manifest.exclude}">
|
||||
<isset property="app.bootstrap.manifest.exclude"/>
|
||||
</condition>
|
||||
|
||||
<condition property="manifest.root.excludes" value="loadOrder">
|
||||
<and>
|
||||
<x-is-true value="${app.has.js.sdk}"/>
|
||||
<not>
|
||||
<isset property="app.watch.enabled"/>
|
||||
</not>
|
||||
</and>
|
||||
</condition>
|
||||
<property name="manifest.root.excludes" value=""/>
|
||||
|
||||
<property name="metadata.bootstrap.base.path" value="${build.bootstrap.metadata.dir}"/>
|
||||
|
||||
<condition property="refresh.file.filter" value="framework,package-core,package-${toolkit.name}">
|
||||
<x-is-true value="${framework.isV6}"/>
|
||||
</condition>
|
||||
<property name="refresh.file.filter" value="framework,package-sencha-core"/>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${app.has.js.sdk}"/>
|
||||
<then>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
include
|
||||
-all
|
||||
and
|
||||
exclude
|
||||
-tag=${refresh.file.filter}
|
||||
and
|
||||
save
|
||||
bootstrap
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
<else>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
include
|
||||
-all
|
||||
and
|
||||
save
|
||||
bootstrap
|
||||
]]>
|
||||
</x-compile>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<x-get-relative-path from="${build.bootstrap.page.dir}"
|
||||
to="${build.json.bootstrap.path}"
|
||||
property="build.json.bootstrap.rel.path"/>
|
||||
|
||||
<echo file="${app.bootstrap.js}">var Ext = Ext || {};
|
||||
Ext.manifest = Ext.manifest || "${build.json.bootstrap.rel.path}";
|
||||
</echo>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
microload
|
||||
-operation=microloader
|
||||
-microloaderPath=${app.microloader.bootstrap}
|
||||
-bootPath=${build.boot.file}
|
||||
+append
|
||||
-out=${app.bootstrap.js}
|
||||
and
|
||||
microload
|
||||
-operation=manifest
|
||||
-jsonp=Ext.Microloader.setManifest
|
||||
-fashion=${use.fashion}
|
||||
-bootstrap
|
||||
+ignoreDisabled
|
||||
-exclude=${manifest.root.excludes}
|
||||
-tpl={0}
|
||||
-basePath=${metadata.bootstrap.base.path}
|
||||
-out=${build.json.bootstrap.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-refresh-app-bootstrap" unless="build.enable.appmanifest" depends="-init-refresh">
|
||||
|
||||
<!--regenerate class system metadata-->
|
||||
<x-bootstrap file="${app.bootstrap.js}"
|
||||
basedir="${app.bootstrap.base.path}"
|
||||
overrideTpl="${bootstrap.override.tpl}"
|
||||
overrideTplType="${bootstrap.override.tpltype}"
|
||||
includeOverrides="${bootstrap.include.overrides}"
|
||||
includeBoot="${bootstrap.include.boot}"/>
|
||||
|
||||
<!--
|
||||
create / overwrite bootstrap.json, which will be used
|
||||
by the default development.js microloader
|
||||
-->
|
||||
|
||||
<echo file="${build.json.bootstrap.path}">
|
||||
/**
|
||||
* This file is generated by Sencha Cmd and should NOT be edited. It is a
|
||||
* combination of content from app.json, and all required package's package.json
|
||||
* files. Customizations should be placed in app.json.
|
||||
*/
|
||||
</echo>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
microload
|
||||
-operation=json
|
||||
-bootstrap
|
||||
-append
|
||||
-tpl={0}
|
||||
-basePath=${app.bootstrap.base.path}
|
||||
-out=${build.json.bootstrap.path}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Refreshes the application's bootstrap javascript and microloader manifest
|
||||
'-detect-app-build-properties' is defined in js-impl.xml
|
||||
-->
|
||||
<target name="-refresh-app"
|
||||
depends="-detect-app-build-properties,
|
||||
-refresh-app-manifest,
|
||||
-refresh-app-bootstrap"/>
|
||||
|
||||
<!--
|
||||
Refresh app
|
||||
-->
|
||||
<target name="-before-refresh"/>
|
||||
<target name="-refresh" depends="-refresh-app"/>
|
||||
<target name="-after-refresh"/>
|
||||
</project>
|
@ -1,88 +0,0 @@
|
||||
<project name="x-resolve-impl">
|
||||
|
||||
<target name="-before-web-start"/>
|
||||
<target name="-web-start">
|
||||
<if>
|
||||
<x-is-true value="enable.browser.launch"/>
|
||||
<then>
|
||||
<x-launch-browser url="http://localhost:${build.web.port}"/>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-web-start"/>
|
||||
<target name="web-start"
|
||||
depends="init,-before-web-start,-web-start,-after-web-start"/>
|
||||
|
||||
<target name="-before-web-stop"/>
|
||||
<target name="-web-stop">
|
||||
<x-server stop="true" port="${build.web.port}"/>
|
||||
</target>
|
||||
<target name="-after-web-stop"/>
|
||||
<target name="web-stop"
|
||||
depends="-init,-before-web-stop,-web-stop,-after-web-stop"/>
|
||||
|
||||
<target name="-resolve-impl" depends="-refresh">
|
||||
<x-ant-call target="web-start" unless="skip.web.start">
|
||||
<param name="enable.background.server" value="true"/>
|
||||
</x-ant-call>
|
||||
|
||||
<local name="app.relative.url"/>
|
||||
<local name="build.resolve.relative.url"/>
|
||||
|
||||
<!--calculate the relative path from the web root to the index page-->
|
||||
<x-get-relative-path from="${build.web.root}"
|
||||
to="${app.page.file}"
|
||||
property="app.relative.url"/>
|
||||
|
||||
<property name="build.resolve.relative.url"
|
||||
value="${build.resolve.url}/${app.relative.url}"/>
|
||||
|
||||
<x-sencha-command dir="${app.dir}" inheritall="true">
|
||||
<![CDATA[
|
||||
app
|
||||
resolve
|
||||
-mode=${build.resolve.mode}
|
||||
-uri=${build.resolve.relative.url}
|
||||
-tpl=${build.resolve.tpl}
|
||||
-out=${build.resolve.file}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
<x-ant-call target="web-stop" unless="skip.web.start"/>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
restore
|
||||
page
|
||||
and
|
||||
load-refs
|
||||
-file=${build.resolve.file}
|
||||
-defaultSrcName=@${build.tag.name}
|
||||
-allowUnmatched=${build.resolve.allow.unmatched}
|
||||
and
|
||||
save
|
||||
page
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-before-resolve"/>
|
||||
<target name="-resolve">
|
||||
<x-ant-call target="-resolve-impl"/>
|
||||
</target>
|
||||
<target name="-after-resolve"/>
|
||||
|
||||
<target name="-before-explain"/>
|
||||
<target name="-explain" depends="-init-compiler">
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
explain
|
||||
-alias
|
||||
${build.app.temp.dir}/${build.tag.name}-master-bundle.js=APPLICATION
|
||||
${build.app.temp.dir}/${build.tag.name}-master-bundle.js
|
||||
${args.targetName}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
<target name="-after-explain"/>
|
||||
<target name="explain" depends="init,-before-explain,-explain,-after-explain"/>
|
||||
|
||||
</project>
|
@ -1,27 +0,0 @@
|
||||
<project name="x-resources-impl">
|
||||
<target name="-before-resources"/>
|
||||
<target name="-after-resources"/>
|
||||
|
||||
<!--'-init-compiler' defined in init-impl.xml-->
|
||||
<target name="-resources" depends="-init-compiler">
|
||||
<property name="target.json.resources.dir" value="${build.out.base.path}"/>
|
||||
<property name="target.config.resources.dir" value="${build.resources.dir}"/>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
resources
|
||||
-excludes=-all*.css
|
||||
-out=${target.config.resources.dir}
|
||||
and
|
||||
resources
|
||||
-model=true
|
||||
-out=${target.json.resources.dir}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<!-- Legacy targets (implement -before-resources or -after-resources instead): -->
|
||||
<target name="-after-copy-resources"/>
|
||||
<target name="-after-inherit-resources"/>
|
||||
<target name="-before-copy-resources"/>
|
||||
<target name="-before-inherit-resources"/>
|
||||
</project>
|
@ -1,392 +0,0 @@
|
||||
<project name="x-sass-impl">
|
||||
|
||||
<!--
|
||||
Uses the compiler to generate the top-level scss file for the app
|
||||
by using the current set of js files to determine the Components
|
||||
used by the app, then including the corresponding scss files into the
|
||||
app's style
|
||||
-->
|
||||
<target name="-compile-sass" depends="-init-app-js-files">
|
||||
<local name="app.out.scss.tmp"/>
|
||||
<local name="sass.name.filter"/>
|
||||
<property name="app.out.scss.tmp" value="${app.out.scss}.tmp"/>
|
||||
<x-normalize-path
|
||||
path="${build.out.resources.dir}"
|
||||
property="image.search.path"/>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${build.include.all.scss}"/>
|
||||
<then>
|
||||
<property name="sass.name.filter">
|
||||
include
|
||||
-all
|
||||
</property>
|
||||
</then>
|
||||
</if>
|
||||
<property name="sass.name.filter">
|
||||
restore
|
||||
page
|
||||
</property>
|
||||
|
||||
<local name="var.begin"/>
|
||||
<local name="var.end"/>
|
||||
<local name="resource.map.base"/>
|
||||
|
||||
<condition property="var.begin" value="dynamic(">
|
||||
<isset property="framework.isV6"/>
|
||||
</condition>
|
||||
<condition property="var.end" value=")">
|
||||
<isset property="framework.isV6"/>
|
||||
</condition>
|
||||
|
||||
<property name="var.begin" value=""/>
|
||||
<property name="var.end" value="!default"/>
|
||||
|
||||
<condition property="resource.map.base" value="${css.output.rel.path}">
|
||||
<x-is-true value="${app.sass.dynamic}"/>
|
||||
</condition>
|
||||
<property name="resource.map.base" value=""/>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${app.sass.dynamic}"/>
|
||||
<then>
|
||||
<x-get-relative-path
|
||||
from="${build.out.css.dir}"
|
||||
to="${build.out.base.path}"
|
||||
property="css.output.rel.path"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<property name="css.output.rel.path" value=""/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
${sass.name.filter}
|
||||
and
|
||||
#only set variables for used classes eg. $include-class-name
|
||||
sass
|
||||
+class-name-vars
|
||||
-variable=$app-name: ${var.begin} '${app.name}' ${var.end}
|
||||
-variable=$image-search-path:'${image.search.path}'
|
||||
-variable=$theme-name: ${var.begin} '${theme.name}' ${var.end}
|
||||
-resourceMapBase=${css.output.rel.path}
|
||||
-output=${app.out.scss.tmp}
|
||||
-forward=${app.sass.dynamic}
|
||||
and
|
||||
include
|
||||
-all
|
||||
and
|
||||
# include etc and vars from all classes
|
||||
sass
|
||||
+etc
|
||||
+vars
|
||||
+append
|
||||
-output=${app.out.scss.tmp}
|
||||
-forward=${app.sass.dynamic}
|
||||
and
|
||||
${sass.name.filter}
|
||||
and
|
||||
#only include rules from used classes
|
||||
sass
|
||||
+rules
|
||||
+append
|
||||
-output=${app.out.scss.tmp}
|
||||
and
|
||||
sass
|
||||
+ruby
|
||||
-sassCacheDir=${compass.cache.dir}
|
||||
-output=${app.out.ruby}
|
||||
]]>
|
||||
</x-compile>
|
||||
|
||||
<if>
|
||||
<not>
|
||||
<filesmatch file1="${app.out.scss.tmp}" file2="${app.out.scss}"/>
|
||||
</not>
|
||||
<then>
|
||||
<copy file="${app.out.scss.tmp}" tofile="${app.out.scss}" overwrite="true"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<!--
|
||||
app.out.css.path is relative to the app output index.html file
|
||||
-->
|
||||
<x-get-relative-path
|
||||
from="${app.dir}"
|
||||
to="${app.out.css}"
|
||||
property="app.out.css.path"
|
||||
/>
|
||||
|
||||
<!--update the application's bootstrap.css file to point to the build output-->
|
||||
<echo file="${build.bootstrap.css.path}">
|
||||
<![CDATA[
|
||||
/*
|
||||
* This file is generated by Sencha Cmd and should NOT be edited. It redirects
|
||||
* to the most recently built CSS file for the application to allow index.html
|
||||
* in the development directory to load properly (i.e., "dev mode").
|
||||
*/
|
||||
@import '${app.out.css.path}';
|
||||
]]>
|
||||
</echo>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This macrodef is used for post-processing Ext JS 4.2+ style theme css files
|
||||
and will split based on selector thresholds, as well as run the css preprocessor
|
||||
and compressor
|
||||
-->
|
||||
<macrodef name="x-compress-css-files">
|
||||
<attribute name="dir"/>
|
||||
<attribute name="prefix"/>
|
||||
<attribute name="outprefix"/>
|
||||
<attribute name="compress"/>
|
||||
<attribute name="preprocess"/>
|
||||
<sequential>
|
||||
<x-split-css file="@{dir}/@{prefix}.css"
|
||||
outdir="${build.resources.dir}"
|
||||
limit="${build.css.selector.limit}"
|
||||
compilerRefId="${compiler.ref.id}"/>
|
||||
|
||||
<for param="cssfile">
|
||||
<fileset dir="@{dir}" includes="@{prefix}*.css"/>
|
||||
<sequential>
|
||||
<local name="css.output.name"/>
|
||||
<local name="pattern"/>
|
||||
<property name="pattern" value="(.*?)(@{prefix})(_\d{1,2})*\.css"/>
|
||||
<propertyregex property="css.output.name"
|
||||
input="@{cssfile}"
|
||||
regexp="${pattern}"
|
||||
select="\1@{outprefix}\3.css"
|
||||
override="true"/>
|
||||
<if>
|
||||
<equals arg1="@{preprocess}" arg2="true"/>
|
||||
<then>
|
||||
<x-echo>Preprocessing @{cssfile} to ${css.output.name}</x-echo>
|
||||
<x-css-preprocess
|
||||
file="@{cssfile}"
|
||||
tofile="${css.output.name}"
|
||||
options="${build.css.preprocessor.opts}"/>
|
||||
</then>
|
||||
</if>
|
||||
<if>
|
||||
<equals arg1="@{compress}" arg2="true"/>
|
||||
<then>
|
||||
<x-echo>Compressing @{cssfile} to ${css.output.name}</x-echo>
|
||||
<x-compress-css srcfile="@{cssfile}"
|
||||
outfile="${css.output.name}"/>
|
||||
</then>
|
||||
</if>
|
||||
</sequential>
|
||||
</for>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
This target builds Ext JS 4.2+ style themes, first generating the top-level
|
||||
scss file, then running compass with the css, sass, and config options set
|
||||
-->
|
||||
<target name="-compass-compile-theme-package" depends="-load-sass-page">
|
||||
<x-run-if-true value="${enable.ext42.themes}">
|
||||
<local name="compress.uptodate"/>
|
||||
|
||||
<x-ant-call target="-compile-sass"/>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${app.sass.fashion}"/>
|
||||
<then>
|
||||
<if>
|
||||
<x-is-true value="${app.sass.rhino}"/>
|
||||
<then>
|
||||
<x-fashion-compile
|
||||
file="${app.out.scss}"
|
||||
toFile="${app.out.css}"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-fashion-live-update input="${app.out.scss}"
|
||||
output="${app.out.css}"
|
||||
refId="app.web.server"
|
||||
split="${build.css.selector.limit}"
|
||||
compress="${build.css.compress}"
|
||||
compilerRefId="${compiler.ref.id}"/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
microload
|
||||
-operation=manifest
|
||||
-fashion=false
|
||||
-tpl=${build.microloader.json.tpl.standalone}
|
||||
-out=${build.out.json.path}
|
||||
-resourcePath=${build.out.base.path}
|
||||
-basePath=${build.out.metadata.dir}
|
||||
]]>
|
||||
</x-compile>
|
||||
|
||||
<x-sencha-command>
|
||||
fashion
|
||||
-config=${build.out.json.path}
|
||||
-compress=${build.css.compress}
|
||||
-split=${build.css.selector.limit}
|
||||
-saveFile=${app.dir}/${app.sass.generated.var}
|
||||
${app.out.scss}
|
||||
${app.out.css}
|
||||
</x-sencha-command>
|
||||
|
||||
<x-update-css-array input="${app.out.css}"
|
||||
compilerRefId="${compiler.ref.id}"/>
|
||||
|
||||
<if>
|
||||
<and>
|
||||
<available file="${build.out.css.dir}/css-vars.js"/>
|
||||
</and>
|
||||
<then>
|
||||
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
fs
|
||||
concat
|
||||
-to=${build.out.css.dir}/css-vars.js.tmp
|
||||
${cmd.dir}/extensions/sencha-fashion/fashion/fashion-export-min.js
|
||||
${build.out.css.dir}/css-vars.js
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
|
||||
<if>
|
||||
<not>
|
||||
<equals arg1="${build.compression}" arg2=""/>
|
||||
</not>
|
||||
<then>
|
||||
<x-compress-js srcFile="${build.out.css.dir}/css-vars.js.tmp"
|
||||
outFile="${build.out.css.dir}/css-vars.js.tmp"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<delete file="${build.out.css.dir}/css-vars.js"/>
|
||||
<move file="${build.out.css.dir}/css-vars.js.tmp"
|
||||
tofile="${build.out.css.dir}/css-vars.js"/>
|
||||
|
||||
<if>
|
||||
<not>
|
||||
<equals arg1="${build.environment}" arg2="development"/>
|
||||
</not>
|
||||
<then>
|
||||
<concat destfile="${build.out.js.path}" append="true">
|
||||
<filelist files="${build.out.css.dir}/css-vars.js"/>
|
||||
</concat>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
</then>
|
||||
</if>
|
||||
</else>
|
||||
</if>
|
||||
</then>
|
||||
<else>
|
||||
<x-compass-compile
|
||||
rubyPath="${build.ruby.path}"
|
||||
dir="${compass.working.dir}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
sassdir="${compass.sass.dir}"
|
||||
cssdir="${compass.css.dir}"
|
||||
config="${compass.config.file}"/>
|
||||
|
||||
<uptodate property="compress.uptodate"
|
||||
value="true"
|
||||
srcfile="${app.out.scss}.tmp"
|
||||
targetfile="${app.out.css}"/>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${compress.uptodate}"/>
|
||||
<!--<x-is-true value="true"/>-->
|
||||
<then>
|
||||
<x-compress-css-files dir="${build.out.css.dir}"
|
||||
prefix="${app.out.base.debug}"
|
||||
outprefix="${app.out.base}"
|
||||
preprocess="${build.css.preprocess}"
|
||||
compress="${build.css.compress}"/>
|
||||
</then>
|
||||
</if>
|
||||
</else>
|
||||
</if>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This is a legacy macrodef to support building Ext JS 4.1 themes, which have been
|
||||
deprecated in favor of Ext JS 4.2 theme packages
|
||||
-->
|
||||
<macrodef name="x-build-sass">
|
||||
<attribute name="theme"/>
|
||||
<sequential>
|
||||
<local name="sass.name"/>
|
||||
<local name="use.shell"/>
|
||||
|
||||
<!--
|
||||
convert abspath to just the leaf path name
|
||||
-->
|
||||
<basename property="sass.name" file="@{theme}"/>
|
||||
<local name="sass.base.name"/>
|
||||
<property name="sass.base.name" value="${sass.name}"/>
|
||||
|
||||
<echo>Compiling sass directory : @{theme}/sass</echo>
|
||||
<x-compass-compile
|
||||
rubyPath="${build.ruby.path}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
trace="${compass.compile.trace}"
|
||||
dir="@{theme}/sass"/>
|
||||
|
||||
<x-compress-css srcfile="${app.dir}/resources/${sass.base.name}/*.css"
|
||||
outdir="${app.dir}/resources/${sass.base.name}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
This target builds Ext JS 4.1 style themes, iterating over each directory
|
||||
under the specified ${app.theme.dir} directory and compiling the sass
|
||||
located there
|
||||
-->
|
||||
<target name="-compass-compile-theme-folders">
|
||||
<x-run-if-true value="${enable.ext41.themes}">
|
||||
<!-- run sass compilation over the various themes -->
|
||||
<for param="sass">
|
||||
<dirset dir="${app.theme.dir}" includes="*"/>
|
||||
<sequential>
|
||||
<x-build-sass theme="@{sass}"/>
|
||||
</sequential>
|
||||
</for>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This target builds Touch style themes, by running compass
|
||||
over the directory containing the manually maintined scss files
|
||||
-->
|
||||
<target name="-compass-compile-sass-dir">
|
||||
<x-run-if-true value="${enable.touch.themes}">
|
||||
<x-compass-compile
|
||||
rubyPath="${build.ruby.path}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
dir="${compass.sass.dir}"/>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
This is a summation target triggering the three different supported
|
||||
sass modes (ext 41, ext 42+, and touch).
|
||||
-->
|
||||
<target name="-compass-compile"
|
||||
depends="-compass-compile-theme-package,
|
||||
-compass-compile-theme-folders,
|
||||
-compass-compile-sass-dir"/>
|
||||
|
||||
<!--
|
||||
Build SASS
|
||||
-->
|
||||
<target name="-before-sass"/>
|
||||
<target name="-sass" depends="-compass-compile"/>
|
||||
<target name="-after-sass"/>
|
||||
</project>
|
@ -1,14 +0,0 @@
|
||||
# this property specifies a comma separated list of paths containing
|
||||
# resources to copy to the build directory
|
||||
app.resource.paths=
|
||||
|
||||
#==============================================================================
|
||||
# Custom Properties - Place customizations below this line to avoid merge
|
||||
# conflicts with newer versions
|
||||
|
||||
app.framework.version=6.2.0.981
|
||||
|
||||
|
||||
|
||||
|
||||
app.cmd.version=6.2.0.103
|
@ -1,388 +0,0 @@
|
||||
<project name="x-slice-impl">
|
||||
|
||||
<target name="-load-sass-page"
|
||||
depends="-detect-app-build-properties,
|
||||
-generate-slicer-bootstrap,
|
||||
-generate-slicer-manifest">
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Uses the compiler to generate a special theme-only scss file containing
|
||||
rules for all framework / package / app components. This is then used
|
||||
by the slicer example page to capture theme sprites
|
||||
-->
|
||||
<target name="-compile-slicer-sass" depends="-init-compiler">
|
||||
<local name="app.example.scss.tmp"/>
|
||||
<property name="app.example.scss.tmp" value="${app.example.scss}.tmp"/>
|
||||
<x-normalize-path
|
||||
path="${build.out.resources.dir}"
|
||||
property="image.search.path"/>
|
||||
|
||||
<local name="var.begin"/>
|
||||
<local name="var.end"/>
|
||||
|
||||
<condition property="var.begin" value="dynamic(">
|
||||
<isset property="framework.isV6"/>
|
||||
</condition>
|
||||
<condition property="var.end" value=")">
|
||||
<isset property="framework.isV6"/>
|
||||
</condition>
|
||||
|
||||
<property name="var.begin" value=""/>
|
||||
<property name="var.end" value="!default"/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
restore
|
||||
page
|
||||
and
|
||||
include
|
||||
-all
|
||||
and
|
||||
sass
|
||||
+class-name-vars
|
||||
+etc
|
||||
+vars
|
||||
+rules
|
||||
-variable=$app-name: ${var.begin} '${app.name}' ${var.end}
|
||||
-variable=$image-search-path:'${image.search.path}'
|
||||
-variable=$theme-name: ${var.begin} '${theme.name}' ${var.end}
|
||||
-output=${app.example.scss.tmp}
|
||||
-forward=${app.sass.dynamic}
|
||||
and
|
||||
restore
|
||||
page
|
||||
and
|
||||
sass
|
||||
+ruby
|
||||
-output=${app.example.out.ruby}
|
||||
]]>
|
||||
</x-compile>
|
||||
|
||||
<if>
|
||||
<not>
|
||||
<filesmatch file1="${app.example.scss.tmp}" file2="${app.example.scss}"/>
|
||||
</not>
|
||||
<then>
|
||||
<copy file="${app.example.scss.tmp}" tofile="${app.example.scss}" overwrite="true"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<x-get-relative-path from="${app.example.dir}"
|
||||
to="${app.example.css}"
|
||||
property="app.example.css.path"/>
|
||||
|
||||
<!--update the app's example to point to the build output-->
|
||||
<echo file="${app.example.css.file}">
|
||||
<![CDATA[
|
||||
/*
|
||||
* This file is generated by Sencha Cmd and should NOT be edited. It redirects
|
||||
* to the most recently built CSS file for the application to allow theme.html
|
||||
* to load properly for image slicing (required to support non-CSS3 browsers
|
||||
* such as IE9 and below).
|
||||
*/
|
||||
@import '${app.example.css.path}';
|
||||
]]>
|
||||
</echo>
|
||||
</target>
|
||||
|
||||
<!--
|
||||
Compiles the scss file for the theme slicer page
|
||||
-->
|
||||
<target name="-compass-compile-slicer-css" depends="-compile-slicer-sass">
|
||||
<if>
|
||||
<x-is-true value="${app.sass.fashion}"/>
|
||||
<then>
|
||||
<if>
|
||||
<x-is-true value="${app.sass.rhino}"/>
|
||||
<then>
|
||||
<x-fashion-compile
|
||||
file="${app.example.build.dir}"
|
||||
toFile="${app.example.build.dir}"/>
|
||||
</then>
|
||||
<else>
|
||||
<x-sencha-command>
|
||||
fashion
|
||||
-compress=${build.css.compress}
|
||||
-split=${build.css.selector.limit}
|
||||
${app.example.build.dir}
|
||||
${app.example.build.dir}
|
||||
</x-sencha-command>
|
||||
</else>
|
||||
</if>
|
||||
</then>
|
||||
<else>
|
||||
<x-compass-compile
|
||||
dir="${app.example.build.dir}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
sassdir="${app.example.build.dir}"
|
||||
cssdir="${app.example.build.dir}"
|
||||
config="${app.example.compass.config}"/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!-- Produces a bootstrap.js file for ext 4.2 slicer pages -->
|
||||
<target name="-generate-slicer-bootstrap" unless="framework.isV5">
|
||||
<local name="relpath"/>
|
||||
<x-get-relative-path from="${bootstrap.base.path}"
|
||||
to="${framework.packages.dir}"
|
||||
property="relpath"/>
|
||||
|
||||
<x-bootstrap file="${bootstrap.example.js}"
|
||||
basedir="${bootstrap.base.path}"
|
||||
includeBoot="true"
|
||||
includeCoreFiles="true"
|
||||
overrideTpl="${bootstrap.override.tpl}"
|
||||
overrideTplType="${bootstrap.override.tpltype}"
|
||||
overrideExcludeTags="">
|
||||
<![CDATA[
|
||||
Ext.Boot.loadSync([
|
||||
"render.js",
|
||||
"${relpath}/ext-theme-base/sass/example/manifest.js",
|
||||
"${relpath}/ext-theme-base/sass/example/shortcuts.js",
|
||||
"custom.js"
|
||||
]);
|
||||
]]>
|
||||
</x-bootstrap>
|
||||
|
||||
</target>
|
||||
|
||||
<!-- Produces a bootstrap.js / bootstrap.json pair for ext 5 slicer pages -->
|
||||
<target name="-generate-slicer-manifest" if="framework.isV5" depends="-detect-app-build-properties">
|
||||
<local name="manifest.root.excludes"/>
|
||||
<condition property="manifest.root.excludes" value="${app.bootstrap.manifest.exclude}">
|
||||
<isset property="app.bootstrap.manifest.exclude"/>
|
||||
</condition>
|
||||
<property name="manifest.root.excludes" value=""/>
|
||||
|
||||
<if>
|
||||
<x-is-true value="${app.has.js.sdk}"/>
|
||||
<then>
|
||||
<property name="manifest.bootstrap.js.exclude">
|
||||
exclude
|
||||
-tag=framework,package-sencha-core,package-core,package-${toolkit.name}
|
||||
</property>
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
restore
|
||||
page
|
||||
and
|
||||
${manifest.bootstrap.js.exclude}
|
||||
]]>
|
||||
</x-compile>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<property name="remove.slicer.css.bootstrap.entries" value="false"/>
|
||||
|
||||
<x-compile refid="${compiler.ref.id}">
|
||||
<![CDATA[
|
||||
slicer-manifest
|
||||
-exclude=${manifest.root.excludes}
|
||||
-jsonp=Ext.Microloader.setManifest
|
||||
-removeBootstrapCssEntries=${remove.slicer.css.bootstrap.entries}
|
||||
+ignoreDisabled
|
||||
-basePath=${bootstrap.base.path}
|
||||
-cssFile=${app.example.css.file}
|
||||
-out=${bootstrap.example.json}
|
||||
and
|
||||
microload
|
||||
-operation=microloader
|
||||
-microloaderPath=${build.slicer.microloader.file}
|
||||
-bootPath=${build.boot.file}
|
||||
-out=${bootstrap.example.js}
|
||||
]]>
|
||||
</x-compile>
|
||||
</target>
|
||||
|
||||
<target name="-capture-theme-image">
|
||||
<echo>Capture theme image to ${build.capture.png}</echo>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
theme
|
||||
capture
|
||||
-page=${app.example.theme.html}
|
||||
-image=${build.capture.png}
|
||||
-manifest=${build.capture.json}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
</target>
|
||||
|
||||
<target name="-capture-sass-page-image">
|
||||
<if>
|
||||
<and>
|
||||
<x-is-true value="${app.sass.fashion}"/>
|
||||
<x-is-false value="${app.sass.rhino}"/>
|
||||
</and>
|
||||
<then>
|
||||
<echo>Capture theme image to ${build.capture.png}</echo>
|
||||
<x-capture-slicer-data manifestPath="${build.capture.json}"
|
||||
imagePath="${build.capture.png}"
|
||||
refId="app.web.server"/>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<target name="-slice-theme-images">
|
||||
<echo>Slicing theme images to ${build.resources.dir}</echo>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
fs
|
||||
slice
|
||||
${build.slice.options}
|
||||
-image=${build.capture.png}
|
||||
-manifest=${build.capture.json}
|
||||
-out=${build.out.slicer.path}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
</target>
|
||||
|
||||
|
||||
<!--
|
||||
Generates theme images for Ext JS 4.2+ apps using theme packages
|
||||
'-detect-app-build-properties' is defined in js-impl.xml
|
||||
-->
|
||||
<target name="-slice-app-theme"
|
||||
depends="-load-sass-page,
|
||||
-compass-compile-slicer-css,
|
||||
-capture-theme-image,
|
||||
-slice-theme-images">
|
||||
</target>
|
||||
|
||||
<macrodef name="x-build-theme">
|
||||
<attribute name="theme" description="the path of the theme folder"/>
|
||||
<attribute name="buildsass" default="false"/>
|
||||
<attribute name="basetheme" default="default"/>
|
||||
<sequential>
|
||||
<local name="theme.name"/>
|
||||
|
||||
<local name="framework.theme.dir"/>
|
||||
<local name="tmp.theme.dir"/>
|
||||
<local name="tmp.img.dir"/>
|
||||
|
||||
<basename property="theme.name" file="@{theme}"/>
|
||||
<local name="theme.base.name"/>
|
||||
<property name="theme.base.name" value="${theme.name}"/>
|
||||
<property name="theme.images.dir" location="@{theme}/images"/>
|
||||
<property name="theme.page.dir" location="@{theme}/${theme.page.name}"/>
|
||||
|
||||
<property name="tmp.res.dir" value="${app.resources.dir}"/>
|
||||
<property name="tmp.theme.dir" value="${tmp.res.dir}/${theme.base.name}"/>
|
||||
<property name="tmp.img.dir" value="${tmp.theme.dir}/images"/>
|
||||
|
||||
<property name="app.res.dir" location="${app.dir}/packages"/>
|
||||
<property name="app.img.dir" location="${app.res.dir}/images"/>
|
||||
|
||||
<property name="framework.res.dir" location="${framework.dir}/resources"/>
|
||||
<property name="framework.img.dir" location="${framework.res.dir}/themes/images"/>
|
||||
<property name="framework.theme.dir" location="${framework.img.dir}/@{basetheme}"/>
|
||||
|
||||
<echo>Copying base framework images from ${framework.theme.dir} to ${tmp.img.dir}</echo>
|
||||
<copy todir="${tmp.img.dir}">
|
||||
<fileset dir="${framework.theme.dir}" includes="**/*"/>
|
||||
</copy>
|
||||
|
||||
<if>
|
||||
<equals arg1="@{buildsass}" arg2="true"/>
|
||||
<then>
|
||||
<echo>Building sass for theme ${theme.name}</echo>
|
||||
<!--x-build-sass is defined in sass-impl.xml-->
|
||||
<x-build-sass theme="@{theme}"/>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<echo>Slicing images for theme ${theme.name} to ${tmp.img.dir}</echo>
|
||||
<x-sencha-command>
|
||||
<![CDATA[
|
||||
theme
|
||||
build
|
||||
-data-file=${build.capture.json}
|
||||
-image-file=${build.capture.png}
|
||||
-page=${theme.page.dir}
|
||||
-out=${tmp.img.dir}
|
||||
]]>
|
||||
</x-sencha-command>
|
||||
|
||||
<if>
|
||||
<available file="${theme.images.dir}"/>
|
||||
<then>
|
||||
<echo>Copying user defined images from @{theme}/images to ${tmp.img.dir}</echo>
|
||||
<copy todir="${tmp.img.dir}">
|
||||
<fileset dir="${theme.images.dir}" includes="**/*"/>
|
||||
</copy>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
This is a legacy macrodef for copying resources in theme-directory based themes.
|
||||
It is provided to support building Ext JS 4.1 app themes
|
||||
-->
|
||||
<macrodef name="x-copy-resources">
|
||||
<sequential>
|
||||
<copy todir="${build.resources.dir}" includeEmptyDirs="false">
|
||||
<fileset dir="${app.resources.dir}"
|
||||
includes="**/*"/>
|
||||
</copy>
|
||||
|
||||
<x-get-relative-path from="${app.dir}"
|
||||
to="${framework.dir}"
|
||||
property="framework.rel.path"/>
|
||||
|
||||
<copy toDir="${build.out.base.path}/${framework.rel.path}">
|
||||
<fileset dir="${framework.dir}"
|
||||
includes="src/ux/**/css/**/*"/>
|
||||
</copy>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!--
|
||||
Generates theme images for Ext JS 4.1 apps that use directory based
|
||||
themes. These have been deprecated in favor of ExtJS 4.2 theme packages
|
||||
-->
|
||||
<target name="-slice-theme-directories">
|
||||
<echo>Processing theme directories from ${app.theme.dir}</echo>
|
||||
<for param="theme">
|
||||
<dirset dir="${app.theme.dir}" includes="*"/>
|
||||
<sequential>
|
||||
<x-build-theme theme="@{theme}"/>
|
||||
</sequential>
|
||||
</for>
|
||||
<x-copy-resources/>
|
||||
</target>
|
||||
|
||||
<target name="-slice-images">
|
||||
<x-run-if-true value="${enable.ext42.themes}">
|
||||
<x-ant-call target="-slice-app-theme"/>
|
||||
</x-run-if-true>
|
||||
<x-run-if-true value="${enable.ext41.themes}">
|
||||
<x-ant-call target="-slice-theme-directories"/>
|
||||
</x-run-if-true>
|
||||
</target>
|
||||
|
||||
<target name="-before-slice"/>
|
||||
<target name="-slice" depends="-slice-images"/>
|
||||
<target name="-after-slice"/>
|
||||
|
||||
<!--
|
||||
Refresh Individual Theme
|
||||
-->
|
||||
<target name="-before-refresh-theme"/>
|
||||
<target name="-refresh-theme">
|
||||
<if>
|
||||
<x-is-true value="${enable.ext41.themes}"/>
|
||||
<then>
|
||||
<local name="theme.dir"/>
|
||||
<property name="theme.dir" location="${app.theme.dir}/${args.themeName}"/>
|
||||
<x-build-theme theme="${theme.dir}" buildsass="true"/>
|
||||
<x-copy-resources/>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
<target name="-after-refresh-theme"/>
|
||||
</project>
|
@ -1,21 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file defines default property values that apply to the "testing" build
|
||||
# environment.
|
||||
#
|
||||
# Please use testing.properties to customize these properties unless you want
|
||||
# your customizations to be for all environments. In that case, you can instead
|
||||
# override these properties in build.properties.
|
||||
#
|
||||
# The properties defined in this file take priority over defaults.properties
|
||||
# but are lower priority than build.properties which in turn is lower priority
|
||||
# than testing.properties.
|
||||
#
|
||||
# IMPORTANT - This file should not be modified by an app as it is overwritten
|
||||
# during each app upgrade.
|
||||
# =============================================================================
|
||||
|
||||
build.options.logger=yes
|
||||
|
||||
build.options.debug=true
|
||||
|
||||
build.css.compress=false
|
@ -1,8 +0,0 @@
|
||||
# =============================================================================
|
||||
# This file provides an override point for default variables defined in
|
||||
# testing.defaults.properties. These properties are only imported when building
|
||||
# for the "testing" environment.
|
||||
#
|
||||
# Properties defined in this file take priority over build.properties but are
|
||||
# only loaded for "testing" builds.
|
||||
# =============================================================================
|
@ -1,75 +0,0 @@
|
||||
<project name="x-watch-impl">
|
||||
|
||||
<target name="-watch-impl">
|
||||
<x-ant-call target="${build.trigger.targets}">
|
||||
<param name="build.id" value="${build.id}"/>
|
||||
<param name="build.name" value="${build.name}"/>
|
||||
</x-ant-call>
|
||||
</target>
|
||||
|
||||
<target name="-watch-compiler">
|
||||
<x-watch compilerRef="${compiler.ref.id}"
|
||||
targets="-watch-impl"
|
||||
webServerRefId="app.web.server"/>
|
||||
</target>
|
||||
|
||||
<target name="-watch-theme-package-css">
|
||||
<x-compass-watch
|
||||
refName="compass-watch"
|
||||
rubyPath="${build.ruby.path}"
|
||||
dir="${compass.working.dir}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
sassdir="${compass.sass.dir}"
|
||||
cssdir="${compass.css.dir}"
|
||||
config="${compass.config.file}"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<macrodef name="x-run-compass-watch">
|
||||
<attribute name="directory"/>
|
||||
<sequential>
|
||||
<x-compass-watch
|
||||
refName="compass-watch"
|
||||
rubyPath="${build.ruby.path}"
|
||||
dir="@{directory}"
|
||||
trace="${compass.compile.trace}"
|
||||
boring="${compass.compile.boring}"
|
||||
force="${compass.compile.force}"
|
||||
fork="true"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<target name="-watch-sass-dir">
|
||||
<x-run-compass-watch directory="${app.sass.dir}"/>
|
||||
</target>
|
||||
|
||||
<target name="-stop-compass-watch">
|
||||
<x-compass-watch refName="compass-watch" stop="true"/>
|
||||
</target>
|
||||
|
||||
<target name="-watch-theme-dir">
|
||||
<local name="watch.sass.dir"/>
|
||||
<property name="watch.sass.dir"
|
||||
value="${app.theme.dir}/${watch.theme.name}/sass"/>
|
||||
<x-run-compass-watch directory="${watch.sass.dir}"/>
|
||||
</target>
|
||||
|
||||
<target name="-before-watch"/>
|
||||
<target name="-watch" depends="-init-web-server">
|
||||
<x-ant-call target="${build.trigger.targets}"/>
|
||||
<x-ant-call target="web-start" unless="skip.web.start">
|
||||
<param name="enable.background.server" value="true"/>
|
||||
</x-ant-call>
|
||||
<x-ant-call target="${build.watcher.targets}">
|
||||
<param name="build.id" value="${build.id}"/>
|
||||
<param name="build.name" value="${build.name}"/>
|
||||
</x-ant-call>
|
||||
<x-ant-call target="web-stop" unless="skip.web.start">
|
||||
<param name="enable.background.server" value="true"/>
|
||||
</x-ant-call>
|
||||
<x-ant-call target="-stop-compass-watch"/>
|
||||
</target>
|
||||
<target name="-after-watch" depends="init"/>
|
||||
</project>
|
@ -0,0 +1,3 @@
|
||||
$accordion-header-color: white;
|
||||
$accordion-header-background-color: $base-color;
|
||||
$accordion-header-over-background-color: $base-color;
|
@ -0,0 +1,177 @@
|
||||
Ext.define('NgcpCsc.view.pages.themeroller.ThemeRoller', {
|
||||
extend: 'Ext.form.Panel',
|
||||
|
||||
xtype: 'themeroller',
|
||||
|
||||
viewModel: 'themeroller',
|
||||
|
||||
controller: 'themeroller',
|
||||
|
||||
title: Ngcp.csc.locales.themeroller.title[localStorage.getItem('languageSelected')],
|
||||
|
||||
scrollable: true,
|
||||
|
||||
items: [{
|
||||
margin: '20 0 20 20',
|
||||
defaults: {
|
||||
bodyPadding: 20,
|
||||
userCls: 'white-box',
|
||||
collapsible: true,
|
||||
collapsed: false,
|
||||
layout: 'responsivecolumn'
|
||||
},
|
||||
items: [{
|
||||
title: Ngcp.csc.locales.themeroller.first_section_title[localStorage.getItem('languageSelected')],
|
||||
items: [{
|
||||
userCls: 'big-50 small-100',
|
||||
items: [{
|
||||
xtype: 'container',
|
||||
defaults: {
|
||||
width: '100%'
|
||||
},
|
||||
items: [{
|
||||
xtype: 'colorfield',
|
||||
fieldLabel: 'Base color',
|
||||
bind: '{basecolor}',
|
||||
listeners: {
|
||||
change: 'applyTheme'
|
||||
}
|
||||
}, {
|
||||
xtype: 'colorselector',
|
||||
hidden: true
|
||||
}]
|
||||
}, {
|
||||
xtype: 'container',
|
||||
defaults: {
|
||||
width: '100%'
|
||||
},
|
||||
items: [{
|
||||
xtype: 'colorfield',
|
||||
fieldLabel: 'Font color',
|
||||
bind: '{fontcolor}',
|
||||
listeners: {
|
||||
change: 'applyTheme'
|
||||
}
|
||||
}, {
|
||||
xtype: 'colorselector',
|
||||
hidden: true
|
||||
}]
|
||||
}, {
|
||||
xtype: 'container',
|
||||
defaults: {
|
||||
width: '100%'
|
||||
},
|
||||
items: [{
|
||||
xtype: 'colorfield',
|
||||
fieldLabel: 'Body bgcolor',
|
||||
bind: '{bodybgcolor}',
|
||||
listeners: {
|
||||
change: 'applyTheme'
|
||||
}
|
||||
}, {
|
||||
xtype: 'colorselector',
|
||||
hidden: true
|
||||
}]
|
||||
}, {
|
||||
layout: 'hbox',
|
||||
margin: '10 0 0 0',
|
||||
defaults: {
|
||||
xtype: 'button',
|
||||
flex: 1
|
||||
},
|
||||
items: [{
|
||||
text: 'reset',
|
||||
handler: 'resetTheme',
|
||||
margin: '0 5 0 0'
|
||||
}, {
|
||||
text: 'save',
|
||||
handler: 'saveTheme'
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
}, {
|
||||
title: Ngcp.csc.locales.themeroller.second_section_title[localStorage.getItem('languageSelected')],
|
||||
items: [{
|
||||
userCls: 'big-50 small-100',
|
||||
defaults: {
|
||||
width: '100%',
|
||||
listeners: {
|
||||
change: 'applyTheme'
|
||||
}
|
||||
},
|
||||
items: [{
|
||||
xtype: 'textfield',
|
||||
fieldLabel: Ngcp.csc.locales.themeroller.fontfamily[localStorage.getItem('languageSelected')],
|
||||
bind: '{fontfamily}'
|
||||
}, {
|
||||
xtype: 'combo',
|
||||
fieldLabel: Ngcp.csc.locales.themeroller.fontweight[localStorage.getItem('languageSelected')],
|
||||
bind: '{fontweight}',
|
||||
editable: false,
|
||||
store: Ext.create('Ext.data.Store', {
|
||||
fields: ['id'],
|
||||
data: [{
|
||||
"id": "normal"
|
||||
}, {
|
||||
"id": "bold"
|
||||
}]
|
||||
}),
|
||||
valueField: 'id',
|
||||
displayField: 'id'
|
||||
}, {
|
||||
xtype: 'numberfield',
|
||||
minValue: 6,
|
||||
editable: false,
|
||||
bind: '{fontsize}',
|
||||
fieldLabel: Ngcp.csc.locales.themeroller.fontsize[localStorage.getItem('languageSelected')]
|
||||
}, {
|
||||
layout: 'hbox',
|
||||
margin: '10 0 0 0',
|
||||
defaults: {
|
||||
xtype: 'button',
|
||||
flex: 1
|
||||
},
|
||||
items: [{
|
||||
text: 'reset',
|
||||
handler: 'resetTheme',
|
||||
margin: '0 5 0 0'
|
||||
}, {
|
||||
text: 'save',
|
||||
handler: 'saveTheme'
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
}, {
|
||||
title: Ngcp.csc.locales.themeroller.third_section_title[localStorage.getItem('languageSelected')],
|
||||
items: [{
|
||||
userCls: 'big-50 small-100',
|
||||
defaults: {
|
||||
width: '100%'
|
||||
},
|
||||
items: [{
|
||||
xtype: 'filefield',
|
||||
fieldLabel: Ngcp.csc.locales.themeroller.logo[localStorage.getItem('languageSelected')],
|
||||
reference:'logoField',
|
||||
listeners: {
|
||||
change: 'toggleLogo'
|
||||
}
|
||||
}, {
|
||||
layout: 'hbox',
|
||||
margin: '10 0 0 0',
|
||||
defaults: {
|
||||
xtype: 'button',
|
||||
flex: 1
|
||||
},
|
||||
items: [{
|
||||
text: 'reset',
|
||||
handler: 'resetTheme',
|
||||
margin: '0 5 0 0'
|
||||
}, {
|
||||
text: 'save',
|
||||
handler: 'saveTheme'
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
});
|
@ -0,0 +1,66 @@
|
||||
Ext.define('NgcpCsc.view.pages.themeroller.ThemeRollerController', {
|
||||
extend: 'Ext.app.ViewController',
|
||||
|
||||
alias: 'controller.themeroller',
|
||||
|
||||
applyTheme: function() {
|
||||
var vm = this.getViewModel();
|
||||
// defer is needded becuse binding is slower than change listener callback
|
||||
Ext.Function.defer(function() {
|
||||
Fashion.css.setVariables({
|
||||
'base-color': '#' + vm.get('basecolor'),
|
||||
'color': '#' + vm.get('fontcolor'),
|
||||
'body-background-color': '#' + vm.get('bodybgcolor'),
|
||||
'font-family': vm.get('fontfamily'),
|
||||
'font-weight': vm.get('fontweight'),
|
||||
'font-size': vm.get('fontsize') + 'px',
|
||||
'form-field-font-size': vm.get('fontsize') + 'px'
|
||||
});
|
||||
this.getView().updateLayout()
|
||||
}, 300, this);
|
||||
},
|
||||
|
||||
resetTheme: function() {
|
||||
var vm = this.getViewModel();
|
||||
var logoCont = Ext.getCmp('logoContainer');
|
||||
var logoField = this.lookupReference('logoField');
|
||||
|
||||
// TODO use model and model.reset()
|
||||
vm.setData({
|
||||
basecolor: '66A648',
|
||||
fontcolor: '000',
|
||||
bodybgcolor: 'fff',
|
||||
fontfamily: 'Open Sans, Helvetica Neue',
|
||||
fontweight: 'normal',
|
||||
fontsize: '13'
|
||||
});
|
||||
|
||||
logoCont.removeAll();
|
||||
logoField.reset();
|
||||
this.applyTheme();
|
||||
},
|
||||
|
||||
toggleLogo: function(field) {
|
||||
|
||||
var logoCont = Ext.getCmp('logoContainer');
|
||||
|
||||
if (field && field.getValue()) {
|
||||
var reader = new FileReader();
|
||||
var file = field.getEl().down('input[type=file]').dom.files[0];
|
||||
|
||||
reader.onload = function(e) {
|
||||
logoCont.removeAll();
|
||||
logoCont.add(Ext.create('Ext.Img', {
|
||||
src: e.target.result
|
||||
}));
|
||||
}
|
||||
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
},
|
||||
|
||||
saveTheme: function() {
|
||||
this.fireEvent('showmessage', true, Ngcp.csc.locales.common.save_success[localStorage.getItem('languageSelected')]);
|
||||
}
|
||||
|
||||
});
|
@ -0,0 +1,12 @@
|
||||
Ext.define('NgcpCsc.view.pages.themeroller.ThemeRollerModel', {
|
||||
extend: 'Ext.app.ViewModel',
|
||||
alias: 'viewmodel.themeroller',
|
||||
data: {
|
||||
basecolor: '66A648',
|
||||
fontcolor: '000',
|
||||
bodybgcolor: 'fff',
|
||||
fontfamily: 'Open Sans, Helvetica Neue',
|
||||
fontweight: 'normal',
|
||||
fontsize: '13'
|
||||
}
|
||||
});
|
@ -1 +1,18 @@
|
||||
$base-color: rgb(102, 166, 72);
|
||||
// using CSS Variables feature
|
||||
// http://docs.sencha.com/extjs/6.2.1/guides/whats_new/whats_new.html#whats_new-_-whats_new_-_css_variables
|
||||
|
||||
$base-color: dynamic(rgb(102, 166, 72));
|
||||
$body-background-color: dynamic(white) ;
|
||||
$color: dynamic(black);
|
||||
$font-family: dynamic('Open Sans', 'Helvetica Neue');
|
||||
$font-size: dynamic(13px);
|
||||
$font-weight: dynamic('normal');
|
||||
|
||||
html {
|
||||
--base-color: export;
|
||||
--body-background-color: export;
|
||||
--color: export;
|
||||
--font-family: export;
|
||||
--font-size: export;
|
||||
--font-weight: export;
|
||||
}
|
||||
|
Loading…
Reference in new issue