diff --git a/Core/FormBrowser.cs b/Core/FormBrowser.cs index b8b6b9f4..1729e3fc 100644 --- a/Core/FormBrowser.cs +++ b/Core/FormBrowser.cs @@ -112,6 +112,7 @@ private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){ if (plugins.HasAnyPlugin(PluginEnvironment.Browser)){ ScriptLoader.ExecuteFile(e.Frame, PluginManager.PluginBrowserScriptFile); + ScriptLoader.ExecuteFile(e.Frame, PluginManager.PluginGlobalScriptFile); plugins.ExecutePlugins(e.Frame, PluginEnvironment.Browser, true); } } diff --git a/Core/FormNotification.cs b/Core/FormNotification.cs index 57f1e378..d7e9e871 100644 --- a/Core/FormNotification.cs +++ b/Core/FormNotification.cs @@ -196,6 +196,7 @@ private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e){ if (plugins.HasAnyPlugin(PluginEnvironment.Notification)){ ScriptLoader.ExecuteScript(e.Frame, pluginJS, PluginScriptIdentifier); + ScriptLoader.ExecuteFile(e.Frame, PluginManager.PluginGlobalScriptFile); plugins.ExecutePlugins(e.Frame, PluginEnvironment.Notification, false); } } diff --git a/Plugins/PluginManager.cs b/Plugins/PluginManager.cs index 9d7ddfa5..531b241f 100644 --- a/Plugins/PluginManager.cs +++ b/Plugins/PluginManager.cs @@ -10,6 +10,7 @@ namespace TweetDck.Plugins{ class PluginManager{ public const string PluginBrowserScriptFile = "plugins.browser.js"; public const string PluginNotificationScriptFile = "plugins.notification.js"; + public const string PluginGlobalScriptFile = "plugins.js"; public string PathOfficialPlugins { get { return Path.Combine(rootPath, "official"); } } public string PathCustomPlugins { get { return Path.Combine(rootPath, "user"); } } diff --git a/Resources/Scripts/plugins.js b/Resources/Scripts/plugins.js new file mode 100644 index 00000000..7a720412 --- /dev/null +++ b/Resources/Scripts/plugins.js @@ -0,0 +1,26 @@ +(function($TDP){ + // + // Block: Setup a simple JavaScript object configuration loader. + // + window.TDPF_loadConfigurationFile = function(pluginObject, fileName, onSuccess, onFailure){ + $TDP.readFile(pluginObject.$token, fileName, true).then(contents => { + var obj; + + try{ + obj = eval("("+contents+")"); + }catch(err){ + if (!(onFailure && onFailure(err.message))){ + alert("Problem loading '"+fileName+"' file for '"+pluginObject.$id+"' plugin, the JavaScript syntax is invalid: "+err.message); + } + + return; + } + + onSuccess && onSuccess(obj); + }).catch(err => { + if (!(onFailure && onFailure(err))){ + alert("Problem loading '"+fileName+"' file for '"+pluginObject.$id+"' plugin: "+err); + } + }); + }; +})($TDP); \ No newline at end of file