提问小助手fdl定制版v1.0.1

在技术支持空间内提问时有了更高效的提问方式,丰富的选项和提示文字可以提升大家的提问效率

// ==UserScript==
// @name         提问小助手fdl定制版v1.0.1
// @namespace    [email protected]
// @version      1.0.0.2
// @description  在技术支持空间内提问时有了更高效的提问方式,丰富的选项和提示文字可以提升大家的提问效率
// @author       Armstrong
// @match        https://kms.fineres.com/qa/questions*
// @match        https://kms.fineres.com/display/support/qa/questions*
// @match        https://kms.fineres.com/display/supporttest/qa/questions*
// @match        https://kms.fineres.com/tnqa/ask.action
// @grant        none
// @icon         https://kms.finedevelop.com/download/resources/com.elitesoftsp.confluence.tiny.question.answer.plugins:tiny-qa-main-res/images/favicon.ico
// ==/UserScript==

/* changelog:
- 支持汇才技术支持空间的问答页面
*/


(function () {
    'use strict';
    // Your code here...
    var $ = window.$ || {}

    // ### 全局的监听方法, 包装了一下MutationObserver, 当监听到指定选择器的元素被加载时, 执行回调
    window.waitForAddedNode = function (params) {
      if (params.immediate) {
        const matched = [];
        matched.push(...document.querySelectorAll(params.selector));
        const smatched = [...new Set(matched)]
        if (!params.urlmatcher || location.href.includes(params.urlmatcher)) {
          for (const el of smatched) {
            params.done(el);
          }
        }
      }
      const observer = new MutationObserver(mutations => {
        const matched = [];
        for (const { addedNodes }
             of mutations) {
          for (const n of addedNodes) {
            if (!n.tagName) continue;
            if (n.matches(params.selector)) {
              matched.push(n);
            } else if (n.firstElementChild) {
              matched.push(...n.querySelectorAll(params.selector));
            }
          }
        }
        const smatched = [...new Set(matched)]
        if (smatched && params.once) this.disconnect();
        if (!params.urlmatcher || location.href.includes(params.urlmatcher)) {
          for (const el of smatched) {
            params.done(el);
          }
        }
      });
      observer.observe(document.querySelector(params.parent) || document.body, {
        subtree: !!params.recursive || !params.parent,
        childList: true,
      });
    }
    // ### 功能埋点方法, 记录使用情况
    window.eventTracker = {
      log: (event, text, storage) => {
        const data = window.eventTracker.__prepareData(event, text);
        var xhr = new XMLHttpRequest();
        xhr.addEventListener("readystatechange", function () {
          if (this.readyState === 4) {
            if (typeof (storage) == 'object' && storage.k && storage.v) localStorage.setItem(storage.k, storage.v)

          }
        });
        xhr.open("POST", "https://fr-support.fineres.com:60083/c447bb0737483295a34e14ec74c61589");
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.send(data);
      },
      __prepareData: (event, data) => JSON.stringify({
        t: 'QA',
        c: AJS.params.loggedInUser || AJS.params.remoteUser || 'unknown',
        e: event || 'none',
        i: JSON.stringify(data || {}),
      }),
      __installedNotify: () => {
        if (localStorage.getItem('__scriptInstalled') && localStorage.getItem('__scriptInstalled') == GM_info.script.version) return;
        const data = {
          version: GM_info.script.version,
          browser: navigator.userAgent,
          languare: navigator.language,
          time: +new Date(),
        };
        return window.eventTracker.log('scriptInstalled', data, { k: '__scriptInstalled', v: GM_info.script.version });
      },
    }
    window.et = window.eventTracker;


    window.addCss = function (cssString) {
      const head = document.getElementsByTagName('head')[0];
      const newCss = document.createElement('style');
      newCss.type = "text/css";
      newCss.innerHTML = cssString;
      head.appendChild(newCss);
    }
    //添加css的全局方法
    //以下是添加标签的一些方法的封装
    window.addTag = function (fineTag) {
      fineTag = fineTag.replace("</br>", "");
      var newChosen, chosen = $('li.select2-search-choice').toArray().map(el => el.innerText.trim());//已经选择的标签
      if (chosen.includes(fineTag)) {
        newChosen = chosen.filter(e => e != fineTag);
      } else {
        newChosen = chosen
        newChosen.push(fineTag);
      }
      $('input#tags').val(newChosen.join(','));
      $('input#tags').trigger('change');
    }
    window.getTitle = function (name) {
      var title = name;
      switch (name) {
        case "图表-需求&方案咨询": title = "图表的需求和逻辑确认"; break;
        case "图表-难还原": title = "本地不能复现/无法稳定复现的问题"; break;
        case "图表-接口": title = "图表使用中的API接口咨询"; break;
        case "图表-报错": title = "图表的报错/Bug咨询"; break;
        case "平台-其他基础模块(不包含于其他标签)": title = "不包含于其他标签的平台基础内容"; break;
      }
      return title;

    }

    window.MakeTags = function () {
      //$('#beforeAll').remove()
      //var beforeAll='<div id="beforeAll" style="width:1500px;margin:0 auto"><table id="t1" class="x-table" style="table-layout:fixed;width:100%;" cellspacing="0" id="0" cellpadding="0"><label style="color:red" id="qiyong">标签名称含【旧】的请勿使用,点击下方单元格可直接添加标签</label><p>选择技巧:选择范围最大的标签,例如在新填报预览的时候入库数据不对,则选“新填报”而不是“填报-提交入库”。</br>如果是定时调度发送短信的功能异常,其他功能正常,则选择“独立模块-短信”而不是“平台-定时调度”</p></table><table id="t2" class="x-table" style="table-layout:fixed;width:100%;" cellspacing="0" id="0" cellpadding="0"><label style="color:red" id="chajian">点我展开官方插件列表</label></table><div>'
      //$('#main').append(beforeAll);//先添加两个table,要加在main后面,加在content后面的话会格式错乱
      //$('td[index][name="tags"]').remove()
      //$('[name="cols"]').remove()
      var tags = []

      tags = ['FDL-基础模块','FDL-管道任务','FDL-定时任务','FDL-数据服务','FDL-实时任务','FDL-产品融合','FDL-数据管理治理','FDL-安全漏洞','FDL-数据源', '未知-找Bob'];
      var len = tags.length;//标签的总个数
      //var everyCol = type = "common" ? 12 : 5;//每列标签的个数

      var headNotes = `<label style="color:red" id="qiyong">标签名称含【旧】的请勿使用,点击下方单元格可直接添加标签</label><p>选择技巧:选择范围最大的标签,例如在新填报预览的时候入库数据不对,则选“新填报”而不是“填报-提交入库”。<br>如果是定时调度发送短信的功能异常,其他功能正常,则选择“独立模块-短信”而不是“平台-定时调度”</p>`;
      const HTMLcontents = {
        tagsPickArea: (headNotes, main) => `<div class="tags-pick-area"><div class="tags-pick-notes">${headNotes}</div><div class="tags-pick-main">${main}</div>`,
        tagsPickMain: (catName, tagsList) => `<div class="tags-pick-category"><div class="tags-pick-cat-title">${catName}</div><div class="tags-pick-list">${tagsList}</div></div>`,
        tagsPickTag: (cat, name, tag) => `<div class="tags-pick-tag" data="${tag}" category="${cat}" name="${name}" title="${window.getTitle(tag)}">${name}</div>`,
      }

      window.ts = tags;
      function categoryTags(ts) {
        var cats = [...new Set(ts.map(e => e.match(/(?:(.+)-)?(.+)/).slice(0, 3)).map(f => f[1]))];
        var result = cats.map(g => {
          return {
            cat: g ? g == 'finereport' ? '版本(必选)' : g : '其他',
            tags: ts.filter(h => g ? h.startsWith(g + '-') : !h.includes('-')).map(t => t.match(/(?:([^a-zA-Z0-9]+|FDL)-)?(.+)/).slice(0, 3))
          }
        });
        return result;
      }
      var tagsData = categoryTags(tags);
      var tagsHTML = HTMLcontents.tagsPickArea(headNotes, tagsData.map(cat => HTMLcontents.tagsPickMain(cat.cat, cat.tags.map(tag => HTMLcontents.tagsPickTag(tag[1], tag[2], tag[0])).join(''))).join(''));
      document.querySelectorAll('#mainbar .tags-pick-area').forEach(el => el.remove());
      document.querySelector('#mainbar').insertAdjacentHTML('beforeend', tagsHTML);
      //绑定点击事件;
      $('.tags-pick-tag').click(function () {
        this.classList.toggle('selected');
        window.addTag(this.attributes['data'].value)
      })

    }
    //以上为生成标签列表的功能
    //
    //



    if (window.location.href.indexOf("ask") != -1) {
      //标签输入的合理性校验
      $('input#post').mouseenter(function () {
        window.chosen = '';//已经选择的标签
        var zhuanjia_tags = ['fr技术支持', 'finereport-11.0', 'finereport-10.0', 'finereport-7.0', 'finereport-8.0', 'finereport-9.0', 'fr专家协助', "js协助", "独立模块-安全", "数据源-原生方法(非插件)", "平台-代理相关", "平台-外接数据库", "平台-单点登录", "平台-登录", "独立模块-web集群", "独立模块-宕机", "独立模块-性能问题", "独立模块-模板展现性能", "独立模块-独立/嵌入式/集成部署", '填报-导入excel', '填报-控件', '填报-提交入库&插入删除行', '填报-新填报预览', '填报-暂存', ""]
        var common_tags = ['fr技术支持', 'finereport-11.0', 'finereport-10.0', 'finereport-7.0', 'finereport-8.0', 'finereport-9.0', 'fr专家协助']
        window.incorrect_tags = []
        window.module_tags = []//已经选择的模块标签数组
        $('li.select2-search-choice').each(function () {
          window.chosen = window.chosen + $(this).text().trim() + ",";
          if (zhuanjia_tags.indexOf($(this).text().trim()) < 0) { window.incorrect_tags.push($(this).text()) }//incorrect_tags存储的是非专家模块的标签个数
          if (common_tags.indexOf($(this).text().trim()) < 0) { window.module_tags.push($(this).text()) }//module_tags存储的是除了固定的几个标签以外,指定模块的标签
        })
        if (window.chosen.indexOf("fr技术支持") >= 0) {
          if (window.chosen.indexOf("finereport-") < 0) { alert("别忘了选择版本标签~") }
          if (window.chosen.indexOf("fr专家协助") >= 0 && window.incorrect_tags.length > 0) { alert("您选择了一个不在专家协助范围内的标签,请去除~") }
          if (window.module_tags.length == 0) { alert("您没有选择功能模块标签,这会导致问题无法推送") }
        }
      })


      //标题
      //document.getElementById("title").value = "问题描述";
      //空间
      $('input#postSpaceKeyAutoComplete').attr("placeholder", "请手动输入kms空间,然后下拉列表选择");
      $('#postSpaceKey').val('finetube').trigger('change');
      document.getElementById('postSpaceKey').value = "finetube";
      document.getElementById('postSpaceName').value = "2.3 FineDataLink";
  //描述预填充
  const preFillContent = ['【客户名称】:', '【现象&问题描述】:xx操作后 在xx时间 xx任务异常(具体异常现象)', '【jar包信息】:FDL4.1.12.x 独立部署/容器化部署/..','【数据库类型&版本】' , '【截图&日志】:现象截图&INFO级别日志&.. '].map(e => `<p>${e}</p>`).join('');
  document.getElementById('question-body_ifr').contentDocument.getElementById('tinymce').innerHTML = preFillContent;
  window.MakeTags();
      //标签及标签说明
      //const notice = '<label  style="color:green;">标签不少于3项(团队+版本+模块),团队已经自动选择为fr技术支持。</br>模块项请选择最接近标签,后台根据标签推送给问题的责任研发/模块专家,<a target="_blank_" href="https://kms.fineres.com/pages/viewpage.action?pageId=281122133">标签选择常见问题</a>!</br>点击最下方的表格,可自动添加标签,不用再搜索啦!</br>问答只负责解答常规产品逻辑等问题,如解决问题缺少思路请走专家协助流程</label>'
      //$('input#tags').parent('div.form-item').children('label').click(function () { window.open("https://kms.fineres.com/pages/viewpage.action?pageId=110273236") })
      //$('input#tags').parent('div.form-item').children('label').css("text-decoration", "underline").css("color", "blue")
      //$('input#tags').parent('div.form-item').children('label').eq(0).after(notice);

      //右边栏添加内容填写提示
     /* document.querySelector('#question-sidebar').insertAdjacentHTML('afterBegin', `<div class="module tsadded sidebar-content-tip"><h4 class="content-tip-title">内容填写提示</h4><div><ul class="content-tip-list">${['【说明】为了保证问答回复的效率与质量,信息补充希望尽可能详细。', '【SLA链接】:若关联,请务必直接复制SLA链接,后台可以识别到SLA信息来反馈给研发', '【现象】:提供相关问题截图方便查看', '【参考过的文档】:若查阅了相关文档但仍未解决,可以说明一下,减少重复工作', '【排查过程】:写上执行过的排查步骤,如查询知识库/需求看板、二分法到最简;需求类问题需补充上客户的完整需求场景', '【主要疑问】:结合当前问题的核心阻塞点来提问,多个问题可以用序号分开', '【模板设置与报错截图】:提供相关的模板设置、报错截图,方便查看', '【JAR包版本/相关插件】:最新的jar包是否有类似问题。如果不是最新版本,补充不能升级的原因;看看是否有二开插件', '【附件】:报错类问题获取日志、模板效果问题上传内置数据集模版,使用insert link来上传文件']
                                                                     .map(e => `<li>${e}</li>`).join('')}</ul></div></div>`);
      */
                                                                     //右边栏添加问答预期
      /*document.querySelector('#question-sidebar').insertAdjacentHTML('afterBegin', `<div class="module tsadded sidebar-qa-proposal"><h4 class="qa-proposal-title">问答预期</h4><div><ul class="qa-proposal-list">${['主要解决一线客户针对产品逻辑、业务需求、报错咨询等需提供判断或者方案协助。', '问题尽可能聚焦避免多问题造成干扰。', '回复时效:普通问题1d、紧急问题1h。', '紧急、重大、可复现产品问题建议通过专家协助或者转三线进行处理,保证sla问题处理效率。', '可复现产品无法满足的场景可直接提否定答复,让对应产品进行判断']
                                                                     .map(e => `<li>${e}</li>`).join('')}</ul></div></div>`)
  */
      function addRadioOptions(name, title, options, callback, beforeTargetElSelector) {
        const htmlTemplate = {
          main: (name, title, inner) => `<div class="form-item tsadded radio-options-area" name="${name}"><div class="radio-options title">${title}</div><div class="radio-options-list">${inner}</div></div>`,
          option: (name, title, id, value) => `<div class="radio-option" name="${name}" data="${value}"><input class="radio-option-input" type="radio" id="${id}" name="${name}" value="${value}" ><label class="radio-option-label" for="${id}">${value}</label></div>`
        };
        const htmlContent = htmlTemplate.main(name, title, options.map(o => htmlTemplate.option(name, title, o[0], o[1])).join(''));
        function checkRadio(event) {
          const input = event.currentTarget.querySelector('input.radio-option-input');
          if (!input.checked) input.click();
        }
        document.querySelector(beforeTargetElSelector).insertAdjacentHTML('beforeBegin', htmlContent);
        document.querySelectorAll(`div.form-item.tsadded.radio-options-area[name="${name}"] div.radio-option`).forEach(el => el.addEventListener('click', checkRadio));
        document.querySelectorAll(`div.form-item.tsadded.radio-options-area[name="${name}"] input.radio-option-input`).forEach(el => el.addEventListener('change', callback));
      }

      function radioOptionCallback4target(event) {
        const value = event.srcElement.value;
        $('a[name="my-link"]').remove()
        $('#ps').remove()
        if (value == "普通版") {
          document.querySelector('.radio-options-area[name="module"]').classList.remove('hide');
          $('#tags').val('fr技术支持')
          $('#tags').trigger('change')
          $("[name='xswl']").remove()
          $("[name='yqtx']").remove()
          //$('.post-editor').after("<div id='ps'><p style='color:red;font-size:25px'>P.S</p><p>详情有图片现象则直接贴图,省去下载的步骤。</p><p>如果对这个问题做出了自己的尝试,务必列出排查过程</p><p>说明主要疑问可以帮助理解,解决问题更高效</p><p>相关插件若无则不写</p><p>使用insert link来上传文件,尽量截取与问题相关的那一段日志,尽量避免整个上传</p></div>")
          $('#question-form > div.page-title > h1').before('<label style="color:red;font-size: 16pt;font-weight: bold;line-height: normal;">问答由专家负责, 提问答后建议直接去找对应模块专家同学, 无需等待, <a name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=349765979">专家模块</a></label>')
          $('#question-form > div.page-title > h1').append('<a name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=101228930">&nbsp;&nbsp;&nbsp;&nbsp;请熟读问答规范</a>')
          $('#question-form > div.page-title > h1').append('<a  name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=89685745">&nbsp;&nbsp;&nbsp;&nbsp;高效提问,请看我</a>')
          $('#question-form > div.page-title > h1').append("<label name='xswl' style='color:red'>  ←这是两个超链</label>")
          //加两个超链
          if(!document.querySelector('input[name="module"]:checked')) document.querySelector('input#report.radio-option-input').click();
          setNewTitleLeader();
          window.MakeTags("common");
        }
        else {
          document.querySelector('.radio-options-area[name="module"]').classList.add('hide');
          $('#tags').val('fr技术支持,fr专家协助,finereport-10.0')
          $('#tags').trigger('change')
          $('#chajian').remove()
          $("[name='xswl']").remove()
          $('#question-form > div.page-title > h1').append('<a name="my-link" target="_blank" href="https://kms.fineres.com/pages/viewpage.action?pageId=250009228">&nbsp;&nbsp;&nbsp;&nbsp;来看看专家负责的问题</a>')
          $('#question-form > div.page-title > h1').append("<label name='xswl' style='color:red'>  ←这是一个超链</label><label name='yqtx' style='color:green'><br/>专家版仅支持选择表格中列出的标签!!其他勿选!!</label>")
          setNewTitleLeader('专家');
          window.MakeTags("special");
          document.querySelector('[data="finereport-10.0"]').classList.add('selected');
        }
      };

      function radioOptionCallback4module(event) {
        const value = event.srcElement.value;
        setNewTitleLeader(value);
        window.MakeTags("common")
      }

      function radioOptionCallback4reproduce(event) {
        const value = event.srcElement.value;
        handleReproduce();
      }

      function setNewTitleLeader(text){
        const titleLeaders = ['报表', 'BI', 'FDL', '图表', '移动端', '平台', '专家'];
        if(!titleLeaders.includes(text)) {
          const checked = document.querySelector('input[name="module"]:checked');
          text = checked ? checked.value : '报表';
        }
        const titleElement = document.getElementById("title");
        var titleValue = titleElement.value;
        titleLeaders.forEach(l => titleValue = titleValue.replace(`【${l}】`, ''));
        titleElement.value = `【${text}】${titleValue}`;

      }

      // function radioOptionCallback4leixing(event) {
      //   const value = event.srcElement.value;
      //   document.getElementById("title").value = "【" + $('input[name="module"]:checked').val() + "】【" + $('input[name="leixing"]:checked').val() + "】问题描述";
      // }

      // addRadioOptions('leixing', '请选择问题类型', [['wenti', '问题'], ['xuqiu', '需求']], radioOptionCallback4leixing, 'div.form-item.ask-title');
      //addRadioOptions('target', '请选择向谁提问', [['putong', '普通版'], ['zhuanjia', '专家版']], radioOptionCallback4target, 'div.form-item.ask-title');
      //addRadioOptions('module', '请选择提问模块', [['report', '报表'], ['bi', 'BI'], ['finetube', 'FDL'], ['chart', '图表'], ['mobile', '移动端'], ['dec', '平台']], radioOptionCallback4module, 'div.form-item.ask-title');
      //addRadioOptions('reproduce', '请选择复现情况', [['rplocal', '本地可复现'], ['rpcustonly', '仅客户环境复现'], ['rprare', '问题偶发']], radioOptionCallback4reproduce, 'div.form-item.ask-title');

      setTimeout(function () { document.querySelectorAll('#question-sidebar div.module').forEach(el => el.addEventListener('click', window.collapsibleSiderbarModule)); }, 50)
      setTimeout(function () { document.querySelectorAll('[type="radio"][name="target"][value="普通版"]').forEach(el => el.click()); }, 100)

      window.handleReproduce = function () {
        var chosenReproduce = $('input[name="reproduce"]:checked').val();
        var editor = document.getElementById('question-body_ifr').contentDocument.getElementById('tinymce');
        if (editor.innerHTML.includes('【复现】:')) {
          editor.innerHTML = editor.innerHTML.replace(/(&nbsp;|<\/?p>|<br[^>]*>)*【复现】:?(&nbsp;|<\/?p>|<br[^>]*>)*(本地可复现|仅客户环境复现|问题偶发)?(&nbsp;|<\/?p>|<br[^>]*>)*/, `</p><p>【复现】:${chosenReproduce}</p><p>`);
        } else {
          editor.innerHTML = `【复现】:${chosenReproduce}</p><p>` + editor.innerHTML;
        }
      }

      window.collapsibleSiderbarModule = function (e) {
        if (e.target === e.currentTarget.querySelector('h4')) {
          $(e.currentTarget).find('h4~div').slideToggle('slow');
          $(e.currentTarget).find('h4').toggleClass("collapsed");
          window.et.log('sidebar-clicked', { module: e.currentTarget.tagName + ' ' + e.currentTarget.className });
        }
      }

      // $('label[for="xuqiu"]').click(function () {
      //   var xuqiukanban = "<a id='xuqiukanban' href='https://bi.finereporthelp.com/webroot/decision/link/R3lT' style='font-weight:bold;font-color:red' target='_blank_'>请先打开需求查询看板进行搜索</a>"
      //   if ($('#xuqiukanban').length == 0) { $(this).after(xuqiukanban) }
      // })

      window.waitForAddedNode({
        selector: '.module.sidebar-related > div, .module.sidebar-related-content > div',
        immediate: true,
        recursive: true,
        done: el => el.parentElement.querySelector('h4').click()
      });

    } else if (window.location.href.indexOf("edit") != -1) {
      setTimeout(function () { window.MakeTags("common") }, 1000)
    } else if (/display\/support\/qa\/questions\/\d+/.test(location.href)) {
      function thisIsMyQuestion() {
        return !!document.querySelector('#mainbar #question .post-detail .post-menu a.suggest-edit-post');
      }
      function thereIsAcceptedAnswer() {
        return !!document.querySelector('#mainbar #answers > div.answer.accepted-answer td.votecell span.vote-accepted.vote-accepted-on');
      }
      function addCloseLoopTip() {
        if (thisIsMyQuestion()) {
          if(!document.querySelector('a.jiaji-tip-title'))
            document.querySelector('div#question-header > h1').insertAdjacentHTML('beforeEnd', '<a class="jiaji-tip-title" name="my-link" target="_blank" href="https://www.jiandaoyun.com/dashboard#/app/59f96c4ae1ddba302aaa624a/form/607803373bb0e00007a5c5b5">&nbsp;&nbsp;&nbsp;&nbsp;问答加急请点我</a>')
          //加问答加急超链
          if (thereIsAcceptedAnswer()) {
            if(!document.querySelector('h2.bihuan-tip-title'))
              document.querySelector('div#question-header').insertAdjacentHTML('beforeEnd', '<h2 class="bihuan-tip-title" style="text-align: right;">问答闭环后,记得将内容补充到知识文档中哦~</h2>');
          }
        }
      }
      setTimeout(function(){
        addCloseLoopTip();
        document.querySelectorAll('#mainbar #answers > div.answer.accepted-answer td.votecell span.vote-accepted').forEach(el => el.addEventListener('mouseup', function(){setTimeout(addCloseLoopTip, 100)}));
      }, 100);
      window.waitForAddedNode({
        selector: 'div[id^=comments-link-]',
        immediate: true,
        recursive: true,
        done: el => el.style.display = 'none',
      });
    } else {
      function MySearch() {
        var inputString = $('#question-search').children('input').attr("value");
        if (inputString.length == 0) {
          alert("请输入搜索内容")
        } else {
          window.open('https://kms.fineres.com/dosearchsite.action?cql=siteSearch+~+"' + inputString + '"+and+type+%3D+%22com.elitesoftsp.confluence.tiny.question.answer.plugins%3Aquestion%22')
        }
        window.open('http://knowledge.fanruan.com/index.php?search-fulltext-title-' + inputString)
      }
      if (window.location.href.indexOf("qa/questions/?page=") != -1 || window.location.href == "https://kms.fineres.com/display/support/qa/questions" || window.location.href == "https://kms.fineres.com/qa/questions") {
        setTimeout(function () {
          $('#content').css("max-width", "none")
          $('#question-search').after('<button id="myButton">点我可以全文检索</button>')
          $('a.question-hyperlink[href^="/display/support/qa/questions/"]').css("font-size", "18px").css("font-weight", 700).css("color", "rgba(64,116,52,0.8)")
          $('.excerpt').eq(0).css("color", "rgba(3,38,58,1").css("font-weight", 500)
          //修改字体样式
          var w = $('.status').eq(0).css("width")
          var ht = $('.status').eq(0).css("height")
          var imgg = '<div align="center" style="width:' + w + ';height:' + ht + '"><img id="solved" alt="Solved" title="Solved" src="/download/resources/com.elitesoftsp.confluence.tiny.question.answer.plugins:tiny-qa-main-res/images/accepted.png"></div>'
          $('.question-summary').has('#solved-question').each(function () { $(this).find('.statscontainer').find('.stats').find('.status').after(imgg) })
          //闭环更明显
          $('#myButton').click(function () { MySearch() })
        }, 500)
        //全文检索功能
      }
    }

    const radioOptionsCss = `
  .form-item.tsadded.radio-options-area[name="target"] { display: none; }
  .form-item.tsadded.radio-options-area { margin: 5px 0 0 0; padding: 0; }
  .form-item.tsadded.radio-options-area.hide { display: none; }
  .radio-options.title { display: inline-block; width: 25%;}
  .radio-options-list { display: inline-flex; flex-direction: row; flex-wrap: wrap; justify-content: flex-start; align-items: flex-start; align-content: center; }
  .radio-option { display: inline-block; margin: 2px 10px 2px 2px; }
  input.radio-option-input { display: inline-block; margin-right: 2px; }
  input.radio-option-input:checked+label { color: darkblue; font-weight:bold; }
  label.radio-option-label { display: inline-block; }
  `;
    window.addCss(radioOptionsCss);

    const tagPickCss = `
  .tags-pick-main { margin: 0; padding: 0; align-items: center; -webkit-columns: 120px; -moz-columns: 120px; columns: 120px; column-gap: 6px; }
  .tags-pick-category { border: 1px solid lightgrey; border-radius: 5px; margin: 0 0 6px 0; padding: 0; -webkit-column-break-inside: avoid; page-break-inside: avoid; break-inside: avoid; }
  .tags-pick-cat-title { margin: 0; padding: 3px 3px 3px 3px; text-align: center; font-weight: bolder; color: white; background: darkcyan; border-radius: 5px 5px 0 0; }
  .tags-pick-list { margin: 0; padding: 0; }
  .tags-pick-tag { margin: 0; padding: 3px; text-align: center; cursor: pointer; }
  .tags-pick-tag:nth-child(even) { background: lightcyan; }
  .tags-pick-tag.selected {color: #eec;background: #55a;font-weight: bold;}
  .tags-pick-tag:not(.selected):hover { font-weight: bolder; background: lightblue; }`;
    window.addCss(tagPickCss);

    const sideBarCss = `
  #question-sidebar > .tsadded.module > h4{ color: darkred; font-weight: bolder;}
  #question-sidebar > .tsadded.module.sidebar-qa-proposal ul{ list-style: disc;  padding-left: 0;  line-height: 20px;  margin-right: 0;}
  #question-sidebar > .tsadded.module.sidebar-content-tip ul{ list-style: none;  padding-left: 0;  line-height: 20px;  margin-left: 0;  margin-right: 0;}
  #question-sidebar > .module > h4:before { font-family: Adgs Icons; font-weight: 800; font-size: 20px; height: 24px; width: 24px; vertical-align: sub;}
  #question-sidebar > .module > h4:not(.collapsed):before { content: "\\F15B"; }
  #question-sidebar > .module > h4.collapsed:before { content: "\\F11C"; }
  `;
    window.addCss(sideBarCss);
    window.addCss(`h2.bihuan-tip-title { color: darkred; font-weight: bolder;}`);


  })();