appscms-tools-theme 5.2.0 → 5.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/_data/.DS_Store +0 -0
  3. data/_data/aitools/en/instagram-hashtag-generator.json +2 -17
  4. data/_data/contenttool/en/features.json +18 -243
  5. data/_data/header/en/data.json +4 -0
  6. data/_includes/.DS_Store +0 -0
  7. data/_includes/aitools/instagram-hashtag-generator.html +0 -0
  8. data/_includes/contenttool_banner.html +266 -0
  9. data/_includes/contenttool_result_banner.html +135 -0
  10. data/_layouts/appscms-download.html +110 -99
  11. data/_layouts/appscms-feature.html +94 -77
  12. data/assets/.DS_Store +0 -0
  13. data/assets/js/TopScroll.js +8 -0
  14. data/assets/js/adBlocker.js +68 -0
  15. data/assets/js/ads.js +8 -0
  16. data/assets/js/append-div.js +10 -0
  17. data/assets/js/appscms-infographics.js +0 -0
  18. data/assets/js/appscms-login.js +447 -0
  19. data/assets/js/appscms-search-home1.js +136 -0
  20. data/assets/js/appscms-search.js +133 -0
  21. data/assets/js/appscms-theme.js +459 -0
  22. data/assets/js/batch.js +219 -0
  23. data/assets/js/calculator-tooltip.js +3 -0
  24. data/assets/js/devtools.js +82 -0
  25. data/assets/js/face-api.js +38064 -0
  26. data/assets/js/face-detection.js +303 -0
  27. data/assets/js/faceSystem.js +0 -0
  28. data/assets/js/featureResult.js +48 -0
  29. data/assets/js/frame.js +264 -0
  30. data/assets/js/googledrive.js +158 -0
  31. data/assets/js/homeResult.js +37 -0
  32. data/assets/js/manifest.json +17 -0
  33. data/assets/js/models/age_gender_model-shard1 +0 -0
  34. data/assets/js/models/age_gender_model-weights_manifest.json +1 -0
  35. data/assets/js/models/face_expression_model-shard1 +0 -0
  36. data/assets/js/models/face_expression_model-weights_manifest.json +1 -0
  37. data/assets/js/models/face_landmark_68_model-shard1 +0 -0
  38. data/assets/js/models/face_landmark_68_model-weights_manifest.json +1 -0
  39. data/assets/js/models/face_landmark_68_tiny_model-shard1 +0 -0
  40. data/assets/js/models/face_landmark_68_tiny_model-weights_manifest.json +1 -0
  41. data/assets/js/models/face_recognition_model-shard1 +0 -0
  42. data/assets/js/models/face_recognition_model-shard2 +6 -0
  43. data/assets/js/models/face_recognition_model-weights_manifest.json +1 -0
  44. data/assets/js/models/mtcnn_model-shard1 +0 -0
  45. data/assets/js/models/mtcnn_model-weights_manifest.json +1 -0
  46. data/assets/js/models/ssd_mobilenetv1_model-shard1 +0 -0
  47. data/assets/js/models/ssd_mobilenetv1_model-shard2 +145 -0
  48. data/assets/js/models/ssd_mobilenetv1_model-weights_manifest.json +1 -0
  49. data/assets/js/models/tiny_face_detector_model-shard1 +0 -0
  50. data/assets/js/models/tiny_face_detector_model-weights_manifest.json +1 -0
  51. data/assets/js/multiselect.js +185 -0
  52. data/assets/js/partytown/debug/partytown-atomics.js +929 -0
  53. data/assets/js/partytown/debug/partytown-media.js +374 -0
  54. data/assets/js/partytown/debug/partytown-sandbox-sw.js +920 -0
  55. data/assets/js/partytown/debug/partytown-sw.js +59 -0
  56. data/assets/js/partytown/debug/partytown-ww-atomics.js +2699 -0
  57. data/assets/js/partytown/debug/partytown-ww-sw.js +2691 -0
  58. data/assets/js/partytown/debug/partytown.js +114 -0
  59. data/assets/js/partytown/partytown-atomics.js +600 -0
  60. data/assets/js/partytown/partytown-media.js +2 -0
  61. data/assets/js/partytown/partytown-sw.js +50 -0
  62. data/assets/js/perspective.min.js +182 -0
  63. data/assets/js/photo-effects.json +85 -0
  64. data/assets/js/redirectResult.js +10 -0
  65. data/assets/js/sharePage.js +65 -0
  66. data/assets/js/testing-batch.js +39 -0
  67. data/assets/js/theme.js +104 -0
  68. data/assets/js/usageTracking.js +143 -0
  69. data/assets/js/usageTrackingEvents.js +6 -0
  70. data/assets/js/userUsageCount.js +0 -0
  71. data/assets/js/webvitals.js +5 -0
  72. metadata +65 -3
