Greasy Fork is available in English.

WM Sidekick Docking Object

This is the docking object which is created under the WM version 4.x script

אין להתקין סקריפט זה ישירות. זוהי ספריה עבור סקריפטים אחרים // @require https://update.greatest.deepsurf.us/scripts/6906/27574/WM%20Sidekick%20Docking%20Object.js

  1. // ==UserScript==
  2. // @name WM Sidekick Docking Object
  3. // @namespace MerricksdadWMSidekickDockingObject
  4. // @description This is the docking object which is created under the WM version 4.x script
  5. // @license http://creativecommons.org/licenses/by-nc-nd/3.0/us/
  6. // @version 4.0.0.0
  7. // @copyright Charlie Ewing except where noted
  8. // ==/UserScript==
  9.  
  10. //this script requires some functions in the WM Common Library
  11. //this script needs access to a pre-defined JSON object
  12.  
  13.  
  14. (function(){
  15.  
  16. //***************************************************************************************************************************************
  17. //***** Sidekick Docking Object
  18. //***************************************************************************************************************************************
  19. WM.dock = {
  20. //restructure menu to append appID before every object
  21. fixMenu: function(menu,app){try{
  22. var ret={};
  23. //for each object in menu
  24. for (var o in menu){
  25. //WM.message(o);
  26. ret[app+o]=menu[o];
  27.  
  28. //fix button functions and arrays to be prepended by the appID of that sidekick
  29. var t=menu[o]["type"];
  30. switch(t){
  31. case "button_highlight":
  32. case "button_selectmulti":
  33. case "button_selectprefix":
  34.  
  35. //fix elements in the clearfirst array
  36. if (menu[o]["clearfirst"]){
  37. for (var i=0,len=ret[app+o]["clearfirst"].length;i<len;i++){
  38. ret[app+o]["clearfirst"][i] = app+ret[app+o]["clearfirst"][i];
  39. }
  40. }
  41.  
  42. //fix elements in the options array
  43. if (menu[o]["options"]){
  44. for (var i=0,len=ret[app+o]["options"].length;i<len;i++){
  45. ret[app+o]["options"][i] = app+ret[app+o]["options"][i];
  46. }
  47. }
  48.  
  49. if (menu[o]["clearPrefix"]){
  50. ret[app+o]["clearPrefix"]=app+ret[app+o]["clearPrefix"];
  51. }
  52.  
  53. if (menu[o]["prefix"]){
  54. ret[app+o]["prefix"]=app+ret[app+o]["prefix"];
  55. }
  56. }
  57.  
  58. //fix kids
  59. if (menu[o]["kids"]){
  60. //rebuild kids object
  61. ret[app+o]["kids"]=WM.dock.fixMenu(menu[o]["kids"],app);
  62. }
  63. }
  64. return ret;
  65. } catch(e) {log("WM.dock.fixMenu: "+e);}},
  66.  
  67. //restructure tests to append appID before every object's return
  68. fixTests: function(arr,app){try{
  69. //for each test in array
  70. for (var t=0,len=arr.length;t<len;t++) {
  71. var ret=arr[t].ret, kids=arr[t].kids;
  72. //replace return value
  73. if (ret) {
  74. if (ret!="exclude" && ret!="none") {
  75. arr[t].ret=app.appID+ret;
  76. }
  77. }
  78. //process subtests
  79. if (kids) WM.dock.fixTests(kids,app);
  80. }
  81. } catch(e) {log("WM.dock.fixTests: "+e);}},
  82.  
  83. fixAcceptTexts:function(app){try{
  84. var newAccText={};
  85. for (var s in app.accText) {
  86. newAccText[app.appID+s]=app.accText[s];
  87. }
  88. app.accText=newAccText;
  89. } catch(e) {log("WM.dock.fixAcceptTexts: "+e);}},
  90.  
  91. onSidekickParsed: function(newset){try{
  92. //save it into the NEW format for games
  93. var app=(WM.apps[newset.appID]=new WM.App(newset));
  94.  
  95. //promptText JSON.stringify(WM.config.settings));
  96. WM.updateSettingsValues();
  97.  
  98. //detach the menu from the newset to reduce duplication
  99. delete app.menu;
  100. //fire priority event
  101. (function(){WM.rulesManager.doEvent("onSidekickDock",app);})();
  102. //fetch its initial posts
  103. //app.fetchPosts();
  104. WM.newSidekicks.push(app);
  105. }catch(e){log("WM.dock.onSidekickParsed: "+e);}},
  106. parseNewSidekick: function(node){try{
  107. if (node){
  108. var v = node.getAttribute('data-ft');
  109. node.setAttribute('data-ft','');
  110. if (v||null) {
  111. var newset = JSON.parse(v);
  112. WM.dock.onSidekickParsed(newset);
  113. }
  114. }
  115. } catch(e) {log("WM.dock.parseNewSidekick: "+e);}},
  116. answerDockingDoor: function(){try{
  117. //log("Sidekick requesting to dock");
  118.  
  119. //get all sidekicks that left info on the dock;
  120. forNodes(".//div[@id='wmDock']/div[(@data-ft) and not(@data-ft='')]",{},function(node){
  121. if (node.getAttribute('data-ft') !=""){
  122. window.setTimeout(WM.dock.parseNewSidekick,1,node);
  123. }
  124. });
  125. } catch(e) {log("WM.dock.answerDockingDoor: "+e);}},
  126.  
  127. };
  128.  
  129. })();