Skip to content

Commit

Permalink
Merge pull request #33 from qr-merger/update-28
Browse files Browse the repository at this point in the history
Update 28 Part 1: Functionality Update
  • Loading branch information
hifocus committed Oct 3, 2022
2 parents ae8dca9 + 4f8f0f0 commit 7839a15
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 64 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
node_modules
.git
.vercel
public
public
.DS_Store
Binary file added assets/images/placeholder.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 3 additions & 31 deletions assets/js/function.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,36 +9,8 @@ var client;
var selected;
var scale = window.devicePixelRatio; // Change scale to 1 on retina screens to see blurry canvas

profile_error = 0;

if (typeof profile === "undefined" || profile === null || profile === "") {
profile_error = 1;
}
else if (profile.includes('@') && !profile.includes('http')) { // Verify if value entered is a email
var email = profile.split("@")
var suffix = email[1];
if (suffix.includes('.')) { // Verify if the email entered is valid
var profile_url = gravatar_url + md5(profile) + "?s=96";
var profile_lg = profile_url.replace("96", "500"); // Set a large version
}
else {
console.log("%c Email address invaild, please entre a vaild email or image url! ", "color: red"); // Error message if email entered is invalid
console.log("%c Email 无效,请输入有效 Email 或者图片 url ", "color: red");
profile_error = 1;
}
}
else {
profile_url = profile_lg = profile; // If email is not entered, use whatever value entered (presumably a url)
}

if (profile_error > 0) {
profile_url = profile_lg = 'https://ae01.alicdn.com/kf/Udaba9d58fade4a3e921c0ceba62db2b7n.png'; // Set a default avatar in case profile image is undefined
}

document.getElementById("i").style.background = "url('" + profile_lg + "') no-repeat center/cover"; // Set center picture
$("#favicon").attr("href", profile_url); // Set page icon


