summaryrefslogtreecommitdiff
path: root/_includes/pageview-providers
diff options
context:
space:
mode:
authorKarl Hallsby <karl@hallsby.com>2020-09-27 17:45:13 -0500
committerKarl Hallsby <karl@hallsby.com>2020-09-27 17:45:13 -0500
commitc6bf5f7c895287d2028f6024265913b59784a154 (patch)
tree3a298df17d9472a679411dd81ea00a1239652477 /_includes/pageview-providers
parent50dafcddc0392b99b228824274b1b97d0e72e423 (diff)
Bring all of jekyll-text-theme _includes into site
Diffstat (limited to '_includes/pageview-providers')
-rw-r--r--_includes/pageview-providers/custom/home.html3
-rw-r--r--_includes/pageview-providers/custom/post.html3
-rw-r--r--_includes/pageview-providers/leancloud/home.html35
-rw-r--r--_includes/pageview-providers/leancloud/leancloud.js72
-rw-r--r--_includes/pageview-providers/leancloud/post.html31
5 files changed, 144 insertions, 0 deletions
diff --git a/_includes/pageview-providers/custom/home.html b/_includes/pageview-providers/custom/home.html
new file mode 100644
index 0000000..7fabc80
--- /dev/null
+++ b/_includes/pageview-providers/custom/home.html
@@ -0,0 +1,3 @@
+<!-- start custom pageview snippet (for Home layout) -->
+
+<!-- end custom pageview snippet (for Home layout) -->
diff --git a/_includes/pageview-providers/custom/post.html b/_includes/pageview-providers/custom/post.html
new file mode 100644
index 0000000..c9d0f04
--- /dev/null
+++ b/_includes/pageview-providers/custom/post.html
@@ -0,0 +1,3 @@
+<!-- start custom pageview snippet (for the post) -->
+
+<!-- end custom pageview snippet (for the post) --> \ No newline at end of file
diff --git a/_includes/pageview-providers/leancloud/home.html b/_includes/pageview-providers/leancloud/home.html
new file mode 100644
index 0000000..5dc99b7
--- /dev/null
+++ b/_includes/pageview-providers/leancloud/home.html
@@ -0,0 +1,35 @@
+{%- include snippets/get-sources.html -%}
+{%- assign _sources = __return -%}
+
+{%- assign _LEANCLOUD_APP_ID = site.pageview.leancloud.app_id -%}
+{%- assign _LEANCLOUD_APP_KEY = site.pageview.leancloud.app_key -%}
+{%- assign _LEANCLOUD_APP_CLASS = site.pageview.leancloud.app_class -%}
+
+{%- if _LEANCLOUD_APP_ID and
+ _LEANCLOUD_APP_KEY and
+ _LEANCLOUD_APP_CLASS -%}
+
+ <script>
+ {%- include pageview-providers/leancloud/leancloud.js -%}
+ </script>
+ <script>
+ window.Lazyload.js(['{{ _sources.jquery }}', '{{ _sources.leancloud_js_sdk}}'], function() {
+ var pageview = window.pageview(AV, {
+ appId: '{{ _LEANCLOUD_APP_ID }}',
+ appKey: '{{ _LEANCLOUD_APP_KEY }}',
+ appClass: '{{ _LEANCLOUD_APP_CLASS }}'
+ });
+ $('.js-pageview').each(function() {
+ var $this = $(this);
+ var key = $this.attr('data-page-key');
+ pageview.get(key, function(view) {
+ $this.attr('itemprop', 'userInteractionCount').attr('content', view).text(view);
+ });
+ });
+ });
+ </script>
+
+{%- endif -%}
+
+
+
diff --git a/_includes/pageview-providers/leancloud/leancloud.js b/_includes/pageview-providers/leancloud/leancloud.js
new file mode 100644
index 0000000..32e3ba8
--- /dev/null
+++ b/_includes/pageview-providers/leancloud/leancloud.js
@@ -0,0 +1,72 @@
+(function() {
+ function errorHandler(error, callback) {
+ if (error) {
+ callback && callback(error);
+ throw error;
+ }
+ }
+
+ function pageview(_AV, options) {
+ var AV = _AV;
+ var appId, appKey, appClass;
+ appId = options.appId;
+ appKey = options.appKey;
+ appClass = options.appClass;
+ AV.init({
+ serverURLs: 'https://avoscloud.com',
+ appId: appId,
+ appKey: appKey
+ });
+ return {
+ get: get,
+ increase: increase
+ };
+
+ function searchKey(key) {
+ var query = new AV.Query(appClass);
+ query.equalTo('key', key);
+ return query.first();
+ }
+
+ function insert(key, title) {
+ var Blog = AV.Object.extend(appClass);
+ var blog = new Blog();
+ blog.set('title', title);
+ blog.set('key', key);
+ blog.set('views', 0);
+ return blog.save();
+ }
+
+ function increment(result) {
+ result.increment('views', 1);
+ return result.save(null, {
+ fetchWhenSave: true
+ });
+ }
+
+ function get(key, callback) {
+ searchKey(key).then(function(result) {
+ if (result) {
+ callback && callback(result.attributes.views);
+ }
+ }, errorHandler);
+ }
+
+ function increase(key, title, callback) {
+ searchKey(key).then(function(result) {
+ if (result) {
+ increment(result).then(function(result) {
+ callback && callback(result.attributes.views);
+ });
+ } else {
+ insert(key, title).then(function(result) {
+ increment(result).then(function(result) {
+ callback && callback(result.attributes.views);
+ });
+ }, errorHandler);
+ }
+ }, errorHandler);
+ }
+ }
+ window.pageview = pageview;
+})();
diff --git a/_includes/pageview-providers/leancloud/post.html b/_includes/pageview-providers/leancloud/post.html
new file mode 100644
index 0000000..ebd7510
--- /dev/null
+++ b/_includes/pageview-providers/leancloud/post.html
@@ -0,0 +1,31 @@
+{%- include snippets/get-sources.html -%}
+{%- assign _sources = __return -%}
+
+{%- assign _LEANCLOUD_APP_ID = site.pageview.leancloud.app_id -%}
+{%- assign _LEANCLOUD_APP_KEY = site.pageview.leancloud.app_key -%}
+{%- assign _LEANCLOUD_APP_CLASS = site.pageview.leancloud.app_class -%}
+
+{%- if page.key and
+ _LEANCLOUD_APP_ID and
+ _LEANCLOUD_APP_KEY and
+ _LEANCLOUD_APP_CLASS -%}
+
+ <script>
+ {%- include pageview-providers/leancloud/leancloud.js -%}
+ </script>
+ <script>
+ window.Lazyload.js(['{{ _sources.jquery }}', '{{ _sources.leancloud_js_sdk}}'], function() {
+ var pageview = window.pageview(AV, {
+ appId: '{{ _LEANCLOUD_APP_ID }}',
+ appKey: '{{ _LEANCLOUD_APP_KEY }}',
+ appClass: '{{ _LEANCLOUD_APP_CLASS }}'
+ });
+ var key = '{{ page.key }}';
+ var title = {{ page.title | jsonify }};
+ pageview.increase(key, title, function(view) {
+ $("[data-page-key='{{ page.key }}']").text(view);
+ });
+ });
+ </script>
+
+{%- endif -%} \ No newline at end of file