@@ -0,0 +1,143 @@
1
+ // Generate a unique ID for the user (if not already generated)
2
+ const generateUserID = () => {
3
+ // Check if the user ID is already stored in cookies or local storage
4
+ const storedUserID = getStoredUserID();
5
+
6
+ if (storedUserID) {
7
+ return storedUserID;
8
+ }
9
+
10
+ // Example: Generating a random string
11
+ const characters =
12
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
13
+ let id = "";
14
+ for (let i = 0; i < 10; i++) {
15
+ id += characters.charAt(Math.floor(Math.random() * characters.length));
16
+ }
17
+
18
+ // Store the generated user ID in cookies or local storage
19
+ storeUserID(id);
20
+
21
+ return id;
22
+ };
23
+
24
+ // Get the stored user ID from cookies or local storage
25
+ const getStoredUserID = () => {
26
+ return localStorage.getItem("userID");
27
+ };
28
+
29
+ // Store the user ID in cookies or local storage
30
+ const storeUserID = (userID) => {
31
+ localStorage.setItem("userID", userID);
32
+ };
33
+
34
+ // Get the current date in YYYY-MM-DD format
35
+ const getCurrentDate = () => {
36
+ const today = new Date();
37
+ const year = today.getFullYear();
38
+ const month = String(today.getMonth() + 1).padStart(2, "0");
39
+ const day = String(today.getDate()).padStart(2, "0");
40
+ return `${year}-${month}-${day}`;
41
+ };
42
+
43
+ let userTrackingCountLimit = "20";
44
+ const checkUsage = () => {
45
+ const today = new Date().toDateString();
46
+ const usageCount = getCookie("featureUsageCount");
47
+
48
+ if (usageCount) {
49
+ // User has already used the feature today
50
+ if (usageCount >= Number(userTrackingCountLimit)) {
51
+ showShareModal();
52
+ } else {
53
+ incrementUsageCount(usageCount);
54
+ }
55
+ } else {
56
+ // First usage of the day
57
+ setCookie("featureUsageCount", 1, getExpirationDate());
58
+ }
59
+ const userID = generateUserID();
60
+ try {
61
+ if ((usageCount + 1) % 5 === 0) {
62
+ gtag("event", `feature_used_${usageCount + 1}_times`, {
63
+ user_id: userID,
64
+ userID: userID,
65
+ feature: window.location.pathname + location.search,
66
+ });
67
+ }
68
+ } catch (error) {
69
+ console.log(error);
70
+ }
71
+
72
+ try {
73
+ gtag("event", "feature_used", {
74
+ user_id: userID,
75
+ userID: userID,
76
+ feature: window.location.pathname + location.search,
77
+ });
78
+ } catch (error) {
79
+ console.log(error);
80
+ }
81
+ };
82
+ const incrementUsageCount = (count) => {
83
+ const today = new Date().toDateString();
84
+
85
+ if (count >= Number(userTrackingCountLimit)) {
86
+ showShareModal();
87
+ } else {
88
+ count++;
89
+ setCookie("featureUsageCount", count, getExpirationDate());
90
+ }
91
+ };
92
+
93
+ const showShareModal = () => {
94
+ document.getElementById("shareModal").style.display = "block";
95
+ };
96
+
97
+ const handleShare = () => {
98
+ const usageCount = getCookie("featureUsageCount");
99
+ if (usageCount) {
100
+ setCookie("featureUsageCount", 0, getExpirationDate());
101
+ }
102
+ document.getElementById("shareModal").style.display = "none";
103
+ try {
104
+ const userID = generateUserID();
105
+ gtag("event", "feature_shared", {
106
+ user_id: userID,
107
+ userID: userID,
108
+ feature: window.location.pathname + location.search,
109
+ });
110
+ } catch (error) {
111
+ console.log(error);
112
+ }
113
+ };
114
+
115
+ const getCookie = (name) => {
116
+ const cookies = document.cookie.split(";");
117
+ for (let i = 0; i < cookies.length; i++) {
118
+ const cookie = cookies[i].trim();
119
+ if (cookie.indexOf(name + "=") === 0) {
120
+ return parseInt(cookie.substring((name + "=").length, cookie.length));
121
+ }
122
+ }
123
+ return null;
124
+ };
125
+
126
+ const setCookie = (name, value, expires) => {
127
+ document.cookie = `${name}=${value};expires=${expires};path=/`;
128
+ };
129
+
130
+ const getExpirationDate = () => {
131
+ const date = new Date();
132
+ date.setTime(date.getTime() + 24 * 60 * 60 * 1000); // 24 hours in milliseconds
133
+ return date.toUTCString();
134
+ };
135
+ const socialShare = document.querySelectorAll(".social-share");
136
+
137
+ if (socialShare) {
138
+ Array.from(socialShare).map((item) => {
139
+ item.addEventListener("click", () => {
140
+ handleShare();
141
+ });
142
+ });
143
+ }
@@ -0,0 +1,6 @@
1
+ const inputBoxOfFeatureFile = document.querySelector("#inputbox");
2
+ if (inputBoxOfFeatureFile) {
3
+ inputBoxOfFeatureFile.addEventListener("click", () => {
4
+ checkUsage();
5
+ });
6
+ }
File without changes
@@ -0,0 +1,5 @@
1
+
2
+ webVitals.onCLS(console.log);
3
+ webVitals.onFID(console.log);
4
+ webVitals.onLCP(console.log);
5
+ webVitals.onINP(console.log);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appscms-tools-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 5.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - vivek-appscms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-30 00:00:00.000000000 Z
11
+ date: 2025-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -168,6 +168,7 @@ files:
168
168
  - _includes/Usp/usp.html