var userLang = navigator.language || navigator.userLanguage;
if (multilingual !== false) {
if (/zh-CN|zh-cn|zh-Hans|zh-hans|cn/i.test(userLang)) {
Expand Down Expand Up @@ -98,7 +70,7 @@ if (multilingual === false) {
else {
if (/zh-CN|zh-cn|zh-Hans|zh-hans|cn/i.test(userLang)) {
// detect browser langauge, simplified chinese only
document.write("<style>body { font-family: -apple-system, system-ui, BlinkMacSystemFont, Roboto, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', sans-serif; }</style>");
document.write("<style>body { font-family: -apple-system,BlinkMacSystemFont,Open Sans,Roboto,Oxygen,Cantarell,Fira Sans,Liberation Sans,Droid Sans,PingFang SC,HarmonyOS Sans SC,MiSans,Hiragino Sans GB,WenQuanYi Micro Hei,Noto Sans CJK SC,Noto Sans SC,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;}</style>");
if (usage === "payment") {
var method = "付款";
}
Expand All @@ -122,7 +94,7 @@ else {
}
else if (/zh-TW|zh-HK|zh-tw|zh-hk|zh-Hant|zh-hant|tw|hk/i.test(userLang)) {
// detect browser langauge, traditional chinese only
document.write("<style>body { font-family: -apple-system, system-ui, BlinkMacSystemFont, Roboto, 'PingFang TC', 'Hiragino Sans CNS', 'Microsoft JhengHei', 'Helvetica Neue', sans-serif; }</style>");
document.write("<style>body { font-family: -apple-system, BlinkMacSystemFont, 'PingFang TC', 'Hiragino Sans CNS', 'Microsoft JhengHei', 'Helvetica Neue', sans-serif; }</style>");
if (usage === "payment") {
var method = "付款";
}
Expand Down Expand Up @@ -155,7 +127,7 @@ else {
}
var method_lc = method.charAt(0).toLowerCase();
document.title = method + ' to' + finalname_eng + aftertitle;
document.write("<style>body { font-family: 'Segoe UI', -apple-system, system-ui, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif; }</style>"); // Oh I f**king love Segoe UI
document.write("<style>body { font-family: sans-serif; }</style>"); // Oh I f**king love Segoe UI
var trans_wx = "WeChat"
var trans_ali = "AliPay"
var trans_tp = "QQ Mobile"
Expand Down
117 changes: 85 additions & 32 deletions merger.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<!-- Upgrade HTTP Connections to HTTPS - Default -->
<link rel="preconnect" href="https://lib.baomitu.com" crossorigin>
<link rel="preconnect" href="https://www.gravatar.com" crossorigin>
<link rel="preconnect" href="https://s1.pstatp.com" crossorigin>
<link rel="shortcut icon" type="image/x-icon" id="favicon"><!-- Page icon will be set automatically -->

<!-- Load style files from local - Default -->
Expand All @@ -42,7 +42,6 @@
var usage = "payment"; // Available variables: `payment`, `donate`, ineffective if multilingual is disabled
var wechat = "wxp://f2f0xFuBE5tqPeKuwZxWkpE0CBf4-GkfwdpN";
var alipay = "https://qr.alipay.com/tsx13404cfdrbv32vk9vm90";
var tenpay = "https://i.qianbao.qq.com/wallet/sqrcode.htm?m=tenpay&f=wallet&a=1&ac=26E3D12F23952F04A9553D36B31F18BC3AEA141B073F9DD9BC3747C823819645&u=1031092401&n=惶心";
var paypal = "https://paypal.me/hxco";

// Multilingual Support
Expand All @@ -62,67 +61,121 @@
var subtitle = "跟随进一步的指示以向" + myname + "付款"; // Choose your desired subtitle; do not amend the `myname` variable here

// QQ Mobile wouldn't decode qrcode from `data:image`, so for qq mobile only speical qrcode that generate from qrcode api is necessary (this feature is awaiting review)
var qrcodeapi = "https://www.zhihu.com/qrcode?url="; // Please note that the API has to support HTTPS connection otherwise will not be loaded
var qrcodeapi = "https://api.moedog.org/qr/?p=15&url="; // Please note that the API has to support HTTPS connection otherwise will not be loaded
var gravatar_url = "https://www.gravatar.com/avatar/"; // You can set your preferred gravatar source (mirror) here; stay default if you cannot decide which source you'd prefer
// var gravatar_url = "https://gravatar.loli.net/avatar/"; // A Gravatar source provided by css.loli.net; stabler, relatively slower (in China)
</script>
</script>

<div class="main" id="h">
<i id="i"></i>

<div class="texts">
<h2 id="name"></h2>
<p id="description"></p>
<h2 id="name"></h2>
<p id="description"></p>
</div>

<script>
profile_error = 0;

if (typeof profile === "undefined" || profile === null || profile === "") {
profile_error = 1;
}
else if (profile.includes('@') && !profile.includes('http')) { // Verify if value entered is a email
var email = profile.split("@")
var suffix = email[1];
if (suffix.includes('.')) { // Verify if the email entered is valid
let profile_calc = 500 * (1 / window.devicePixelRatio) * 1.25;
if (profile_calc > 500) {
profile_size = 500;
}
else if (profile_calc < 200) {
profile_size = 200;
}
else {
profile_size = Math.round(profile_calc/50)*50;
}
// md5.min.js @ 2.19.0
// https://www.npmjs.com/package/blueimp-md5
// LICENSE: https://github.com/blueimp/JavaScript-MD5/blob/master/LICENSE.txt
!function (n) { "use strict"; function d(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function f(n, t, r, e, o, u) { return d((u = d(d(t, n), d(e, u))) << o | u >>> 32 - o, r) } function l(n, t, r, e, o, u, c) { return f(t & r | ~t & e, n, t, o, u, c) } function g(n, t, r, e, o, u, c) { return f(t & e | r & ~e, n, t, o, u, c) } function v(n, t, r, e, o, u, c) { return f(t ^ r ^ e, n, t, o, u, c) } function m(n, t, r, e, o, u, c) { return f(r ^ (t | ~e), n, t, o, u, c) } function c(n, t) { var r, e, o, u; n[t >> 5] |= 128 << t % 32, n[14 + (t + 64 >>> 9 << 4)] = t; for (var c = 1732584193, f = -271733879, i = -1732584194, a = 271733878, h = 0; h < n.length; h += 16)c = l(r = c, e = f, o = i, u = a, n[h], 7, -680876936), a = l(a, c, f, i, n[h + 1], 12, -389564586), i = l(i, a, c, f, n[h + 2], 17, 606105819), f = l(f, i, a, c, n[h + 3], 22, -1044525330), c = l(c, f, i, a, n[h + 4], 7, -176418897), a = l(a, c, f, i, n[h + 5], 12, 1200080426), i = l(i, a, c, f, n[h + 6], 17, -1473231341), f = l(f, i, a, c, n[h + 7], 22, -45705983), c = l(c, f, i, a, n[h + 8], 7, 1770035416), a = l(a, c, f, i, n[h + 9], 12, -1958414417), i = l(i, a, c, f, n[h + 10], 17, -42063), f = l(f, i, a, c, n[h + 11], 22, -1990404162), c = l(c, f, i, a, n[h + 12], 7, 1804603682), a = l(a, c, f, i, n[h + 13], 12, -40341101), i = l(i, a, c, f, n[h + 14], 17, -1502002290), c = g(c, f = l(f, i, a, c, n[h + 15], 22, 1236535329), i, a, n[h + 1], 5, -165796510), a = g(a, c, f, i, n[h + 6], 9, -1069501632), i = g(i, a, c, f, n[h + 11], 14, 643717713), f = g(f, i, a, c, n[h], 20, -373897302), c = g(c, f, i, a, n[h + 5], 5, -701558691), a = g(a, c, f, i, n[h + 10], 9, 38016083), i = g(i, a, c, f, n[h + 15], 14, -660478335), f = g(f, i, a, c, n[h + 4], 20, -405537848), c = g(c, f, i, a, n[h + 9], 5, 568446438), a = g(a, c, f, i, n[h + 14], 9, -1019803690), i = g(i, a, c, f, n[h + 3], 14, -187363961), f = g(f, i, a, c, n[h + 8], 20, 1163531501), c = g(c, f, i, a, n[h + 13], 5, -1444681467), a = g(a, c, f, i, n[h + 2], 9, -51403784), i = g(i, a, c, f, n[h + 7], 14, 1735328473), c = v(c, f = g(f, i, a, c, n[h + 12], 20, -1926607734), i, a, n[h + 5], 4, -378558), a = v(a, c, f, i, n[h + 8], 11, -2022574463), i = v(i, a, c, f, n[h + 11], 16, 1839030562), f = v(f, i, a, c, n[h + 14], 23, -35309556), c = v(c, f, i, a, n[h + 1], 4, -1530992060), a = v(a, c, f, i, n[h + 4], 11, 1272893353), i = v(i, a, c, f, n[h + 7], 16, -155497632), f = v(f, i, a, c, n[h + 10], 23, -1094730640), c = v(c, f, i, a, n[h + 13], 4, 681279174), a = v(a, c, f, i, n[h], 11, -358537222), i = v(i, a, c, f, n[h + 3], 16, -722521979), f = v(f, i, a, c, n[h + 6], 23, 76029189), c = v(c, f, i, a, n[h + 9], 4, -640364487), a = v(a, c, f, i, n[h + 12], 11, -421815835), i = v(i, a, c, f, n[h + 15], 16, 530742520), c = m(c, f = v(f, i, a, c, n[h + 2], 23, -995338651), i, a, n[h], 6, -198630844), a = m(a, c, f, i, n[h + 7], 10, 1126891415), i = m(i, a, c, f, n[h + 14], 15, -1416354905), f = m(f, i, a, c, n[h + 5], 21, -57434055), c = m(c, f, i, a, n[h + 12], 6, 1700485571), a = m(a, c, f, i, n[h + 3], 10, -1894986606), i = m(i, a, c, f, n[h + 10], 15, -1051523), f = m(f, i, a, c, n[h + 1], 21, -2054922799), c = m(c, f, i, a, n[h + 8], 6, 1873313359), a = m(a, c, f, i, n[h + 15], 10, -30611744), i = m(i, a, c, f, n[h + 6], 15, -1560198380), f = m(f, i, a, c, n[h + 13], 21, 1309151649), c = m(c, f, i, a, n[h + 4], 6, -145523070), a = m(a, c, f, i, n[h + 11], 10, -1120210379), i = m(i, a, c, f, n[h + 2], 15, 718787259), f = m(f, i, a, c, n[h + 9], 21, -343485551), c = d(c, r), f = d(f, e), i = d(i, o), a = d(a, u); return [c, f, i, a] } function i(n) { for (var t = "", r = 32 * n.length, e = 0; e < r; e += 8)t += String.fromCharCode(n[e >> 5] >>> e % 32 & 255); return t } function a(n) { var t = []; for (t[(n.length >> 2) - 1] = void 0, e = 0; e < t.length; e += 1)t[e] = 0; for (var r = 8 * n.length, e = 0; e < r; e += 8)t[e >> 5] |= (255 & n.charCodeAt(e / 8)) << e % 32; return t } function e(n) { for (var t, r = "0123456789abcdef", e = "", o = 0; o < n.length; o += 1)t = n.charCodeAt(o), e += r.charAt(t >>> 4 & 15) + r.charAt(15 & t); return e } function r(n) { return unescape(encodeURIComponent(n)) } function o(n) { return i(c(a(n = r(n)), 8 * n.length)) } function u(n, t) { return function (n, t) { var r, e = a(n), o = [], u = []; for (o[15] = u[15] = void 0, 16 < e.length && (e = c(e, 8 * n.length)), r = 0; r < 16; r += 1)o[r] = 909522486 ^ e[r], u[r] = 1549556828 ^ e[r]; return t = c(o.concat(a(t)), 512 + 8 * t.length), i(c(u.concat(t), 640)) }(r(n), r(t)) } function t(n, t, r) { return t ? r ? u(t, n) : e(u(t, n)) : r ? o(n) : e(o(n)) } "function" == typeof define && define.amd ? define(function () { return t }) : "object" == typeof module && module.exports ? module.exports = t : n.md5 = t }(this);

var profile_url = gravatar_url + md5(profile) + "?s=" + profile_size;
}
else {
console.log("%c Email address invaild, please entre a vaild email or image url! ", "color: red"); // Error message if email entered is invalid
console.log("%c Email 无效,请输入有效 Email 或者图片 url ", "color: red");
profile_error = 1;
}
}
else {
profile_url = profile; // If email is not entered, use whatever value entered (presumably a url)
}

if (profile_error > 0) {
profile_url = profile_url = '/assets/images/placeholder.png'; // Set a default avatar in case profile image is undefined
}

document.getElementById("i").style.background = "url('" + profile_url + "') no-repeat center/cover"; // Set center picture
</script>

<!-- Button Section Starts -->
<div class="buttons" id="pending">
<p id="depends" class="middlebtn">
<a href="#showqrcode" class="btn btn-primary" id="tenpaybtn" onclick="opentenpay()"><svg class="icon" aria-hidden="true">
<a href="#showqrcode" class="btn btn-primary" id="tenpaybtn" onclick="opentenpay()"><svg class="icon"
aria-hidden="true">
<use xlink:href="#icon-QQ"></use>
</svg></a><span></span>
<a href="#showqrcode" class="btn btn-primary" id="toclick" onclick="openwechat()"><svg class="icon" aria-hidden="true">
<a href="#showqrcode" class="btn btn-primary" id="toclick" onclick="openwechat()"><svg class="icon"
aria-hidden="true">
<use xlink:href="#icon-weixinzhifu"></use>
</svg></a><span></span>
<a href="#showqrcode" class="btn btn-primary" id="alipaybtn" onclick="openalipay()"><svg class="icon" aria-hidden="true">
<a href="#showqrcode" class="btn btn-primary" id="alipaybtn" onclick="openalipay()"><svg class="icon"
aria-hidden="true">
<use xlink:href="#icon-iconfontrectangle390"></use>
</svg></a><span></span>
<button class="btn btn-primary" id="paypalbtn" onclick="openbox()"><svg class="icon paypal-wide" aria-hidden="true">
<button class="btn btn-primary" id="paypalbtn" onclick="openbox()"><svg class="icon paypal-wide"
aria-hidden="true">
<use xlink:href="#icon-paypal"></use>
</svg></button>
</p>
</div>
</div>
<!-- Button Section Ends -->

<!-- Modal Section Starts -->
<div class="modal" id="showqrcode">
<div class="modal-container" role="document">
<div class="modal-header" id="btncontainer">
<a href="#" class="btn btn-clear float-right" id="qrcodeclose" aria-label="Close"></a>
<div id="titleinfo" class="modal-title h5" style="text-align: center"></div>
</div>
<div class="modal-body">
<div class="content" id="qrcontainer">
<div id="currentqrcode" class="img smaller"></div>
<img id="tenpayonly" class="img smaller">
</div>
<!-- Button Section Ends -->

<!-- Modal Section Starts -->
<div class="modal" id="showqrcode">
<div class="modal-container" role="document">
<div class="modal-header" id="btncontainer">
<a href="#" class="btn btn-clear float-right" id="qrcodeclose" aria-label="Close"></a>
<div id="titleinfo" class="modal-title h5" style="text-align: center"></div>
</div>
<div class="modal-body">
<div class="content" id="qrcontainer">
<div id="currentqrcode" class="img smaller"></div>
<img id="tenpayonly" class="img smaller">
</div>
</div>
</div>
<!-- Modal Section Ends -->
</div>
<!-- Modal Section Ends -->



<!-- Footer Scripts -->
<!-- Please do not swap scripts' order -->
<!-- Load Javascript files from lib.baomitu.com and local - Default -->

<script crossorigin="anonymous" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" src="https://lib.baomitu.com/jquery/3.6.0/jquery.min.js"></script>
<script crossorigin="anonymous" integrity="sha512-P9oNnyfvOZrY1H0D5js+UcLZr+vLkX50glCUlpJAd/RL84+KBtGI4yvH5YVM5TejD+jbURwQq3C/7hgYWOo8bQ==" src="https://lib.baomitu.com/lrsjng.jquery-qrcode/0.18.0/jquery-qrcode.min.js"></script>
<script crossorigin="anonymous" integrity="sha512-Hmp6qDy9imQmd15Ds1WQJ3uoyGCUz5myyr5ijainC1z+tP7wuXcze5ZZR3dF7+rkRALfNy7jcfgS5hH8wJ/2dQ==" src="https://lib.baomitu.com/blueimp-md5/2.18.0/js/md5.min.js"></script>
<script src="/assets/js/function.min.js"></script>
<script src="/assets/js/font_974919_xgtacm93vxp.min.js"></script>
<!-- Load Javascript files from both CDN local - Default -->

<script src="https://s1.pstatp.com/cdn/expire-1-M/jquery/3.6.0/jquery.min.js"
type="application/javascript"></script>
<script src="https://s1.pstatp.com/cdn/expire-1-M/lrsjng.jquery-qrcode/0.18.0/jquery-qrcode.min.js"
type="application/javascript"></script>
<script src="/assets/js/function.js"></script>
<script src="/assets/js/font_974919_xgtacm93vxp.js"></script>

<!-- Static files of this project is available on CDNJS and respective mirror sites
https://cdnjs.com/libraries/merger
https://cdn.baomitu.com/merger
https://css.loli.net (https://cdnjs.loli.net) -->
</body>

</html>

0 comments on commit 7839a15

Please sign in to comment.