From: hylom Date: Wed, 15 May 2019 14:27:29 +0000 (+0900) Subject: js: deprecate ns-util.js, use newslash-util.js X-Git-Tag: v0.1.12~16 X-Git-Url: http://git.osdn.net/view?p=newslash%2Fnewslash.git;a=commitdiff_plain;h=01ef500f5bad0cbe71ea5d4f6dcdf3246ac0650a js: deprecate ns-util.js, use newslash-util.js --- diff --git a/src/newslash_web/public/js/bundle-config.json b/src/newslash_web/public/js/bundle-config.json index 1632d4ae..e31f54a2 100644 --- a/src/newslash_web/public/js/bundle-config.json +++ b/src/newslash_web/public/js/bundle-config.json @@ -6,6 +6,7 @@ "dom-util.js", "ui.js", "newslash.js", + "newslash-util.js", "escape-html.js", "base.js", "ns-util.js", diff --git a/src/newslash_web/public/js/comment-tree.js b/src/newslash_web/public/js/comment-tree.js index 07b067e9..0bb64ecb 100644 --- a/src/newslash_web/public/js/comment-tree.js +++ b/src/newslash_web/public/js/comment-tree.js @@ -123,8 +123,8 @@ commentTree.run = function (params) { computed: { commentLocalTime: function () { if (this.comment.create_time == "") return ""; - var dt = nsUtil.decodeMySQLDateTime(this.comment.create_time); - return nsUtil.formatToLocalDateTime(dt); + var dt = newslash.util.decodeMySQLDateTime(this.comment.create_time); + return newslash.util.formatToLocalDateTime(dt); }, isIpidVisible: function () { return user.is_admin; }, isM2able: function () { return user.is_login; }, diff --git a/src/newslash_web/public/js/newslash-util.js b/src/newslash_web/public/js/newslash-util.js new file mode 100644 index 00000000..055902db --- /dev/null +++ b/src/newslash_web/public/js/newslash-util.js @@ -0,0 +1,88 @@ +/* newslash-util.js */ + +(function () { + var nsUtil = {}; + Newslash.prototype.util = nsUtil; + + nsUtil.formatToLocalISOString = function formatToLocalISOString(dt) { + function pad(number) { + return (number < 10) ? ('0' + number) : number; + } + return dt.getFullYear() + + '-' + pad(dt.getMonth() + 1) + + '-' + pad(dt.getDate()) + + 'T' + pad(dt.getHours()) + + ':' + pad(dt.getMinutes()) + + ':' + pad(dt.getSeconds()); + }; + + nsUtil.formatToLocalDateTime = function formatToLocalDateTime(dt) { + function pad(number) { + return (number < 10) ? ('0' + number) : number; + } + return dt.getFullYear() + + '年' + (dt.getMonth() + 1) + + '月' + (dt.getDate()) + + '日' + (dt.getHours()) + + '時' + pad(dt.getMinutes()) + + '分'; + }; + + nsUtil.decodeMySQLDateTime = function decodeMySQLDateTime(mysqlDateTime) { + var rex = /^(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})$/; + var m = rex.exec(mysqlDateTime); + if (!m) return undefined; + + var date = m[1]; + var time = m[2]; + + var utcString = date + "T" + time + "+00:00"; + return new Date(utcString); + }; + + nsUtil.encodeMySQLDateTime = function encodeMySQLDateTime(dt) { + function pad(number) { + return (number < 10) ? ('0' + number) : number; + } + return dt.getUTCFullYear() + + '/' + pad(dt.getUTCMonth() + 1) + + '/' + pad(dt.getUTCDate()) + + ' ' + pad(dt.getUTCHours()) + + ':' + pad(dt.getUTCMinutes()) + + ':' + pad(dt.getUTCSecondes()); + }; + + nsUtil.topicIconURL = function topicIconURL(keyword) { + var topics = siteConfig.topics; + if (keyword && topics[keyword] && topics[keyword].image) { + return siteConfig.siteInfo.topic_icon_base_url + "/" + topics[keyword].image; + } + return ""; + }; + + nsUtil.quoteHtml = function quoteHtml(html, allowedTags) { + var escaped = eh.escape(allowedTags, html); + var quoted = eh.blank_line_to_paragraph(escaped); + var parsed = $.parseHTML(quoted, null); + var result = []; + parsed.forEach((i) => { + i.normalize(); + result.push(i.outerHTML); + }); + return result.join('\n'); + }; + + nsUtil.quoteTitle = function quoteTitle(html, allowedTags) { + var escaped = '
' + eh.escape(allowedTags, html) + '
'; + var parsed = $.parseHTML(escaped, null); + var result = []; + parsed.forEach((i) => { + i.normalize(); + var t = i.innerHTML || i.wholeText; + result.push(t); + }); + return result.join(''); + }; + +}).apply(); + diff --git a/src/newslash_web/public/js/newslash.js b/src/newslash_web/public/js/newslash.js index ec769316..0227af29 100644 --- a/src/newslash_web/public/js/newslash.js +++ b/src/newslash_web/public/js/newslash.js @@ -41,6 +41,13 @@ function _initNewslash() { return path + "/"; }; + /* CSRF securiry token */ + Newslash.getCsrfToken = function getCsrfToken(resourceID) { + if (!resourceID) { return this.fail(); } + var url = "/api/v1/token?rc=" + resourceID; + return this.get(url); + }; + /* base get.post API */ Newslash.prototype.get = function (path) { var url = this.baseUrl + path; diff --git a/src/newslash_web/public/js/ns-util.js b/src/newslash_web/public/js/ns-util.js index fcb2ed32..4a38602e 100644 --- a/src/newslash_web/public/js/ns-util.js +++ b/src/newslash_web/public/js/ns-util.js @@ -1,3 +1,5 @@ +/* ns-util.js - deprecated! use newslash.util. */ + var nsUtil = { getCsrfToken: function getCstfToken(resourceID, callback) { if (callback && typeof(callback) != "function") { diff --git a/src/newslash_web/public/js/vote.js b/src/newslash_web/public/js/vote.js index c98e9bbd..ad70307e 100644 --- a/src/newslash_web/public/js/vote.js +++ b/src/newslash_web/public/js/vote.js @@ -16,24 +16,25 @@ $(".vote-body input.vote-btn").on('click', function(ev) { if (value.length == 0) { return false; } - nsUtil.getCsrfToken("vote", function (result) { - if (!result || result.error) { - if(statusBar) { - statusBar.error(result.message); + newslash.getCsrfToken("vote").then( + resp => { + var csrfToken = resp.token; + if(!csrfToken) { + if(statusBar) { + statusBar.error("invalid token"); + } + return; } + $("#vote_token_" + qid).val(csrfToken); + formElement.submit(); return; - } - var csrfToken = result.token; - if(!csrfToken) { + }, + fail => { if(statusBar) { - statusBar.error("invalid token"); + statusBar.error("failed"); } - return; } - $("#vote_token_" + qid).val(csrfToken); - formElement.submit(); - return; - }); + ); return false; });