I had hoped that Mozilla would continue the CAPS. Maybe it is later version, perhaps 32, when they bowed to pressure and put it back into the code. I have a fallback position in place. It is ugly, but better than nothing.
I just copied my whitelist sites into the pref that JS_Flag uses.
NOTE! That copy is all you can do while the right-click problem remains because the controls are in the DocumentSave menu.
JS_Flag.kmm
# K-Meleon Macros (http://kmeleon.sourceforge.net/wiki/index.php?id=MacroLanguage2)
#
# ---------- JS_Flag.kmm
# ---------- "Allow JavaScript for sites listed in a preference setting"
#
# Dependencies : main.kmm
# Resources : panorama image JS_Flag.bmp and JS_Flag_lg in SKINS\DEFAULT
# Preferences : "javascript.enabled", "k-meleon_fjs.javascript_sites"
# Version : 0.9 2014_05_02
# -----------------------------------------------------------------------------------------------
# Note: Javascript enabled flag is red for 'not safe'. If enabled equal false, the flag is green
_JS_Flag_RunCode {
$_JSF_ToolbarName = "JS_Flag" ;
$_JSF_BSize = "16" ;
$_JSF_LastItem = "" ;
$_JSF_AddBarTag = $_JSF_ToolbarName .",". $_JSF_BSize .",". $_JSF_BSize .",". $_JSF_LastItem ;
pluginmsg(toolbars, "AddToolbar", $_JSF_AddBarTag);
$_JSF_ButtonName = "FlipJS" ;
$_JSF_Command = "macros(JS_Flag_Toggle)" ;
$_JSF_MenuName = "" ;
$_JSF_tipText = "Flip JavaScript on/off";
$_JSF_ImageHot = "JS_Flag.bmp[2]" ;
$_JSF_ImageCold = "JS_Flag.bmp[1]" ;
$_JSF_ImageDead = "JS_Flag.bmp[3]" ;
$_JSF_AddButtonTag = $_JSF_ToolbarName.",".$_JSF_ButtonName.",".$_JSF_Command.",".$_JSF_MenuName.",".$_JSF_tipText.",".$_JSF_BSize.",".$_JSF_BSize.",".$_JSF_ImageHot.",".$_JSF_ImageCold.",".$_JSF_ImageDead.",".$_JSF_LastItem ;
pluginmsg(toolbars, "AddButton", $_JSF_AddButtonTag);
## --- SYNC BUTTON TO PREF FOR DEFAULT JS --- ##
$_JSF_ImageType = "COLD" ;
$_JSF_Current = getpref( BOOL, "javascript.enabled");
if ($_JSF_Current == true ) {
## 1 equals green - 0 equals red
$_JSF_ImageCold = "JS_Flag.bmp[0]"; } else {
$_JSF_ImageCold = "JS_Flag.bmp[1]" ;
}
$_JSF_SyncButtonTag = $_JSF_ToolbarName.",".$_JSF_Command.",".$_JSF_ImageType.",".$_JSF_ImageCold ;
pluginmsg(toolbars, "SetButtonImage", $_JSF_SyncButtonTag);
}
JS_Flag_Toggle {
togglepref( BOOL, "javascript.enabled");
$_JSF_ImageType = "COLD" ;
$_JSF_Current = getpref( BOOL, "javascript.enabled");
if ($_JSF_Current == true ) {
## 1 equals green - 0 equals red
$_JSF_ImageCold = "JS_Flag.bmp[0]"; } else {
$_JSF_ImageCold = "JS_Flag.bmp[1]" ;
}
$_JSF_ToggleButtonTag = $_JSF_ToolbarName.",".$_JSF_Command.",".$_JSF_ImageType.",".$_JSF_ImageCold ;
pluginmsg(toolbars, "SetButtonImage", $_JSF_ToggleButtonTag);
}
_JS_Flag_Post {
$_JSF_CurDomain = hostname( $URL );
if ( getpref( BOOL, "javascript.enabled") == false ) {
$_JSF_Allow = getpref(STRING,"k-meleon_fjs.javascript_sites");
if ( index($_JSF_Allow, $_JSF_CurDomain) != -1 ) {
macros("JS_Flag_Toggle");
id(ID_NAV_RELOAD);
statusbar("Reloaded with JavaScript enabled");
}
}
index($_JSF_CurDomain, "about:") == -1 ? $JSFlag =false : $JSFlag =true ;
}
_JS_Flag_Pre {
getpref( BOOL, "javascript.enabled") ? macros("JS_Flag_Toggle") :0;
}
_JS_Flag_AddSite {
$_JSF_CurDomain = hostname( $URL );
menugrayed = $JSFlag ;
$_JSF_Allow = getpref(STRING,"k-meleon_fjs.javascript_sites");
if ( index($_JSF_Allow, $_JSF_CurDomain) == -1 ) {
$_JSF_Allow = $_JSF_Allow. " " . $_JSF_CurDomain ;
setpref(STRING,"k-meleon_fjs.javascript_sites", $_JSF_Allow);
alert($_JSF_CurDomain, _("Domain Added"), INFO);
} else {
alert($_JSF_CurDomain, _("Domain already in list"), INFO);
}
}
_JS_Flag_RemvSite {
$_JSF_CurDomain = hostname( $URL );
menugrayed = $JSFlag ;
$_JSF_Allow = getpref(STRING,"k-meleon_fjs.javascript_sites");
if ( index($_JSF_Allow, $_JSF_CurDomain) == -1 ) {
alert($_JSF_CurDomain, _("Domain is not in list"), INFO);
} else { # Substitutes the string s for each substring matching the string r in the string t,
$_JSF_Allow = gsub( $_JSF_CurDomain, "", $_JSF_Allow );
$_JSF_Allow = gsub( " ", " ", $_JSF_Allow ); ## catch any double spaces - change to single
setpref(STRING,"k-meleon_fjs.javascript_sites", $_JSF_Allow);
alert($_JSF_Allow, "This domain removed", INFO);
}
}
_JS_Flag_SitesList {
$_JSF_Allow = getpref(STRING,"k-meleon_fjs.javascript_sites");
alert($_JSF_Allow, _("Sites in the 'Allow' list for Javascript"), INFO);
## there is a limit as to how many sites will display in an 'alert'.
}
_JS_Flag_BuildMenu {
$_JS_Flag_popm = _("JavaScript required sites") ;
setmenu("DocumentSave",popup,$_JS_Flag_popm,0);
setmenu($_JS_Flag_popm, macro,_("Add Current Domain"),_JS_Flag_AddSite,0);
setmenu($_JS_Flag_popm, macro,_("Remove Current Domain"),_JS_Flag_RemvSite,1);
setmenu($_JS_Flag_popm, macro,_("Review Domain list"),_JS_Flag_SitesList,2);
}
#------------------------------------------------------------------
$OnInit=$OnInit."_JS_Flag_BuildMenu;";
$OnLoad=$OnLoad."_JS_Flag_Post;";
$OnSetup=$OnSetup."_JS_Flag_RunCode;";
$OnStartup=$OnStartup."_JS_Flag_Pre;";
$macroModules=$macroModules."JS_Flag;";