add Code

微信公众号编辑图文消息在文章末尾增加代码段

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name        add Code
// @namespace   Violentmonkey Scripts
// @match       https://mp.weixin.qq.com/cgi-bin/appmsg
// @grant       none
// @version     1.0
// @author      jun95585 
// @description 微信公众号编辑图文消息在文章末尾增加代码段
// ==/UserScript==

window.onload = function(){ 
  var addCodeBtnHtml = '<div style="position: fixed; z-index: 999; bottom: 150px;left: 0;padding: 10px; background: #fff; box-shadow: 0 1px 4px 0 rgba(0,0,0,0.2); border-radius: 0 4px 4px 0;"><span id="addCode" class="btn btn_input btn_default r no_extra"><button type="button" onclick="showCodeDialog()">添加代码</button></span></div>'
  var addCodeDialogHtml = `
  <div
      id="codeDialog"
      style="
      display: none;
      position:fixed;
      top: 0;
      left: 0;
      width: 100vw;
      height: 100vh;
      background-color: rgba(0,0,0,0.5);
      z-index: 999;
  ">
      <div
          style="
              display: flex;
              flex-direction: column;
              margin: auto;
              width: 80%;
              height: 200px;
              font-size: 14px;
              padding: 8px 0;
              background: #fff;
              box-shadow: 0 1px 4px 0 rgba(0,0,0,0.1);
              border-radius: 4px;
          "
      >
          <textarea
              id="codeText"
              rows=6
              placeholder="请输入代码段"
              style="
                  margin: auto;
                  width: 80%;
                  font-size: 14px;
                  padding: 8px;
                  background: #fff;
                  border: 1px solid rgba(208, 208, 208, 0.9);
                  border-radius: 0 4px 4px  0;
              "
          ></textarea>
          <div style="display:flex; margin: auto;">
              <div style="margin-right: 20px;" class="btn btn_input btn_default r no_extra"><button id="addCodeDialogSubmit" type="button">添加至末尾</button></div>
              <div class="btn btn_input btn_default r no_extra"><button id="addCodeDialogClose" type="button">取消</button></div>
          </div>
      </div>
  </div>`

  // 图文编辑页面
  if (window.location.search.substring(1).includes(action=edit)) {
    document.body.innerHTML = document.body.innerHTML + (addCodeBtnHtml + addCodeDialogHtml)
  }
  
  var showCodeDialog = function showCodeDialog () {
    document.getElementById('codeDialog').style.display = 'flex';
  }

  var closeCodeDialog = function closeCodeDialog () {
    document.getElementById('codeText').innerHTML = '';
    
    document.getElementById('codeDialog').style.display = 'none';
  }
  
  document.getElementById('addCode').onclick = function(e){
    showCodeDialog();
    e.stopPropagation()
  };
  
  document.getElementById('addCodeDialogSubmit').onclick = function(e){
    var codeText = document.getElementById('codeText').value
    var editorDom = document.getElementById('ueditor_0')
    
    editorDom.contentWindow.document.getElementsByClassName('view')[0].innerHTML = 
      editorDom.contentWindow.document.getElementsByClassName('view')[0].innerHTML + 
      `<section>${codeText}</section>`
    
    closeCodeDialog();
    e.stoppropagation()
  };
  
  document.getElementById('addCodeDialogClose').onclick = function(e){
    closeCodeDialog();
    e.stoppropagation()
  };
}