cms backend management

cms内部管理

目前为 2022-04-12 提交的版本。查看 最新版本

  1. /*
  2. * @Description: File Description
  3. * @FilePath: /study/temperMonkey/backend_cms_mangement/index.js
  4. * @LastEditors: zzz
  5. * @LastEditTime: 2022-04-12 20:51:52
  6. */
  7. // ==UserScript==
  8. // @name cms backend management
  9. // @name:zh-CN cms内部管理
  10. // @namespace http://tampermonkey.net/
  11. // @version 0.5
  12. // @description cms内部管理
  13. // @author zzailianlian
  14. // @require https://code.jquery.com/jquery-3.5.1.min.js
  15. // @match http://backend.meitun-test.com/index
  16. // @icon https://www.google.com/s2/favicons?sz=64&domain=meitun-test.com
  17. // @license MIT
  18. // @run-at document-idle
  19. // @grant GM_setValue
  20. // @grant GM_getValue
  21. // @grant GM_addElement
  22. // ==/UserScript==
  23.  
  24. (function () {
  25. 'use strict';
  26.  
  27. const MODULE_ID = '783'
  28. const cmsGlobal = {}
  29. var sc = document.createElement("script");
  30. sc.setAttribute("type", "text/javascript");
  31. sc.src = "https://code.jquery.com/jquery-3.5.1.min.js";
  32. // document.getElementsByTagName('body')[0].appendChild(sc);
  33.  
  34. if (window.ActiveXObject || "ActiveXObject" in window) { //判断是否是ie
  35. if (sc.readyState) { //判断是否支持readyState
  36. sc.onreadystatechange = function () {
  37. if (this.readyState == "loaded" || this.readyState == "complete") {
  38. console.log("ie10及以下加载完成");
  39. onloaded()
  40. }
  41. }
  42. } else {
  43. sc.onload = function () {
  44. console.log("ie11及Edge加载完成");
  45. onloaded()
  46. }
  47. }
  48. } else { //不是ie
  49. sc.onload = function () {
  50. console.log('非ie浏览器加载完成');
  51. onloaded()
  52. }
  53. }
  54.  
  55. function clearActivitedTab() {
  56. if ($('#menubar_tabs span[title="关闭"]').length) {
  57. $.map($('#menubar_tabs span[title="关闭"]'), function (item) {
  58. item.click()
  59. })
  60. }
  61. }
  62.  
  63. function init() {
  64.  
  65. }
  66.  
  67. var onloaded = function () {
  68. var jqVersion = $.fn.property || $().property || jQuery.fn.jquery
  69. console.log('version版本:', jqVersion)
  70.  
  71. const wrapperToolsContainer = $('<div id="wrapperToolsContainer"></div>')
  72. wrapperToolsContainer.css({
  73. position: 'fixed',
  74. top: 50,
  75. right: 100,
  76. padding: '12px',
  77. background: '#3498db',
  78. borderRadius: '4px',
  79. fontSize: '14px',
  80. zIndex: 999,
  81. opacity: 0.1,
  82. });
  83. wrapperToolsContainer.hover(function () { $(this).css({ opacity: 1 }); }, function () { $(this).css({ opacity: .1 }); })
  84. const initCMSModule = $('<div>初始化cms页面</div>')
  85. initCMSModule.css({
  86. padding: '12px',
  87. color: 'white',
  88. background: '#2ecc71',
  89. borderRadius: '4px',
  90. fontSize: '14px',
  91. border: '1px solid #27ae60',
  92. zIndex: 999,
  93. marginBottom: '24px',
  94. cursor: 'pointer'
  95. });
  96.  
  97. const syncConfig = $('<div>同步配置到页面</div>')
  98. syncConfig.css({
  99. padding: '12px',
  100. color: 'white',
  101. background: '#2ecc71',
  102. borderRadius: '4px',
  103. fontSize: '14px',
  104. border: '1px solid #27ae60',
  105. zIndex: 999,
  106. cursor: 'pointer'
  107.  
  108. });
  109.  
  110. wrapperToolsContainer.append(initCMSModule).append(syncConfig)
  111. $('body').append(wrapperToolsContainer)
  112.  
  113. const CMS_PAGE_TAB_ID = 'CMS_PAGE_TAB_ID'
  114. const CMS_MODULE_TAB_ID = 'CMS_MODULE_TAB_ID'
  115. function getLastTabId() {
  116. return $('#menubar_tabs').find('h3').last().find('a').attr('id')
  117. }
  118. initCMSModule.on('click', () => {
  119. clearActivitedTab();
  120. // 初始化cms管理tab
  121. //$("a:contains('v2.0CMS页面管理')").click()
  122. // console.log('我是 jjjj',$("a:contains('v2.0CMS页面管理')").attr('id').split('_').slice(-1)[0])
  123. $("a:contains('v2.0CMS页面管理')").get(0).click()
  124. GM_setValue(CMS_PAGE_TAB_ID, getLastTabId());
  125. $("a:contains('v2.0CMS系统模板')").get(0).click()
  126. GM_setValue(CMS_MODULE_TAB_ID, getLastTabId());
  127. console.log('我是GM_GETVAULE', GM_getValue(CMS_PAGE_TAB_ID), GM_getValue(CMS_MODULE_TAB_ID))
  128. })
  129.  
  130. function getFrameJQ(id) {
  131. // mainIframe_modifyPage
  132. // mainIframe_tabli_
  133. return $(document.getElementById(id).contentWindow.document.body)
  134. }
  135. function getIdFromTab(tabidArr) {
  136. if (!tabidArr || tabidArr instanceof Array) {
  137. return ''
  138. }
  139. return tabidArr.split('_').slice(-1) || ''
  140. }
  141. function loop(judgeFn = () => { }, callbackFn = () => { }, delay = 1000) {
  142. let threshold = 10 * 1000; // 30s
  143. console.log("interval start")
  144. let startTimeStamp = 0;
  145. const intervalTimer = window.setInterval(function () {
  146. console.log("interval running")
  147. startTimeStamp += 1000;
  148. if (judgeFn()) {
  149. console.log("interval end")
  150. callbackFn()
  151. window.clearInterval(intervalTimer)
  152. return;
  153. }
  154. if (startTimeStamp >= threshold) {
  155. window.clearInterval(intervalTimer)
  156. return new Error('loop超时')
  157. }
  158. }, 1000)
  159. }
  160.  
  161.  
  162.  
  163. syncConfig.on('click', () => {
  164. // 同步配置模板到页面
  165. const pendingSyncList = $('button:contains("同步线上")')
  166. console.log('我是同步列表', pendingSyncList, window.performance)
  167. const cmsPageFrameJq = getFrameJQ('mainIframe_tabli_' + getIdFromTab(GM_getValue(CMS_PAGE_TAB_ID)))
  168. cmsGlobal['CMS_PAGE_FRAME_JQ'] = cmsPageFrameJq
  169. // 编辑页面
  170. cmsPageFrameJq.find('tr').find('td:contains(' + MODULE_ID + ')').parent().find('button:contains("编辑")').click()
  171.  
  172. loop(function () {
  173. return !!$('#mainIframe_modifyPage' + MODULE_ID).length
  174. }, function () {
  175. // 存在该iframe说明已经【编辑点击之后调起iframe】
  176. const cmsPageModalFrameJq = getFrameJQ('mainIframe_modifyPage' + MODULE_ID)
  177. cmsGlobal['CMS_PAGE_MODAL_FRAME_JQ'] = cmsPageModalFrameJq;
  178. loop(function () {
  179. // 副标题存在数据,说明【编辑操作】掉接口回填成功
  180. return !!$(getFrameJQ('mainIframe_modifyPage' + MODULE_ID)).find('input[placeholder="如:APP新客活动"]').last().attr('value')
  181. // return ()=>!!$(cmsGlobal['CMS_PAGE_MODAL_FRAME_JQ']).find('input[placeholder="如:APP新客活动"]').last().attr('value')
  182. }, function () {
  183. // 下一步
  184. $(getFrameJQ('mainIframe_modifyPage' + MODULE_ID)).find('input[value="下一步"]').last().click();
  185. // $(cmsGlobal['CMS_PAGE_MODAL_FRAME_JQ']).find('input[value="下一步"]').last().click();
  186. loop(function () {
  187. // 如果模拟器中存在模板数据,说明【下一步操作】掉接口回填成功
  188. return !!$(getFrameJQ('mainIframe_modifyPage' + MODULE_ID)).find('.cms-show').length
  189. // return ()=>!!$(cmsGlobal['CMS_PAGE_MODAL_FRAME_JQ']).find('.cms-show').length
  190. },
  191. function () {
  192. // 保存
  193. $(getFrameJQ('mainIframe_modifyPage' + MODULE_ID)).find('input[value="保存"]').last().click()
  194. // $(cmsGlobal['CMS_PAGE_MODAL_FRAME_JQ']).find('input[value="保存"]').last().click()
  195. loop(function () {
  196. // 如果存在同步线上按钮,说明【保存操作】掉接口回填成功
  197. return !!$(getFrameJQ('mainIframe_tabli_' + getIdFromTab(GM_getValue(CMS_PAGE_TAB_ID)))).find('tr').find('td:contains(' + MODULE_ID + ')').parent().find('button:contains("同步线上")').length
  198. // return ()=>!!$(cmsGlobal['CMS_PAGE_FRAME_JQ']).find('tr').find('td:contains(' + MODULE_ID + ')').parent().find('button:contains("同步线上")').length
  199. }, function () {
  200. // 同步线上
  201. $(getFrameJQ('mainIframe_tabli_' + getIdFromTab(GM_getValue(CMS_PAGE_TAB_ID)))).find('tr').find('td:contains(' + MODULE_ID + ')').parent().find('button:contains("同步线上")').click()
  202. // $(cmsGlobal['CMS_PAGE_FRAME_JQ']).find('tr').find('td:contains(' + MODULE_ID + ')').parent().find('button:contains("同步线上")').click()
  203. })
  204. })
  205. })
  206. })
  207. })
  208. }
  209. onloaded()
  210. })();

QingJ © 2025

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