@@ -89,12 +89,12 @@ var KSMainContainer = Class.create(KSBase, {
this . _pageName = "MainContainer.html" ;
Object . getPrototypeOf ( this ) . contentManager = null ;
Object . getPrototypeOf ( this ) . userScriptsManagerForm = null ;
Object . getPrototypeOf ( this ) . globalSettingsForm = null ;
Object . getPrototypeOf ( this ) . newUserScriptForm = null ;
Object . getPrototypeOf ( this ) . userScriptSettingsForm = null ;
Object . getPrototypeOf ( this ) . aboutProjectForm = null ;
this . contentManager = null ;
this . userScriptsManagerForm = null ;
this . globalSettingsForm = null ;
this . newUserScriptForm = null ;
this . userScriptSettingsForm = null ;
this . aboutProjectForm = null ;
$super ( ) ;
} ,
@@ -226,7 +226,7 @@ var KSContentManager = Class.create(_Utils, {
}
} ) ;
KSContentManager . regisForms = [ ] ;
KSContentManager . regisForms = new Array ( ) ;
KSContentManager . currentContentId = 'userscript-manager' ;
KSContentManager . previousContentId = null ;
@@ -550,8 +550,8 @@ var KSUserScriptsManagerForm = Class.create(KSContentManager, {
var _metaId = this . _extractId ( _id ) ;
Object . getPrototypeOf ( this ) . _db = db ;
Object . getPrototypeOf ( this ) . _metaId = _metaId ;
this . _db = db ;
this . _metaId = _metaId ;
db . fetchUserScriptFileIdByMetaId ( _metaId , this . _dbq_onFetchUserScriptFileId , this ) ;
} ,
@@ -568,6 +568,7 @@ var KSUserScriptsManagerForm = Class.create(KSContentManager, {
try {
db . deleteUserScriptFile ( _usId , _this . _dbq_onDeleteUserScriptFile , _this ) ;
db . deleteRequireFilesByUserScriptId ( _usId ) ;
} catch ( e ) {
_this . showFailureAlert ( e . getMessage ( ) ) ;
}
@@ -641,7 +642,7 @@ var KSNewUserScriptForm = Class.create(KSContentManager, {
$super ( this . _formIdObj ) ;
// CodeMirror2 ~ v0.2
//Object.getPrototypeOf( this) .CMEditor = null;
//this.CMEditor = null;
this . _textareaId = this . _formIdObj . formBaseId + '-script' ;
} ,
@@ -686,18 +687,23 @@ var KSNewUserScriptForm = Class.create(KSContentManager, {
var _reqs = ks . gmmd . getRequires ( ) ;
var _rnat = ks . gmmd . getRunAt ( ) ;
if ( _name . length == 0 && _space . length == 0 ) {
throw new KSGMException ( "KitScript needs a @name and @namespace in the metadata block." ) ;
}
return [ _name , _space , _desc , _incs . join ( ',' ) , _excs . join ( ',' ) , _reqs . join ( ',' ) , _rnat ] ;
} ,
_storeUserScript : function ( name , space , desc , includes , excludes , requires , runAt , code ) {
Object . getPrototypeOf ( this ) . _fieldName = 'LastInsertId' ;
Object . getPrototypeOf ( this ) . _name = name ;
Object . getPrototypeOf ( this ) . _space = space ;
Object . getPrototypeOf ( this ) . _desc = desc ;
Object . getPrototypeOf ( this ) . _includes = includes ;
Object . getPrototypeOf ( this ) . _excludes = excludes ;
Object . getPrototypeOf ( this ) . _requires = requires ;
Object . getPrototypeOf ( this ) . _runAt = runAt ;
this . _fieldName = 'LastInsertId' ;
this . _name = name ;
this . _space = space ;
this . _desc = desc ;
this . _includes = includes ;
this . _excludes = excludes ;
this . _requires = requires ;
this . _runAt = runAt ;
@@ -773,6 +779,8 @@ var KSNewUserScriptForm = Class.create(KSContentManager, {
delete _this . _excludes ;
delete _this . _requires ;
delete _this . _runAt ;
ks . loader . reload ( ) ;
} ,
showSuccessAlert : function ( strMsg ) {
@@ -1154,7 +1162,7 @@ var KSUserScriptSettingsForm = Class.create(KSContentManager, {
} ,
_getUserExclusions : function ( ) {
var _strs = [ ] ;
var _strs = new Array ( ) ;
this . $ ( '#ks-uss-us-excl-list option' ) . each ( function ( idx , el ) {
@@ -1166,7 +1174,7 @@ var KSUserScriptSettingsForm = Class.create(KSContentManager, {
} ,
_getUserInclusions : function ( ) {
var _strs = [ ] ;
var _strs = new Array ( ) ;
this . $ ( '#ks-uss-us-incl-list option' ) . each ( function ( idx , el ) {
@@ -1208,9 +1216,13 @@ var KSUserScriptSettingsForm = Class.create(KSContentManager, {
var _usId = _this . getLoadedScriptId ( ) ;
var _usStr = _this . getUserScript ( ) ;
ks . gmmd . loadScript ( _usStr ) ;
var _rec = _this . _getUserScriptHeaderValues ( ) ;
try {
ks . gmmd . loadScript ( _usStr ) ;
var _rec = _this . _getUserScriptHeaderValues ( ) ;
} catch ( e ) {
_this . showFailureAlert ( e . getMessage ( ) ) ;
}
_this . updateUserScriptMetadata ( _rec [ 0 ] , _rec [ 1 ] , _rec [ 2 ] , _rec [ 3 ] , _rec [ 4 ] , _rec [ 5 ] , _isEnabled , _rec [ 6 ] ) ;
} else {
@@ -1227,6 +1239,11 @@ var KSUserScriptSettingsForm = Class.create(KSContentManager, {
var _reqs = ks . gmmd . getRequires ( ) ;
var _rnat = ks . gmmd . getRunAt ( ) ;
if ( _name . length == 0 && _space . length == 0 ) {
throw new KSGMException ( "KitScript needs a @name and @namespace in the metadata block." ) ;
}
return [ _name , _space , _desc , _incs . join ( ',' ) , _excs . join ( ',' ) , _reqs . join ( ',' ) , _rnat ] ;
} ,
updateUserScriptMetadata : function ( name , space , desc , includes , excludes , requires , disabled , runAt ) {
@@ -1273,7 +1290,7 @@ var KSUserScriptSettingsForm = Class.create(KSContentManager, {
} ,
reacquireRequireFiles : function ( requires ) {
Object . getPrototypeOf ( this ) . _requires = requires ;
this . _requires = requires ;
var _usId = this . getLoadedScriptId ( ) ;
@@ -1310,6 +1327,8 @@ var KSUserScriptSettingsForm = Class.create(KSContentManager, {
delete transact . objInstance ;
_this . _l ( "Require file inserted." ) ;
ks . loader . reload ( ) ;
} ,
@@ -1431,12 +1450,16 @@ var KSAboutProjectForm = Class.create(KSContentManager, {
var KSLoaderTreeNode = {
metaId : 0 ,
fileId : 0 ,
u_excludes : [ ] ,
u_includes : [ ] ,
us_excludes : [ ] ,
us_includes : [ ] ,
us_requires : [ ] ,
us_run_at : ""
userscript : "" ,
u_excludes : new Array ( ) ,
u_includes : new Array ( ) ,
us_excludes : new Array ( ) ,
us_includes : new Array ( ) ,
us_requires : new Array ( ) ,
us_run_at : true ,
us_injection_urls : new Array ( ) ,
req_injection_urls : new Array ( ) ,
disabled : false
} ;
@@ -1453,23 +1476,51 @@ var KSLoader = Class.create(_Utils, {
this . _usTree = new Array ( ) ;
this . _globExcls = new Array ( ) ;
} ,
loadData : function ( ) {
isValidScheme : function ( url ) {
if ( url . trim ( ) . length > 0 ) {
var _scheme = url . substr ( 0 , url . indexOf ( ':' ) ) ;
switch ( _scheme ) {
//case 'data': // not valid in for safari.extension.addContentScript
//case 'ftp': // not valid in for safari.extension.addContentScript
case 'http' :
case 'https' :
return true ;
break ;
default :
return false ;
}
}
} ,
isUserScript : function ( url ) {
if ( / ^ .* \. user\. js$ / gi. test ( url ) === true ) {
//this._a(url+": isUserScript() == true");
return true ;
}
} ,
load : function ( ) {
if ( ks . isEnabled ( ) === true ) {
this . _usTree = new Array ( ) ;
this . _globExcls = new Array ( ) ;
this . loadUserScriptsMetadata ( ) ;
this . loadGlobalExcludes ( ) ;
this . _loadDataAndInject ( ) ;
KSLoader . triggeredIntegrateWatch ( ) ;
}
} ,
dumpData : function ( ) {
delete this . _usTree ;
delete this . _globExcls ;
this . _usTree = new Array ( ) ;
this . _globExcls = new Array ( ) ;
} ,
loadUserScriptsMetadata : function ( ) {
_loadDataAndInject : function ( ) {
try {
db . fetchAllUserScriptsMetadata ( 0 , 1000 , this . _dbq_onFetchUserScriptsMetadata , this ) ;
@@ -1492,127 +1543,171 @@ var KSLoader = Class.create(_Utils, {
_node . fileId = _row [ 'userscript_id' ] ;
_node . u_excludes = _row [ 'user_excludes' ] . split ( ',' ) ;
_node . u_includes = _row [ 'user_includes' ] . split ( ',' ) ;
_node . us_requires = new Array ( ) ;
_node . us_excludes = _row [ 'excludes' ] . split ( ',' ) ;
_node . us_includes = _row [ 'includes' ] . split ( ',' ) ;
_node . us_requires = _row [ 'requires' ] . split ( ',' ) ;
_node . us_run_at = _row [ 'run_at' ] ;
_node . disabled = ( parseInt ( _row [ 'disabled' ] ) == 0 ?false :true )
if ( _row [ 'run_at' ] == KSGreasemonkeyMetadata . RUNAT_START )
_node . us_run_at = false ;
else
_node . us_run_at = true ;
_this . _usTree . push ( _node ) ;
db . fetchUserScriptFileByMetaId ( _row [ 'id' ] , _this . _dbq_onFetchUserScriptFile , _this ) ;
}
} ,
loadGlobalExcludes : function ( ) {
try {
db . fetchAllGlobalExcludes ( 0 , 1000 , this . _dbq_onFetchGlobalExcludes , this ) ;
} catch ( e ) {
alert ( "KitScript Loader Error: Couldn't load global excludes (" + e . getMessage ( ) + ")." ) ;
}
} ,
_dbq_onFetchGlobalExcludes : function ( transact , resultSet ) {
_dbq_onFetchUserScriptFile : function ( transact , resultSet ) {
var _this = transact . objInstance ;
delete transact . objInstance ;
for ( var i = 0 ; i < resultSet . rows . length ; i ++ ) {
var _row = resultSet . rows . item ( 0 ) ;
for ( var i = 0 ; i < _this . _usTree . length ; i ++ ) {
var _row = resultSet . rows . item ( i ) ;
var _ut = _this . _usTree [ i ] ;
_this . _globExcls . push ( _row [ 'url' ] ) ;
if ( _ut . fileId == _row [ 'id' ] ) {
_this . _usTree [ i ] . userscript = _row [ 'userscript' ] ;
break ;
}
}
db . fetchRequireFilesByUserScriptId ( _row [ 'id' ] , _this . _dbq_onFetchRequireFiles , _this ) ;
} ,
isValidScheme : function ( url ) {
_dbq_onFetchRequireFiles : function ( transact , resultSet ) {
if ( url . trim ( ) . length > 0 ) {
var _this = transact . objInstance ;
delete transact . objInstance ;
if ( resultSet . rows . length > 0 ) {
var _scheme = url . substr ( 0 , url . indexOf ( ':' ) ) ;
switch ( _scheme ) {
case 'data' :
case 'ftp' :
case 'http' :
case 'https' :
return true ;
var i = 0 ;
var _row = resultSet . rows . item ( i ) ;
for ( var u = 0 ; u < _this . _usTree . length ; u ++ ) {
var _ut = _this . _usTree [ u ] ;
if ( parseInt ( _row [ 'userscript_id' ] ) == parseInt ( _ut . fileId ) ) {
do {
_row = resultSet . rows . item ( i ) ;
_this . _usTree [ u ] . us_requires . push ( _row [ 'file' ] ) ;
i ++ ;
} while ( i < resultSet . rows . length ) ;
break ;
default :
return false ;
}
}
}
try {
db . fetchAllGlobalExcludes ( 0 , 1000 , _this . _dbq_onFetchGlobalExcludes , _this ) ;
} catch ( e ) {
alert ( "KitScript Loader Error: Couldn't load global excludes (" + e . getMessage ( ) + ")." ) ;
}
} ,
/* For Loading User Scripts Locations ~ v0.2
isUserScript: function (url) {
_dbq_onFetchGlobalExcludes : function ( transact , resultSet ) {
if (/^.*user.js$/gi.test(url) === true) {
var _this = transact . objInstance ;
delete transact . objInstance ;
for ( var i = 0 ; i < resultSet . rows . length ; i ++ ) {
var _row = resultSet . rows . item ( i ) ;
_this . _globExcls . push ( _row [ 'url' ] ) ;
}
},*/
_translateGlobbingOperator : function ( pattern ) {
//var _re = /[\]\.]\*/
KSLoader . _lastFetchRun = Date . now ( ) ;
} ,
integrate : function ( url ) {
alert ( "_integrate" ) ;
if ( ks . isEnabled ( ) === true ) {
// check if url is blocked by global layer
for ( var g = 0 ; g < this . _globExcls . length ; g ++ ) {
var _re = new RegExp ( this . _globExcls [ g ] ) ;
if ( _re . test ( url ) === true ) {
return false ;
}
}
// Parse usTree: ~= Must Be Recursive =~
/*
// Parse usTree To Inject Scripts By Metadata Entry
for ( var ut = 0 ; ut < this . _usTree . length ; ut ++ ) {
var _ut = this . _usTree [ ut ] ;
for (var ue=0; ue<_ut.u_excludes.length; ue++) {
var _ue = _ut.u_excludes[ue];
var _reUE = new RegExp(_ue);
if (_reUE.test(url) === true) {
return false;
if ( _ut . disabled === false ) {
// Blacklist
var _bl = this . _globExcls ;
_bl . push ( _ut . u_excludes ) ;
_bl . push ( _ut . us_excludes ) ;
// Whitelist
var _wl = _ut . u_includes ;
_wl . push ( _ut . us_includes ) ;
// Run at
var _ra = _ut . us_run_at ;
// Inject Require Files
for ( var rf = 0 ; rf < _ut . us_requires . length ; rf ++ ) {
var _rf = _ut . us_requires [ rf ] ;
var _injurl = safari . extension . addContentScript ( KSSHF_unblobize ( _rf ) , _wl , _bl , false ) ;
if ( _injurl !== null )
this . _usTree [ ut ] . req_injection_urls . push ( _injurl ) ;
}
var _injurl = safari . extension . addContentScript ( KSSHF_unblobize ( _ut . userscript ) , _wl , _bl , _ut . us_run_at ) ;
if ( _injurl !== null )
this . _usTree [ ut ] . us_injection_urls . push ( _injurl ) ;
}
}
*/
Object . getPrototypeOf ( this ) . _fileId = this . _usTree [ 0 ] . fileId ;
Object . getPrototypeOf ( this ) . _incls = this . _usTree [ 0 ] . us_includes ;
Object . getPrototypeOf ( this ) . _excls = this . _usTree [ 0 ] . us_excludes ;
if ( KSGreasemonkeyMetadata . RUNAT_START == this . _usTree [ 0 ] . us_run_at )
Object . getPrototypeOf ( this ) . _runAtEnd = false ;
else
Object . getPrototypeOf ( this ) . _runAtEnd = true ;
}
} ,
_dbq_onFetchUserScriptFile : function ( transact , resultSet ) {
_disintegrate : function ( ) {
var _this = transact . objInstance ;
delete transact . objInstance ;
//safari.extension.removeContentScripts() ;
//this.safext.removeContentScripts() ;
var _row = resultSet . rows . item ( 0 ) ;
// v0.4
//safari.extension.removeContentStyleSheets();
} ,
unload : function ( ) {
db . fetchUserScriptFileByMetaId ( this . _usTree [ 0 ] . metaId , this . _dbq_onFetchUserScriptFile , this ) ;
safari . extension . addContentScript ( KSSHF_unblobize ( _row [ 'userscript' ] ) , [ ".*" ] , [ ] , true ) ;
this . dumpData ( ) ;
safari . extension . removeContentScripts ( ) ;
} ,
reload : function ( ) {
this . unload ( ) ;
this . load ( ) ;
}
} ) ;
KSLoader . _lastFetchRun = - 1 ;
KSLoader . _lastWatchRun = - 1 ;
KSLoader . triggeredIntegrateWatch = function ( ) {
if ( KSLoader . _lastWatchRun - KSLoader . _lastFetchRun >= 500 ) {
ks . loader . integrate ( ) ;
} else {
KSLoader . _lastWatchRun = Date . now ( ) ;
window . setTimeout ( KSLoader . triggeredIntegrateWatch , 250 ) ;
}
}
@@ -1627,9 +1722,9 @@ var KitScript = Class.create(_Utils, {
this . _isEnabled = true ;
Object . getPrototypeOf ( this ) . gmmd = new KSGreasemonkeyMetadata ( ) ;
this . gmmd = new KSGreasemonkeyMetadata ( ) ;
Object . getPrototypeOf ( this ) . mainContainer = new KSMainContainer ( ) ;
this . mainContainer = new KSMainContainer ( ) ;
this . mainContainer . contentManager = new KSContentManager ( ) ;
this . mainContainer . globalSettingsForm = new KSGlobalSettingsForm ( ) ;
@@ -1638,7 +1733,7 @@ var KitScript = Class.create(_Utils, {
this . mainContainer . userScriptSettingsForm = new KSUserScriptSettingsForm ( ) ;
this . mainContainer . aboutProjectForm = new KSAboutProjectForm ( ) ;
Object . getPrototypeOf ( this ) . loader = new KSLoader ( ) ;
this . loader = new KSLoader ( ) ;
} ,
isEnabled : function ( ) {
@@ -1664,7 +1759,7 @@ var KitScript = Class.create(_Utils, {
_this . _isEnabled = true ;
_this . showAlertOnCurrentForm ( "KitScript is now enabled." ) ;
ks . loader . loadData ( ) ;
ks . loader . load ( ) ;
} ,
setDisable : function ( ) {
@@ -1686,6 +1781,7 @@ var KitScript = Class.create(_Utils, {
_this . showAlertOnCurrentForm ( "KitScript is now disabled." ) ;
ks . loader . dumpData ( ) ;
safari . extension . removeContentScripts ( ) ;
} ,
showAlertOnCurrentForm : function ( strMsg ) {
@@ -1718,13 +1814,12 @@ var KitScript = Class.create(_Utils, {
_this . _isEnabled = true ;
_this . $ ( '#toggle-enable-dropdown' ) . text ( "KitScript is Enabled!" ) ;
ks . loader . loadData ( ) ;
ks . loader . load ( ) ;
} else {
_this . _isEnabled = false ;
_this . $ ( '#toggle-enable-dropdown' ) . text ( "KitScript is Disabled!" ) ;
ks . loader . dumpData ( ) ;
}
}
}
@@ -1766,14 +1861,11 @@ function KSSEFH_NavigateHandler(event) {
if ( ks . loader . isValidScheme ( event . target . url ) === true ) {
// To Load User Scripts From Location ~ v0.2
// if (ks.loader.isUserScript(event.target.url)) {
if ( ks . loader . isUserScript ( event . target . url ) ) {
// Ask to add to manager ~ v0.2
//} else {
// Process if URL is in includes
ks . loader . integrate ( event . target . url ) ;
//}
//ks.dialog.newUserScriptDialog.open();
}
}
}