isite 2023.1.10 → 2023.8.10

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.
@@ -1,81 +1,87 @@
1
1
  .tabs {
2
- display: inline-block;
3
- padding: 5px;
4
- width: 100%;
5
- transition: all 0.1s ease;
2
+ display: inline-block;
3
+ padding: 5px;
4
+ width: 100%;
5
+ transition: all 0.1s ease;
6
6
  }
7
- .links .tabs{
8
- display: none;
9
- transition: all 0.1s ease;
7
+ .links .tabs {
8
+ display: none;
9
+ transition: all 0.1s ease;
10
10
  }
11
- .links .tabs .tabs-header{
12
- width: 100%;
11
+ .links .tabs .tabs-header {
12
+ width: 100%;
13
13
  }
14
14
  .tabs .tabs-header {
15
- padding: 1px;
16
- width: var(--tabs-header-width);
17
- margin: 0px;
18
- display: inline-block;
19
- float: var(--float);
20
- overflow: hidden;
21
- background: none;
15
+ padding: 1px;
16
+ width: var(--tabs-header-width);
17
+ margin: 0px;
18
+ display: inline-block;
19
+ float: var(--float);
20
+ overflow: hidden;
21
+ background: none;
22
22
  }
23
23
 
24
24
  .tabs .tabs-header .tab-link {
25
- border-radius: var(--tabs-header-link-radius);
26
- background: var(--tabs-header-link-background);
27
- border: var(--tabs-header-link-border);
28
- border-bottom: var(--tabs-header-link-border-bottom);
29
- outline: none;
30
- cursor: pointer;
31
- padding: 10px 12px;
32
- transition: 0.1s;
33
- font-size: var(--tabs-header-link-font-size);
34
- font-weight: var(--tabs-header-link-font-weight);
35
- color: var(--tabs-header-link-color);
36
- margin: 10px;
37
- display: block;
38
- text-decoration: none;
25
+ border-radius: var(--tabs-header-link-radius);
26
+ background: var(--tabs-header-link-background);
27
+ border: var(--tabs-header-link-border);
28
+ border-bottom: var(--tabs-header-link-border-bottom);
29
+ outline: none;
30
+ cursor: pointer;
31
+ padding: 10px 12px;
32
+ transition: 0.1s;
33
+ font-size: var(--tabs-header-link-font-size);
34
+ font-weight: var(--tabs-header-link-font-weight);
35
+ color: var(--tabs-header-link-color);
36
+ margin: 10px;
37
+ display: block;
38
+ text-decoration: none;
39
39
  }
40
40
 
41
41
  .tabs .tabs-header .tab-link:hover {
42
- background-color: var(--tabs-background-color2);
43
- color: var(--tabs-header-link-color2);
42
+ background-color: var(--tabs-background-color2);
43
+ color: var(--tabs-header-link-color2);
44
44
  }
45
45
 
46
46
  .tabs .tabs-header .tab-link.active {
47
- background-color: var(--tabs-background-color);
48
- color: var(--tabs-color);
47
+ background-color: var(--tabs-background-color);
48
+ color: var(--tabs-color);
49
49
  }
50
50
 
51
51
  .tabs .tabs-content {
52
- width: var(--tabs-content-width);
53
- display: inline-block;
52
+ width: var(--tabs-content-width);
53
+ display: inline-block;
54
54
  }
55
55
 
56
56
  .tabs .tabs-content .tab-content {
57
- display: none;
58
- padding: 6px 12px;
59
- width: 100%;
60
- overflow: visible;
61
- -webkit-animation-name: var( --tab-animation-name);
62
- -webkit-animation-duration: var( --tab-animation-duration);
63
- animation-name: var( --tab-animation-name);
64
- animation-duration: var( --tab-animation-duration);
57
+ display: none;
58
+ padding: 6px 12px;
59
+ width: 100%;
60
+ overflow: visible;
61
+ -webkit-animation-name: var(--tab-animation-name);
62
+ -webkit-animation-duration: var(--tab-animation-duration);
63
+ animation-name: var(--tab-animation-name);
64
+ animation-duration: var(--tab-animation-duration);
65
65
  }
66
66
 
67
67
  .tabs .full {
68
- width: 100% !important;
68
+ width: 100% !important;
69
+ }
70
+ .tabs.full .tabs-header,
71
+ .tabs.full .tabs-content {
72
+ width: 100% !important;
73
+ }
74
+ .tabs.full .tabs-header .tab-link {
75
+ display: inline-block;
69
76
  }
70
77
 
71
78
  .tabs .full .tab-link {
72
- display: inline;
79
+ display: inline-block;
73
80
  }
74
81
 
75
82
  @media screen and (max-width: 768px
76
- /*mobile*/
77
- ) {
78
- /*
83
+ /*mobile*/) {
84
+ /*
79
85
  .tabs .tabs-content,
80
86
  .tabs .tabs-header {
81
87
  width: 100% !important;
@@ -95,28 +101,26 @@
95
101
  */
96
102
  }
97
103
 
98
-
99
-
100
104
  @-webkit-keyframes animatetabs {
101
- from {
102
- width: 50%;
103
- opacity: 0;
104
- }
105
+ from {
106
+ width: 50%;
107
+ opacity: 0;
108
+ }
105
109
 
106
- to {
107
- width: 100%;
108
- opacity: 1;
109
- }
110
+ to {
111
+ width: 100%;
112
+ opacity: 1;
113
+ }
110
114
  }
111
115
 
112
116
  @keyframes animatetabs {
113
- from {
114
- width: 50%;
115
- opacity: 0;
116
- }
117
+ from {
118
+ width: 50%;
119
+ opacity: 0;
120
+ }
117
121
 
118
- to {
119
- width: 100%;
120
- opacity: 1;
121
- }
122
- }
122
+ to {
123
+ width: 100%;
124
+ opacity: 1;
125
+ }
126
+ }
@@ -1,83 +1,84 @@
1
1
  .treeview {
2
- color: var(--treeview-color);
3
- background: var(--treeview-background-color);
4
- user-select: none;
5
- -webkit-user-select: none;
6
- -moz-user-select: none;
7
- -ms-user-select: none;
2
+ color: var(--treeview-color);
3
+ background: var(--treeview-background-color);
4
+ user-select: none;
5
+ -webkit-user-select: none;
6
+ -moz-user-select: none;
7
+ -ms-user-select: none;
8
8
  }
9
- .treeview .main-node{
10
- display: block;
9
+ .treeview .main-node {
10
+ display: block;
11
11
  }
12
- .treeview .main-node > i{
13
- display: inline-block;
12
+ .treeview .main-node > i {
13
+ display: inline-block;
14
14
  }
15
- .treeview .main-node > h2{
16
- display: inline-block;
15
+ .treeview .main-node > h2 {
16
+ display: inline-block;
17
17
  }
18
- .treeview .main-node > i-button{
19
- display: inline-block;
18
+ .treeview .main-node > i-button {
19
+ display: inline-block;
20
20
  }
21
21
 
22
- .treeview i-treenode ul{
23
- transition: all linear .3s;
24
- -webkit-transition:all linear .3s;
22
+ .treeview i-treenode ul {
23
+ transition: all linear 0.3s;
24
+ -webkit-transition: all linear 0.3s;
25
25
  }
26
26
 
27
27
  .treeview i-treenode.ng-hide ul {
28
- opacity:0;
28
+ opacity: 0;
29
29
  }
30
30
 
31
31
  .treeview .actions {
32
- display: inline-block;
33
- width: auto;
32
+ display: inline-block;
33
+ width: auto;
34
34
  }
35
35
 
36
36
  .treeview ul {
37
- list-style: none;
38
- margin-top: 10px;
37
+ list-style: none;
38
+ margin-top: 10px;
39
39
  }
40
40
 
41
41
  .treeview .title {
42
- cursor: pointer;
43
- padding-bottom: 10px;
44
- font-size: 16px;
45
- font-weight: bold;
42
+ cursor: pointer;
43
+ padding-bottom: 10px;
44
+ font-size: 16px;
45
+ font-weight: bold;
46
46
  }
47
47
 
48
48
  .treeview .display {
49
- color: var(--treeview-display-color);
49
+ color: var(--treeview-display-color);
50
50
  }
51
51
 
52
52
  .treenode li {
53
- display: block;
54
- margin: 10px;
55
- padding: 3px;
56
- cursor: pointer;
57
- border-left: 1px solid var(--treeview-border-color);
53
+ display: block;
54
+ margin: 10px;
55
+ padding: 3px;
56
+ cursor: pointer;
58
57
  }
59
58
  .ar .treenode li {
60
- border-right: 1px solid var(--treeview-border-color);
59
+ border-right: 1px solid var(--treeview-border-color);
60
+ }
61
+ .en .treenode li {
62
+ border-left: 1px solid var(--treeview-border-color);
61
63
  }
62
-
63
64
  .treenode li span {
64
- font-size: 14px;
65
- font-weight: bold;
66
- cursor: pointer;
67
- padding: 10px 10px;
68
- border-radius: 5px;
69
- transition: all ease-out .2s;
70
- -webkit-transition: all ease-out .2s;
71
- display: inline-block;
72
- width: auto;
65
+ font-size: 14px;
66
+ font-weight: bold;
67
+ cursor: pointer;
68
+ padding: 10px 10px;
69
+ border-radius: 5px;
70
+ transition: all ease-out 0.2s;
71
+ -webkit-transition: all ease-out 0.2s;
72
+ display: inline-block;
73
+ width: auto;
73
74
  }
74
75
 
75
76
  .treenode li span.text:hover {
76
- background: var(--treeview-background-color2);
77
- color: var(--treeview-color2);
77
+ background: var(--treeview-background-color2);
78
+ color: var(--treeview-color2);
78
79
  }
79
80
 
80
81
  .treenode li .selected {
81
- background: var(--treeview-background-color2);
82
- color: var(--treeview-color2);
83
- }
82
+ background: var(--treeview-background-color2);
83
+ color: var(--treeview-color2);
84
+ }
@@ -1,16 +1,15 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Require Payments</title>
7
- <link rel="stylesheet" href="/x-css/all.css" />
8
- </head>
9
- <body>
10
- <h1 class="center bold red">Require Payments</h1>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Server Error</title>
7
+ <link rel="stylesheet" href="/x-css/all.css" />
8
+ </head>
9
+ <body>
10
+ <h1 class="text-center bold red">DNS Server Error</h1>
11
11
 
12
- <br /><br />
13
- <p>call us on facebook <a href="https://www.facebook.com/SmartCodeCompany"> Smart Code Company Page </a></p>
14
- <p>call us on what's up ( +966568118373 )</p>
15
- </body>
12
+ <br /><br />
13
+ <h2 class="text-center">Call Site Administrator or Development Team</h2>
14
+ </body>
16
15
  </html>
@@ -7,7 +7,7 @@
7
7
  <link rel="stylesheet" href="/x-css/all.css" />
8
8
  </head>
9
9
  <body>
10
- <h1 class="center bold red">Require Permissions</h1>
11
- <h2 class="center">##data.permissions##</h2>
10
+ <h1 class="text-center bold red">Require Permissions</h1>
11
+ <h2 class="text-center">##data.permissions##</h2>
12
12
  </body>
13
13
  </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" ng-app="myApp">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Document</title>
7
+ <link rel="stylesheet" href="/x-css/bootstrap-5-support.css" />
8
+ </head>
9
+ <body ng-controller="mainController" class="container loaded">
10
+ <h1 class="center">##word.counts## : {{words.length}}</h1>
11
+ <div class="row padding margin border">
12
+ <div class="col9">
13
+ <i-control ng-model="nameSearch" label="Search Words"></i-control>
14
+ </div>
15
+ <div class="col3">
16
+ <i-button type="save" ng-click="saveWords()" label="Save All Words"></i-button>
17
+ </div>
18
+ </div>
19
+
20
+ <table class="table">
21
+ <tr>
22
+ <th>ID</th>
23
+ <th>Name</th>
24
+ <th>En</th>
25
+ <th>Ar</th>
26
+ </tr>
27
+ <tr ng-repeat="word in words | filter:nameSearch">
28
+ <td>{{$index+1}}</td>
29
+ <td>{{word.name}}</td>
30
+ <td>
31
+ <i-control ng-model="word.En"></i-control>
32
+ </td>
33
+ <td><i-control ng-model="word.Ar"></i-control></td>
34
+ </tr>
35
+ </table>
36
+
37
+ <script src="/x-js/bootstrap-5-support.js"></script>
38
+ <script>
39
+ site.connectScope({}, ($scope, $http) => {
40
+ $scope.name = 'Amr Barakat';
41
+ $scope.loadWords = function () {
42
+ $http({
43
+ method: 'get',
44
+ url: '/x-api/words',
45
+ }).then(function (response) {
46
+ if (response.data.done) {
47
+ $scope.words = response.data.words;
48
+ }
49
+ });
50
+ };
51
+ $scope.saveWords = function () {
52
+ $http({
53
+ method: 'POST',
54
+ url: '/x-api/words/save',
55
+ data: $scope.words,
56
+ }).then(function (response) {
57
+ if (response.data.done) {
58
+ console.log(response.data);
59
+ }
60
+ });
61
+ };
62
+ $scope.loadWords();
63
+ });
64
+ </script>
65
+ </body>
66
+ </html>
@@ -2,3 +2,165 @@ var app = angular.module('myApp', []);
2
2
  app.config(function ($sceDelegateProvider) {
3
3
  $sceDelegateProvider.resourceUrlWhitelist(['self', 'https://www.youtube.com/**']);
4
4
  });
5
+
6
+ site.connectScope = app.connectScope = function (_scope, callback) {
7
+ if (!_scope) {
8
+ _scope = {};
9
+ }
10
+ if (!_scope.name) {
11
+ if ((elem = document.querySelector('[ng-controller]'))) {
12
+ _scope.name = elem.getAttribute('ng-controller');
13
+ } else {
14
+ _scope.name = 'mainController';
15
+ }
16
+ }
17
+ if (!_scope.app) {
18
+ _scope.app = _scope.name;
19
+ }
20
+ if (typeof _scope.app === 'string') {
21
+ _scope.apps = [{ name: _scope.app, as: _scope.app, modal: '#' + _scope.app + 'Modal' }];
22
+ }
23
+ if (typeof _scope.app === 'object') {
24
+ _scope.apps = [{ ..._scope.app }];
25
+ }
26
+ if (Array.isArray(_scope.app)) {
27
+ _scope.apps = [..._scope.app];
28
+ }
29
+
30
+ app.controller(_scope.name, function ($scope, $http, $timeout, $interval) {
31
+ $scope.onError = function () {};
32
+ if (Array.isArray(_scope.apps)) {
33
+ _scope.apps.forEach((_app, index) => {
34
+ $scope[_app.as + 'DefaultItem'] = {};
35
+ $scope[_app.as + 'Item'] = {};
36
+ $scope[_app.as + 'List'] = [];
37
+
38
+ $scope[_app.as + 'Display'] = function () {
39
+ $scope.error = '';
40
+ $scope[_app.as + 'Item'] = { ...$scope[_app.as + 'DefaultItem'] };
41
+ site.showModal(_app.modal);
42
+ };
43
+
44
+ $scope[_app.as + 'Add'] = function () {
45
+ $scope.error = '';
46
+ const v = site.validated(_app.modal);
47
+ if (!v.ok) {
48
+ $scope.error = v.messages[0].ar;
49
+ return;
50
+ }
51
+ $scope.busy = true;
52
+ $http({
53
+ method: 'POST',
54
+ url: `/api/${_app.name}/add`,
55
+ data: $scope[_app.as + 'Item'],
56
+ }).then(
57
+ function (response) {
58
+ $scope.busy = false;
59
+ if (response.data.done) {
60
+ $scope[_app.as + 'List'].push(response.data.doc);
61
+ $scope[_app.as + 'Item'] = { ...$scope[_app.as + 'DefaultItem'] };
62
+ } else {
63
+ $scope.error = 'Please Login First';
64
+ }
65
+ },
66
+ function (err) {
67
+ $scope.onError({ error: err, func: _app.as + 'Add' });
68
+ }
69
+ );
70
+ };
71
+ $scope[_app.as + 'Update'] = function (selectedItem) {
72
+ $scope.error = '';
73
+ const v = site.validated(_app.modal);
74
+ if (!v.ok) {
75
+ $scope.error = v.messages[0].ar;
76
+ return;
77
+ }
78
+ $scope.busy = true;
79
+ $http({
80
+ method: 'POST',
81
+ url: `/api/${_app.name}/update`,
82
+ data: selectedItem,
83
+ }).then(
84
+ function (response) {
85
+ $scope.busy = false;
86
+ if (response.data.done) {
87
+ let index = $scope[_app.as + 'List'].findIndex((ss) => ss.id === selectedItem.id);
88
+ if (index > -1) {
89
+ $scope[_app.as + 'List'][index] = response.data.doc;
90
+ }
91
+ $scope[_app.as + 'Item'] = { ...$scope[_app.as + 'DefaultItem'] };
92
+ } else {
93
+ $scope.error = 'Please Login First';
94
+ }
95
+ },
96
+ function (err) {
97
+ $scope.onError({ error: err, func: _app.as + 'Update' });
98
+ }
99
+ );
100
+ };
101
+ $scope[_app.as + 'Delete'] = function (selectedItem) {
102
+ $scope.error = '';
103
+ const v = site.validated(_app.modal);
104
+ if (!v.ok) {
105
+ $scope.error = v.messages[0].ar;
106
+ return;
107
+ }
108
+ $scope.busy = true;
109
+ $http({
110
+ method: 'POST',
111
+ url: `/api/${_app.name}/delete`,
112
+ data: selectedItem,
113
+ }).then(
114
+ function (response) {
115
+ $scope.busy = false;
116
+ if (response.data.done) {
117
+ let index = $scope[_app.as + 'List'].findIndex((ss) => ss.id === selectedItem.id);
118
+ if (index > -1) {
119
+ $scope[_app.as + 'List'].splice(index, 1);
120
+ }
121
+ } else {
122
+ $scope.error = 'Please Login First';
123
+ }
124
+ },
125
+ function (err) {
126
+ $scope.onError({ error: err, func: _app.as + 'Delete' });
127
+ }
128
+ );
129
+ };
130
+ $scope[_app.as + 'LoadAll'] = function () {
131
+ $scope.busy = true;
132
+ $http({
133
+ method: 'POST',
134
+ url: `/api/${_app.name}/all`,
135
+ data: {
136
+ where: {},
137
+ select: {},
138
+ },
139
+ }).then(
140
+ function (response) {
141
+ $scope.busy = false;
142
+ if (response.data.done && response.data.list.length > 0) {
143
+ $scope[_app.as + 'List'] = response.data.list;
144
+ }
145
+ },
146
+ function (err) {
147
+ $scope.busy = false;
148
+ $scope.onError({ error: err, func: _app.as + 'LoadAll' });
149
+ }
150
+ );
151
+ };
152
+
153
+ if (index === 0) {
154
+ $scope.display = $scope[_app.as + 'Display'];
155
+ $scope.add = $scope[_app.as + 'Add'];
156
+ $scope.update = $scope[_app.as + 'Update'];
157
+ $scope.delete = $scope[_app.as + 'Delete'];
158
+ $scope.loadAll = $scope[_app.as + 'LoadAll'];
159
+ }
160
+ });
161
+ }
162
+ if (callback) {
163
+ callback($scope, $http, $timeout, $interval);
164
+ }
165
+ });
166
+ };
@@ -906,7 +906,6 @@ app.directive('iImage', [
906
906
  ngChange: '&',
907
907
  },
908
908
  link: function ($scope, element, attrs, ctrl) {
909
- $scope.folder = $scope.folder || 'default';
910
909
  $scope.accept = $scope.accept ? $scope.accept : 'image/*';
911
910
  $scope.viewOnly = $scope.view === undefined ? false : true;
912
911
 
@@ -60,12 +60,6 @@ app.service('isite', [
60
60
  };
61
61
 
62
62
  this.uploadImage = function (files, options, callback) {
63
- options = Object.assign(
64
- {
65
- category: 'default',
66
- },
67
- options
68
- );
69
63
  callback = callback || function () {};
70
64
 
71
65
  var fd = new FormData();
@@ -75,7 +69,7 @@ app.service('isite', [
75
69
  withCredentials: !0,
76
70
  headers: {
77
71
  'Content-Type': undefined,
78
- folder: options.folder,
72
+ ...options
79
73
  },
80
74
  uploadEventHandlers: {
81
75
  progress: function (e) {
@@ -577,6 +577,9 @@
577
577
  return site.to123(JSON.parse(obj));
578
578
  };
579
579
  site.show = site.showObject = function (obj) {
580
+ if (!obj) {
581
+ return {};
582
+ }
580
583
  return JSON.parse(site.from123(obj));
581
584
  };
582
585
 
@@ -709,7 +712,7 @@
709
712
  en: 'Data Is Required',
710
713
  ar: 'هذا البيان مطلوب',
711
714
  });
712
- } else if (el.nodeName === 'INPUT' || el.nodeName === 'SELECT' || el.nodeName === 'TEXTAREA' || el.nodeName === 'I-DATETIME'|| el.nodeName === 'I-DATE') {
715
+ } else if (el.nodeName === 'INPUT' || el.nodeName === 'SELECT' || el.nodeName === 'TEXTAREA' || el.nodeName === 'I-DATETIME' || el.nodeName === 'I-DATE') {
713
716
  el.classList.add('is-valid');
714
717
  }
715
718
  } else if (vl.like('ml*')) {
package/index.js CHANGED
@@ -28,8 +28,10 @@ module.exports = function init(options) {
28
28
  ____0.md5 = ____0.hash = ____0.x0md50x = require('md5');
29
29
  ____0.nodemailer = require('nodemailer');
30
30
  ____0.child_process = require('child_process');
31
+ ____0.webp = require('webp-converter');
31
32
 
32
33
  ____0.setting = {};
34
+ ____0.collectionList = [];
33
35
  ____0.apps = [];
34
36
  ____0.appList = [];
35
37
  ____0.addApp = function (app) {
@@ -176,6 +178,8 @@ module.exports = function init(options) {
176
178
  require('./lib/vars.js')(____0);
177
179
 
178
180
  //DataBase Management Oprations
181
+
182
+
179
183
  if (____0.options.mongodb.enabled) {
180
184
  ____0.mongodb = require('./lib/mongodb.js')(____0);
181
185
  ____0.connectCollection = function (option, db) {
@@ -210,6 +214,7 @@ module.exports = function init(options) {
210
214
  require('./lib/browser.js')(____0);
211
215
  require('./lib/helper.js')(____0);
212
216
  require('./lib/pdf.js')(____0);
217
+ require('./lib/app.js')(____0);
213
218
 
214
219
  //Master Pages
215
220
  ____0.masterPages = [];