169
169
  - _includes/adblocker.html
170
170
  - _includes/adsense/adsense.html
171
+ - _includes/aitools/instagram-hashtag-generator.html
171
172
  - _includes/alternates/alternates.html
172
173
  - _includes/appscms/.DS_Store
173
174
  - _includes/appscms/category-tabs/category-tabs.html
@@ -214,6 +215,8 @@ files:
214
215
  - _includes/authors/authors.html
215
216
  - _includes/batch-conversion.html
216
217
  - _includes/bookmark.html
218
+ - _includes/contenttool_banner.html
219
+ - _includes/contenttool_result_banner.html
217
220
  - _includes/cssfile/links.html
218
221
  - _includes/custom-head.html
219
222
  - _includes/customCode.html
@@ -595,6 +598,65 @@ files:
595
598
  - assets/images/vectorpaint.svg
596
599
  - assets/images/video.png
597
600
  - assets/instagram.svg
601
+ - assets/js/TopScroll.js
602
+ - assets/js/adBlocker.js
603
+ - assets/js/ads.js
604
+ - assets/js/append-div.js
605
+ - assets/js/appscms-infographics.js
606
+ - assets/js/appscms-login.js
607
+ - assets/js/appscms-search-home1.js
608
+ - assets/js/appscms-search.js
609
+ - assets/js/appscms-theme.js
610
+ - assets/js/batch.js
611
+ - assets/js/calculator-tooltip.js
612
+ - assets/js/devtools.js
613
+ - assets/js/face-api.js
614
+ - assets/js/face-detection.js
615
+ - assets/js/faceSystem.js
616
+ - assets/js/featureResult.js
617
+ - assets/js/frame.js
618
+ - assets/js/googledrive.js
619
+ - assets/js/homeResult.js
620
+ - assets/js/manifest.json
621
+ - assets/js/models/age_gender_model-shard1
622
+ - assets/js/models/age_gender_model-weights_manifest.json
623
+ - assets/js/models/face_expression_model-shard1
624
+ - assets/js/models/face_expression_model-weights_manifest.json
625
+ - assets/js/models/face_landmark_68_model-shard1
626
+ - assets/js/models/face_landmark_68_model-weights_manifest.json
627
+ - assets/js/models/face_landmark_68_tiny_model-shard1
628
+ - assets/js/models/face_landmark_68_tiny_model-weights_manifest.json
629
+ - assets/js/models/face_recognition_model-shard1
630
+ - assets/js/models/face_recognition_model-shard2
631
+ - assets/js/models/face_recognition_model-weights_manifest.json
632
+ - assets/js/models/mtcnn_model-shard1
633
+ - assets/js/models/mtcnn_model-weights_manifest.json
634
+ - assets/js/models/ssd_mobilenetv1_model-shard1
635
+ - assets/js/models/ssd_mobilenetv1_model-shard2
636
+ - assets/js/models/ssd_mobilenetv1_model-weights_manifest.json
637
+ - assets/js/models/tiny_face_detector_model-shard1
638
+ - assets/js/models/tiny_face_detector_model-weights_manifest.json
639
+ - assets/js/multiselect.js
640
+ - assets/js/partytown/debug/partytown-atomics.js
641
+ - assets/js/partytown/debug/partytown-media.js
642
+ - assets/js/partytown/debug/partytown-sandbox-sw.js
643
+ - assets/js/partytown/debug/partytown-sw.js
644
+ - assets/js/partytown/debug/partytown-ww-atomics.js
645
+ - assets/js/partytown/debug/partytown-ww-sw.js
646
+ - assets/js/partytown/debug/partytown.js
647
+ - assets/js/partytown/partytown-atomics.js
648
+ - assets/js/partytown/partytown-media.js
649
+ - assets/js/partytown/partytown-sw.js
650
+ - assets/js/perspective.min.js
651
+ - assets/js/photo-effects.json
652
+ - assets/js/redirectResult.js
653
+ - assets/js/sharePage.js
654
+ - assets/js/testing-batch.js
655
+ - assets/js/theme.js
656
+ - assets/js/usageTracking.js
657
+ - assets/js/usageTrackingEvents.js
658
+ - assets/js/userUsageCount.js
659
+ - assets/js/webvitals.js
598
660
  - assets/like.svg
599
661
  - assets/linkdin.svg
600
662
  - assets/noserverupload.svg
@@ -631,7 +693,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
631
693
  - !ruby/object:Gem::Version
632
694
  version: '0'
633
695
  requirements: []
634
- rubygems_version: 3.3.26
696
+ rubygems_version: 3.3.7
635
697
  signing_key:
636
698
  specification_version: 4
637
699
  summary: Appscms theme for all tools