RegisterMenu

enter menu

当前为 2015-09-27 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name RegisterMenu
  3. // @namespace http://lifia.unlp.edu.ar
  4. // @version 0.3
  5. // @description enter menu
  6. // @match https://*/*
  7. // @match http://*/*
  8. // @require http://code.jquery.com/jquery-2.1.4.min.js
  9. // ==/UserScript==
  10.  
  11. /* Elimina todos los .js para utilizar la version del @require y no se genere conflicto */
  12.  
  13. if (window.jQuery){
  14. $('head script[src*="js"]').remove();
  15. }
  16.  
  17. GM_registerMenuCommand('run', funcionSeba);
  18. GM_registerMenuCommand('import JSON', importJson);
  19.  
  20. function funcionSeba(){
  21. var obj = getLocal();
  22. var objectParent = constructObject(obj);
  23. runPage(objectParent);
  24. }
  25.  
  26. function importJson() {
  27. var importData = prompt("Importar la configuracion. Ingrese el JSON correspondiente");
  28. // La longitud debe ser igual o mayor a 218, como para asegurar la estructura inicial del Json.
  29. if(importData.length >= 218){
  30. dataJson = JSON.parse(importData);
  31. saveLocal();
  32. alert("Se ha importado exitosamente!");
  33. } else {
  34. alert("Formato JSON ingresado no es el correspondiente. Por favor reintentelo nuevamente")
  35. }
  36. }
  37.  
  38. function saveLocal(){
  39. if (typeof(Storage) !== "undefined") {
  40. localStorage.setItem("obj", JSON.stringify(dataJson));
  41. } else {
  42. alert("Sorry, your browser does not support Web Storage...");
  43. }
  44. }
  45.  
  46. function getLocal(){
  47. if (typeof(Storage) !== "undefined") {
  48. return JSON.parse(localStorage.getItem("obj"));
  49. } else {
  50. alert("Sorry, your browser does not support Web Storage...");
  51. }
  52. }
  53. function getElements(xpath){
  54. // Recive algo como obj[0].headerLeft
  55. var node = document.evaluate(
  56. xpath,
  57. document,
  58. null,
  59. XPathResult.FIRST_ORDERED_NODE_TYPE,
  60. null ).singleNodeValue;
  61. return node;
  62. }
  63.  
  64. function concatElement(element){
  65. var stringElements = "";
  66. var getElement;
  67. $.each( element, function( key, value ) {
  68. if (value != "none"){
  69. getElement = getElements(value);
  70. if(getElement !== null){
  71. stringElements += "<div>"+getElement.innerHTML+"</div>";
  72. }
  73. else
  74. stringElements = null;
  75. }
  76. else
  77. stringElements = "none";
  78. });
  79. return stringElements;
  80. }
  81.  
  82. function constructObject(obj){
  83. var object = {};
  84. var error = false;
  85. $.each( obj, function( key, value ) {
  86. if (concatElement(value) === null){
  87. error = true
  88. messagge = "No se pudo cargar un elemento en "+key;
  89. return true;
  90. }
  91. if (concatElement(value) == "none"){
  92. object[key] = "";
  93. }
  94. else
  95. object[key] = concatElement(value);
  96. });
  97. if (error === true){
  98. alert(messagge);
  99. return null;
  100. }
  101. else
  102. return object;
  103. }
  104.  
  105. //var objectParent = constructObject(obj);
  106.  
  107. function importElement(source, destination){
  108. $(destination).append(source);
  109. }
  110.  
  111. function insertZoneMenu(element){
  112. dwrap = document.createElement("div");
  113. dwrap.innerHTML = element;
  114. var links = dwrap.getElementsByTagName("a");
  115. $("#menu").append("<nav class='navbar navbar-default' role='navigation'> <div class='navbar-header'> <button type='button' class='navbar-toggle' data-toggle='collapse' data-target='#bs-example-navbar-collapse-1'> <span class='sr-only'>Toggle navigation</span><span class='icon-bar'></span><span class='icon-bar'></span><span class='icon-bar'></span></button> </div> <div class='collapse navbar-collapse' id='bs-example-navbar-collapse-1'> <ul id='menu-nav' class='nav navbar-nav'> </ul> </div> </nav> ");
  116. $.each(links, function(i, e){
  117. $("#menu-nav").append("<li><a href='"+e+"'>"+$(e).html()+"</a></li>");
  118. });
  119. }
  120.  
  121. function runPage(objectParent){
  122. $("head").append("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">");
  123. $("head").append("<script src='https://code.jquery.com/jquery-2.1.4.min.js'></script>");
  124. $("head").append("<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js'></script>");
  125. //$("head").append("<link rel='stylesheet' href='http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css'>");
  126. $("head").append("<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css'>");
  127. $("head").append("<style>*{min-width: 0px !important;}</style>");
  128. $("head").append("<style>*{max-width: 100% !important;}</style>");
  129. //$("ins").remove();
  130.  
  131. if (objectParent !== null){
  132. //Insert Bootstrap structure
  133. $("body").html("");
  134. $("body").append("<div class='container-fluid'> <div class='row'> <div id='header-left' class='col-md-4'> </div> <div id='header-center' class='col-md-4'> </div> <div id='header-right' class='col-md-4'> </div> </div> <div class='row'> <div id='menu' class='col-md-12'> </div> </div> <div class='row'> <div id='main-left' class='col-md-4'> </div> <div id='main-center' class='col-md-4'> </div> <div id='main-right' class='col-md-4'> </div> </div> <div class='row'> <div id='footer-left' class='col-md-4'> </div> <div id='footer-center' class='col-md-4'> </div> <div id='footer-right' class='col-md-4'> </div> </div> </div>");
  135. importElement(objectParent.headerLeft,"#header-left");
  136. importElement(objectParent.headerCenter,"#header-center");
  137. importElement(objectParent.headerRight,"#header-right");
  138. insertZoneMenu(objectParent.menu);
  139. //importElement(objectParent.menu,"#menu");
  140. importElement(objectParent.mainLeft,"#main-left");
  141. importElement(objectParent.mainCenter,"#main-center");
  142. importElement(objectParent.mainRight,"#main-right");
  143. importElement(objectParent.footerLeft,"#footer-left");
  144. importElement(objectParent.footerCenter,"#footer-center");
  145. importElement(objectParent.footerRight,"#footer-right");
  146. }
  147. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址