Social Login - Version 7.1.0

Version Description

  • Added plugin tour buttons to give an overview of features
  • Updated registration flow for better visibility
  • Updated custom apps to prefill scopes with default values to reduce confusion
  • Fixed auto user creation issue for Facebook
Download this release

Release Info

Developer cyberlord92
Plugin Icon 128x128 Social Login
Version 7.1.0
Comparing to
See all releases

Code changes from version 7.0.3 to 7.1.0

class-mo-openid-login-widget.php CHANGED
@@ -346,7 +346,7 @@ if(mo_openid_is_customer_registered()) {
346
  <div>No apps configured. Please contact your administrator.</div>
347
  <?php
348
  }
349
- if(get_option('mo_openid_oauth')=='1' && $appsConfigured && get_option('moopenid_logo_check') == 1){
350
  $logo_html = $this->mo_openid_customize_logo();
351
  echo $logo_html;
352
  }
@@ -651,7 +651,7 @@ if(mo_openid_is_customer_registered()) {
651
  $html .= '<div>No apps configured. Please contact your administrator.</div>';
652
 
653
  }
654
- if(get_option('mo_openid_oauth')=='1' && $appsConfigured && get_option('moopenid_logo_check') == 1 ){
655
  $logo_html=$this->mo_openid_customize_logo();
656
  $html .= $logo_html;
657
  }
@@ -982,7 +982,6 @@ if(mo_openid_is_customer_registered()) {
982
  }
983
  exit;
984
  }
985
-
986
  else if( isset( $_POST['option'] ) and strpos( $_POST['option'], 'mo_openid_show_profile_form' ) !== false ){
987
  echo mo_openid_profile_completion_form($_POST["last_name"],$_POST["first_name"], $_POST["user_full_name"],$_POST["user_url"], $_POST["user_picture"], $_POST['username_field'], $_POST['email_field'],$_POST["decrypted_app_name"],$_POST["decrypted_user_id"]);
988
  exit;
@@ -1704,9 +1703,9 @@ if(mo_openid_is_customer_registered()) {
1704
  $code = $_REQUEST['code'];
1705
  }
1706
  else if(isset( $_REQUEST['error_reason'] )){
1707
- echo 'Error: ' . $_REQUEST['error_reason'] . "<br>";
1708
- echo $_REQUEST['error'] . "<br>";
1709
  echo $_REQUEST['error_description'] . "<br>";
 
1710
  }
1711
  }
1712
 
@@ -2011,6 +2010,9 @@ if(mo_openid_is_customer_registered()) {
2011
  wp_redirect($redirect_url);
2012
  exit;
2013
  }
 
 
 
2014
  }
2015
  //email and username are both returned..dont show profile completion
2016
  else{
@@ -2146,6 +2148,10 @@ if(mo_openid_is_customer_registered()) {
2146
  wp_redirect($redirect_url);
2147
  exit;
2148
  }
 
 
 
 
2149
  }
2150
  }
2151
  }
346
  <div>No apps configured. Please contact your administrator.</div>
347
  <?php
348
  }
349
+ if( $appsConfigured && get_option('moopenid_logo_check') == 1){
350
  $logo_html = $this->mo_openid_customize_logo();
351
  echo $logo_html;
352
  }
651
  $html .= '<div>No apps configured. Please contact your administrator.</div>';
652
 
653
  }
654
+ if( $appsConfigured && get_option('moopenid_logo_check') == 1 ){
655
  $logo_html=$this->mo_openid_customize_logo();
656
  $html .= $logo_html;
657
  }
982
  }
983
  exit;
984
  }
 
985
  else if( isset( $_POST['option'] ) and strpos( $_POST['option'], 'mo_openid_show_profile_form' ) !== false ){
986
  echo mo_openid_profile_completion_form($_POST["last_name"],$_POST["first_name"], $_POST["user_full_name"],$_POST["user_url"], $_POST["user_picture"], $_POST['username_field'], $_POST['email_field'],$_POST["decrypted_app_name"],$_POST["decrypted_user_id"]);
987
  exit;
1703
  $code = $_REQUEST['code'];
1704
  }
1705
  else if(isset( $_REQUEST['error_reason'] )){
1706
+
 
1707
  echo $_REQUEST['error_description'] . "<br>";
1708
+ wp_die("Allow access to your profile to get logged in. Click <a href=".get_site_url().">here</a> to go back to the website.");
1709
  }
1710
  }
1711
 
2010
  wp_redirect($redirect_url);
2011
  exit;
2012
  }
2013
+ $redirect_url = mo_openid_get_redirect_url();
2014
+ wp_redirect($redirect_url);
2015
+ exit;
2016
  }
2017
  //email and username are both returned..dont show profile completion
2018
  else{
2148
  wp_redirect($redirect_url);
2149
  exit;
2150
  }
2151
+
2152
+ $redirect_url = mo_openid_get_redirect_url();
2153
+ wp_redirect($redirect_url);
2154
+ exit;
2155
  }
2156
  }
2157
  }
includes/css/bootstrap-tour-standalone.css ADDED
@@ -0,0 +1,762 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ========================================================================
2
+ * bootstrap-tour - v0.12.0
3
+ * http://bootstraptour.com
4
+ * ========================================================================
5
+ * Copyright 2012-2017 Ulrich Sossou
6
+ *
7
+ * ========================================================================
8
+ * Licensed under the MIT License (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * https://opensource.org/licenses/MIT
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================================
20
+ */
21
+
22
+ .mo2f_tour_btn {
23
+ display: inline-block;
24
+ font-weight: normal;
25
+ text-align: center;
26
+ white-space: nowrap;
27
+ vertical-align: middle;
28
+ user-select: none;
29
+ border: 1px solid transparent;
30
+ padding: 0.5rem 0.75rem;
31
+ font-size: 1rem;
32
+ line-height: 1.25;
33
+ border-radius: 0.25rem;
34
+ transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; }
35
+ .mo2f_tour_btn:focus, .mo2f_tour_btn:hover {
36
+ text-decoration: none; }
37
+ .mo2f_tour_btn:focus, .mo2f_tour_btn.focus {
38
+ outline: 0;
39
+ box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25); }
40
+ .mo2f_tour_btn.disabled, .mo2f_tour_btn:disabled {
41
+ opacity: .65; }
42
+ .mo2f_tour_btn:active, .mo2f_tour_btn.active {
43
+ background-image: none; }
44
+
45
+ a.mo2f_tour_btn.disabled,
46
+ fieldset[disabled] a.mo2f_tour_btn {
47
+ pointer-events: none; }
48
+
49
+ .mo2f_tour_btn-primary {
50
+ color: #fff;
51
+ background-color: #007bff;
52
+ border-color: #007bff; }
53
+ .mo2f_tour_btn-primary:hover {
54
+ color: #fff;
55
+ background-color: #0069d9;
56
+ border-color: #0062cc; }
57
+ .mo2f_tour_btn-primary:focus, .mo2f_tour_btn-primary.focus {
58
+ box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); }
59
+ .mo2f_tour_btn-primary.disabled, .mo2f_tour_btn-primary:disabled {
60
+ background-color: #007bff;
61
+ border-color: #007bff; }
62
+ .mo2f_tour_btn-primary:active, .mo2f_tour_btn-primary.active,
63
+ .show > .mo2f_tour_btn-primary.dropdown-toggle {
64
+ background-color: #0069d9;
65
+ background-image: none;
66
+ border-color: #0062cc; }
67
+
68
+ .mo2f_tour_btn-secondary {
69
+ color: #fff;
70
+ background-color: #007902;
71
+ border-color: #868e96;
72
+ }
73
+ .mo2f_tour_btn_end-secondary {
74
+ background: #00A0D2;
75
+ border-color: #0073AA;
76
+ box-shadow: 0 1px 0 rgba(120, 200, 230, .5) inset, 0 1px 0 rgba(0, 0, 0, .15);
77
+ color: #FFF;
78
+ text-decoration: none;
79
+ cursor: pointer;
80
+ border-width: 1px;
81
+ border-style: solid;
82
+ border-radius: 3px;
83
+ white-space: nowrap;
84
+ box-sizing: border-box;
85
+ line-height: 28px;
86
+ padding: 0 12px;
87
+ font-size: 13px
88
+ }
89
+ .mo2f_tour_btn_next-success {
90
+ background: #00A0D2;
91
+ background-color:#5cb85c;border-color:#4cae4c;
92
+ box-shadow: 0 1px 0 rgba(120, 200, 230, .5) inset, 0 1px 0 rgba(0, 0, 0, .15);
93
+ color: #FFF;
94
+ text-decoration: none;
95
+ cursor: pointer;
96
+ border-width: 1px;
97
+ border-style: solid;
98
+ border-radius: 3px;
99
+ white-space: nowrap;
100
+ box-sizing: border-box;
101
+ line-height: 28px;
102
+ padding: 0 12px;
103
+ font-size: 13px;
104
+ }
105
+ .mo2f_tour_btn-secondary:hover {
106
+ color: #fff;
107
+ background-color: #727b84;
108
+ border-color: #6c757d; }
109
+
110
+ .mo2f_tour_btn-secondary:focus, .mo2f_tour_btn-secondary.focus {
111
+ box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5); }
112
+ .mo2f_tour_btn-secondary.disabled, .mo2f_tour_btn-secondary:disabled {
113
+ background-color: #868e96;
114
+ border-color: #868e96; }
115
+ .mo2f_tour_btn-secondary:active, .mo2f_tour_btn-secondary.active,
116
+ .show > .mo2f_tour_btn-secondary.dropdown-toggle {
117
+ background-color: #727b84;
118
+ background-image: none;
119
+ border-color: #6c757d; }
120
+
121
+ .mo2f_tour_btn-success {
122
+ color: #fff;
123
+ background-color: #28a745;
124
+ border-color: #28a745; }
125
+ .mo2f_tour_btn-success:hover {
126
+ color: #fff;
127
+ background-color: #218838;
128
+ border-color: #1e7e34; }
129
+ .mo2f_tour_btn-success:focus, .mo2f_tour_btn-success.focus {
130
+ box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5); }
131
+ .mo2f_tour_btn-success.disabled, .mo2f_tour_btn-success:disabled {
132
+ background-color: #28a745;
133
+ border-color: #28a745; }
134
+ .mo2f_tour_btn-success:active, .mo2f_tour_btn-success.active,
135
+ .show > .mo2f_tour_btn-success.dropdown-toggle {
136
+ background-color: #218838;
137
+ background-image: none;
138
+ border-color: #1e7e34; }
139
+
140
+ .mo2f_tour_btn-info {
141
+ color: #fff;
142
+ background-color: #17a2b8;
143
+ border-color: #17a2b8; }
144
+ .mo2f_tour_btn-info:hover {
145
+ color: #fff;
146
+ background-color: #138496;
147
+ border-color: #117a8b; }
148
+ .mo2f_tour_btn-info:focus, .mo2f_tour_btn-info.focus {
149
+ box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5); }
150
+ .mo2f_tour_btn-info.disabled, .mo2f_tour_btn-info:disabled {
151
+ background-color: #17a2b8;
152
+ border-color: #17a2b8; }
153
+ .mo2f_tour_btn-info:active, .mo2f_tour_btn-info.active,
154
+ .show > .mo2f_tour_btn-info.dropdown-toggle {
155
+ background-color: #138496;
156
+ background-image: none;
157
+ border-color: #117a8b; }
158
+
159
+ .mo2f_tour_btn-warning {
160
+ color: #111;
161
+ background-color: #ffc107;
162
+ border-color: #ffc107; }
163
+ .mo2f_tour_btn-warning:hover {
164
+ color: #111;
165
+ background-color: #e0a800;
166
+ border-color: #d39e00; }
167
+ .mo2f_tour_btn-warning:focus, .mo2f_tour_btn-warning.focus {
168
+ box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5); }
169
+ .mo2f_tour_btn-warning.disabled, .mo2f_tour_btn-warning:disabled {
170
+ background-color: #ffc107;
171
+ border-color: #ffc107; }
172
+ .mo2f_tour_btn-warning:active, .mo2f_tour_btn-warning.active,
173
+ .show > .mo2f_tour_btn-warning.dropdown-toggle {
174
+ background-color: #e0a800;
175
+ background-image: none;
176
+ border-color: #d39e00; }
177
+
178
+ .mo2f_tour_btn-danger {
179
+ color: #fff;
180
+ background-color: #dc3545;
181
+ border-color: #dc3545; }
182
+ .mo2f_tour_btn-danger:hover {
183
+ color: #fff;
184
+ background-color: #c82333;
185
+ border-color: #bd2130; }
186
+ .mo2f_tour_btn-danger:focus, .mo2f_tour_btn-danger.focus {
187
+ box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5); }
188
+ .mo2f_tour_btn-danger.disabled, .mo2f_tour_btn-danger:disabled {
189
+ background-color: #dc3545;
190
+ border-color: #dc3545; }
191
+ .mo2f_tour_btn-danger:active, .mo2f_tour_btn-danger.active,
192
+ .show > .mo2f_tour_btn-danger.dropdown-toggle {
193
+ background-color: #c82333;
194
+ background-image: none;
195
+ border-color: #bd2130; }
196
+
197
+ .mo2f_tour_btn-light {
198
+ color: #111;
199
+ background-color: #f8f9fa;
200
+ border-color: #f8f9fa; }
201
+ .mo2f_tour_btn-light:hover {
202
+ color: #111;
203
+ background-color: #e2e6ea;
204
+ border-color: #dae0e5; }
205
+ .mo2f_tour_btn-light:focus, .mo2f_tour_btn-light.focus {
206
+ box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5); }
207
+ .mo2f_tour_btn-light.disabled, .mo2f_tour_btn-light:disabled {
208
+ background-color: #f8f9fa;
209
+ border-color: #f8f9fa; }
210
+ .mo2f_tour_btn-light:active, .mo2f_tour_btn-light.active,
211
+ .show > .mo2f_tour_btn-light.dropdown-toggle {
212
+ background-color: #e2e6ea;
213
+ background-image: none;
214
+ border-color: #dae0e5; }
215
+
216
+ .mo2f_tour_btn-dark {
217
+ color: #fff;
218
+ background-color: #343a40;
219
+ border-color: #343a40; }
220
+ .mo2f_tour_btn-dark:hover {
221
+ color: #fff;
222
+ background-color: #23272b;
223
+ border-color: #1d2124; }
224
+ .mo2f_tour_btn-dark:focus, .mo2f_tour_btn-dark.focus {
225
+ box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5); }
226
+ .mo2f_tour_btn-dark.disabled, .mo2f_tour_btn-dark:disabled {
227
+ background-color: #343a40;
228
+ border-color: #343a40; }
229
+ .mo2f_tour_btn-dark:active, .mo2f_tour_btn-dark.active,
230
+ .show > .mo2f_tour_btn-dark.dropdown-toggle {
231
+ background-color: #23272b;
232
+ background-image: none;
233
+ border-color: #1d2124; }
234
+
235
+ .mo2f_tour_btn-outline-primary {
236
+ color: #007bff;
237
+ background-color: transparent;
238
+ background-image: none;
239
+ border-color: #007bff; }
240
+ .mo2f_tour_btn-outline-primary:hover {
241
+ color: #fff;
242
+ background-color: #007bff;
243
+ border-color: #007bff; }
244
+ .mo2f_tour_btn-outline-primary:focus, .mo2f_tour_btn-outline-primary.focus {
245
+ box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); }
246
+ .mo2f_tour_btn-outline-primary.disabled, .mo2f_tour_btn-outline-primary:disabled {
247
+ color: #007bff;
248
+ background-color: transparent; }
249
+ .mo2f_tour_btn-outline-primary:active, .mo2f_tour_btn-outline-primary.active,
250
+ .show > .mo2f_tour_btn-outline-primary.dropdown-toggle {
251
+ color: #fff;
252
+ background-color: #007bff;
253
+ border-color: #007bff; }
254
+
255
+ .mo2f_tour_btn-outline-secondary {
256
+ color: #868e96;
257
+ background-color: transparent;
258
+ background-image: none;
259
+ border-color: #868e96; }
260
+ .mo2f_tour_btn-outline-secondary:hover {
261
+ color: #fff;
262
+ background-color: #868e96;
263
+ border-color: #868e96; }
264
+ .mo2f_tour_btn-outline-secondary:focus, .mo2f_tour_btn-outline-secondary.focus {
265
+ box-shadow: 0 0 0 3px rgba(134, 142, 150, 0.5); }
266
+ .mo2f_tour_btn-outline-secondary.disabled, .mo2f_tour_btn-outline-secondary:disabled {
267
+ color: #868e96;
268
+ background-color: transparent; }
269
+ .mo2f_tour_btn-outline-secondary:active, .mo2f_tour_btn-outline-secondary.active,
270
+ .show > .mo2f_tour_btn-outline-secondary.dropdown-toggle {
271
+ color: #fff;
272
+ background-color: #868e96;
273
+ border-color: #868e96; }
274
+
275
+ .mo2f_tour_btn-outline-success {
276
+ color: #28a745;
277
+ background-color: transparent;
278
+ background-image: none;
279
+ border-color: #28a745; }
280
+ .mo2f_tour_btn-outline-success:hover {
281
+ color: #fff;
282
+ background-color: #28a745;
283
+ border-color: #28a745; }
284
+ .mo2f_tour_btn-outline-success:focus, .mo2f_tour_btn-outline-success.focus {
285
+ box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.5); }
286
+ .mo2f_tour_btn-outline-success.disabled, .mo2f_tour_btn-outline-success:disabled {
287
+ color: #28a745;
288
+ background-color: transparent; }
289
+ .mo2f_tour_btn-outline-success:active, .mo2f_tour_btn-outline-success.active,
290
+ .show > .mo2f_tour_btn-outline-success.dropdown-toggle {
291
+ color: #fff;
292
+ background-color: #28a745;
293
+ border-color: #28a745; }
294
+
295
+ .mo2f_tour_btn-outline-info {
296
+ color: #17a2b8;
297
+ background-color: transparent;
298
+ background-image: none;
299
+ border-color: #17a2b8; }
300
+ .mo2f_tour_btn-outline-info:hover {
301
+ color: #fff;
302
+ background-color: #17a2b8;
303
+ border-color: #17a2b8; }
304
+ .mo2f_tour_btn-outline-info:focus, .mo2f_tour_btn-outline-info.focus {
305
+ box-shadow: 0 0 0 3px rgba(23, 162, 184, 0.5); }
306
+ .mo2f_tour_btn-outline-info.disabled, .mo2f_tour_btn-outline-info:disabled {
307
+ color: #17a2b8;
308
+ background-color: transparent; }
309
+ .mo2f_tour_btn-outline-info:active, .mo2f_tour_btn-outline-info.active,
310
+ .show > .mo2f_tour_btn-outline-info.dropdown-toggle {
311
+ color: #fff;
312
+ background-color: #17a2b8;
313
+ border-color: #17a2b8; }
314
+
315
+ .mo2f_tour_btn-outline-warning {
316
+ color: #ffc107;
317
+ background-color: transparent;
318
+ background-image: none;
319
+ border-color: #ffc107; }
320
+ .mo2f_tour_btn-outline-warning:hover {
321
+ color: #fff;
322
+ background-color: #ffc107;
323
+ border-color: #ffc107; }
324
+ .mo2f_tour_btn-outline-warning:focus, .mo2f_tour_btn-outline-warning.focus {
325
+ box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.5); }
326
+ .mo2f_tour_btn-outline-warning.disabled, .mo2f_tour_btn-outline-warning:disabled {
327
+ color: #ffc107;
328
+ background-color: transparent; }
329
+ .mo2f_tour_btn-outline-warning:active, .mo2f_tour_btn-outline-warning.active,
330
+ .show > .mo2f_tour_btn-outline-warning.dropdown-toggle {
331
+ color: #fff;
332
+ background-color: #ffc107;
333
+ border-color: #ffc107; }
334
+
335
+ .mo2f_tour_btn-outline-danger {
336
+ color: #dc3545;
337
+ background-color: transparent;
338
+ background-image: none;
339
+ border-color: #dc3545; }
340
+ .mo2f_tour_btn-outline-danger:hover {
341
+ color: #fff;
342
+ background-color: #dc3545;
343
+ border-color: #dc3545; }
344
+ .mo2f_tour_btn-outline-danger:focus, .mo2f_tour_btn-outline-danger.focus {
345
+ box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.5); }
346
+ .mo2f_tour_btn-outline-danger.disabled, .mo2f_tour_btn-outline-danger:disabled {
347
+ color: #dc3545;
348
+ background-color: transparent; }
349
+ .mo2f_tour_btn-outline-danger:active, .mo2f_tour_btn-outline-danger.active,
350
+ .show > .mo2f_tour_btn-outline-danger.dropdown-toggle {
351
+ color: #fff;
352
+ background-color: #dc3545;
353
+ border-color: #dc3545; }
354
+
355
+ .mo2f_tour_btn-outline-light {
356
+ color: #f8f9fa;
357
+ background-color: transparent;
358
+ background-image: none;
359
+ border-color: #f8f9fa; }
360
+ .mo2f_tour_btn-outline-light:hover {
361
+ color: #fff;
362
+ background-color: #f8f9fa;
363
+ border-color: #f8f9fa; }
364
+ .mo2f_tour_btn-outline-light:focus, .mo2f_tour_btn-outline-light.focus {
365
+ box-shadow: 0 0 0 3px rgba(248, 249, 250, 0.5); }
366
+ .mo2f_tour_btn-outline-light.disabled, .mo2f_tour_btn-outline-light:disabled {
367
+ color: #f8f9fa;
368
+ background-color: transparent; }
369
+ .mo2f_tour_btn-outline-light:active, .mo2f_tour_btn-outline-light.active,
370
+ .show > .mo2f_tour_btn-outline-light.dropdown-toggle {
371
+ color: #fff;
372
+ background-color: #f8f9fa;
373
+ border-color: #f8f9fa; }
374
+
375
+ .mo2f_tour_btn-outline-dark {
376
+ color: #343a40;
377
+ background-color: transparent;
378
+ background-image: none;
379
+ border-color: #343a40; }
380
+ .mo2f_tour_btn-outline-dark:hover {
381
+ color: #fff;
382
+ background-color: #343a40;
383
+ border-color: #343a40; }
384
+ .mo2f_tour_btn-outline-dark:focus, .mo2f_tour_btn-outline-dark.focus {
385
+ box-shadow: 0 0 0 3px rgba(52, 58, 64, 0.5); }
386
+ .mo2f_tour_btn-outline-dark.disabled, .mo2f_tour_btn-outline-dark:disabled {
387
+ color: #343a40;
388
+ background-color: transparent; }
389
+ .mo2f_tour_btn-outline-dark:active, .mo2f_tour_btn-outline-dark.active,
390
+ .show > .mo2f_tour_btn-outline-dark.dropdown-toggle {
391
+ color: #fff;
392
+ background-color: #343a40;
393
+ border-color: #343a40; }
394
+
395
+ .mo2f_tour_btn-link {
396
+ font-weight: normal;
397
+ color: #007bff;
398
+ border-radius: 0; }
399
+ .mo2f_tour_btn-link, .mo2f_tour_btn-link:active, .mo2f_tour_btn-link.active, .mo2f_tour_btn-link:disabled {
400
+ background-color: transparent; }
401
+ .mo2f_tour_btn-link, .mo2f_tour_btn-link:focus, .mo2f_tour_btn-link:active {
402
+ border-color: transparent;
403
+ box-shadow: none; }
404
+ .mo2f_tour_btn-link:hover {
405
+ border-color: transparent; }
406
+ .mo2f_tour_btn-link:focus, .mo2f_tour_btn-link:hover {
407
+ color: #0056b3;
408
+ text-decoration: underline;
409
+ background-color: transparent; }
410
+ .mo2f_tour_btn-link:disabled {
411
+ color: #868e96; }
412
+ .mo2f_tour_btn-link:disabled:focus, .mo2f_tour_btn-link:disabled:hover {
413
+ text-decoration: none; }
414
+
415
+ .mo2f_tour_btn-lg, .mo2f_tour_btn-group-lg > .mo2f_tour_btn {
416
+ padding: 0.5rem 1rem;
417
+ font-size: 1.25rem;
418
+ line-height: 1.5;
419
+ border-radius: 0.3rem; }
420
+
421
+ .mo2f_tour_btn-sm, .mo2f_tour_btn-group-sm > .mo2f_tour_btn {
422
+ padding: 0.25rem 0.5rem;
423
+ font-size: 0.875rem;
424
+ line-height: 1.5;
425
+ border-radius: 0.2rem; }
426
+
427
+ .mo2f_tour_btn-block {
428
+ display: block;
429
+ width: 100%; }
430
+
431
+ .mo2f_tour_btn-block + .mo2f_tour_btn-block {
432
+ margin-top: 0.5rem; }
433
+
434
+ input[type="submit"].mo2f_tour_btn-block,
435
+ input[type="reset"].mo2f_tour_btn-block,
436
+ input[type="button"].mo2f_tour_btn-block {
437
+ width: 100%; }
438
+
439
+ .fade {
440
+ opacity: 0;
441
+ transition: opacity 0.15s linear; }
442
+ .fade.show {
443
+ opacity: 1; }
444
+
445
+ .mo2f_collapse {
446
+ display: none; }
447
+ .mo2f_collapse.show {
448
+ display: block; }
449
+
450
+ tr.mo2f_collapse.show {
451
+ display: table-row; }
452
+
453
+ tbody.mo2f_collapse.show {
454
+ display: table-row-group; }
455
+
456
+ .collapsing {
457
+ position: relative;
458
+ height: 0;
459
+ overflow: hidden;
460
+ transition: height 0.35s ease; }
461
+
462
+ .mo2f_tour_btn-group,
463
+ .mo2f_tour_btn-group-vertical {
464
+ position: relative;
465
+ display: inline-flex;
466
+ vertical-align: middle; }
467
+ .mo2f_tour_btn-group > .mo2f_tour_btn,
468
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn {
469
+ position: relative;
470
+ flex: 0 1 auto;
471
+ margin-bottom: 0; }
472
+ .mo2f_tour_btn-group > .mo2f_tour_btn:hover,
473
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn:hover {
474
+ z-index: 2; }
475
+ .mo2f_tour_btn-group > .mo2f_tour_btn:focus, .mo2f_tour_btn-group > .mo2f_tour_btn:active, .mo2f_tour_btn-group > .mo2f_tour_btn.active,
476
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn:focus,
477
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn:active,
478
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn.active {
479
+ z-index: 2; }
480
+ .mo2f_tour_btn-group .mo2f_tour_btn + .mo2f_tour_btn,
481
+ .mo2f_tour_btn-group .mo2f_tour_btn + .mo2f_tour_btn-group,
482
+ .mo2f_tour_btn-group .mo2f_tour_btn-group + .mo2f_tour_btn,
483
+ .mo2f_tour_btn-group .mo2f_tour_btn-group + .mo2f_tour_btn-group,
484
+ .mo2f_tour_btn-group-vertical .mo2f_tour_btn + .mo2f_tour_btn,
485
+ .mo2f_tour_btn-group-vertical .mo2f_tour_btn + .mo2f_tour_btn-group,
486
+ .mo2f_tour_btn-group-vertical .mo2f_tour_btn-group + .mo2f_tour_btn,
487
+ .mo2f_tour_btn-group-vertical .mo2f_tour_btn-group + .mo2f_tour_btn-group {
488
+ margin-left: -1px; }
489
+
490
+ .mo2f_tour_btn-toolbar {
491
+ display: flex;
492
+ flex-wrap: wrap;
493
+ justify-content: flex-start; }
494
+ .mo2f_tour_btn-toolbar .input-group {
495
+ width: auto; }
496
+
497
+ .mo2f_tour_btn-group > .mo2f_tour_btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
498
+ border-radius: 0; }
499
+
500
+ .mo2f_tour_btn-group > .mo2f_tour_btn:first-child {
501
+ margin-left: 0; }
502
+ .mo2f_tour_btn-group > .mo2f_tour_btn:first-child:not(:last-child):not(.dropdown-toggle) {
503
+ border-top-right-radius: 0;
504
+ border-bottom-right-radius: 0; }
505
+
506
+ .mo2f_tour_btn-group > .mo2f_tour_btn:last-child:not(:first-child),
507
+ .mo2f_tour_btn-group > .dropdown-toggle:not(:first-child) {
508
+ border-top-left-radius: 0;
509
+ border-bottom-left-radius: 0; }
510
+
511
+ .mo2f_tour_btn-group > .mo2f_tour_btn-group {
512
+ float: left; }
513
+
514
+ .mo2f_tour_btn-group > .mo2f_tour_btn-group:not(:first-child):not(:last-child) > .mo2f_tour_btn {
515
+ border-radius: 0; }
516
+
517
+ .mo2f_tour_btn-group > .mo2f_tour_btn-group:first-child:not(:last-child) > .mo2f_tour_btn:last-child,
518
+ .mo2f_tour_btn-group > .mo2f_tour_btn-group:first-child:not(:last-child) > .dropdown-toggle {
519
+ border-top-right-radius: 0;
520
+ border-bottom-right-radius: 0; }
521
+
522
+ .mo2f_tour_btn-group > .mo2f_tour_btn-group:last-child:not(:first-child) > .mo2f_tour_btn:first-child {
523
+ border-top-left-radius: 0;
524
+ border-bottom-left-radius: 0; }
525
+
526
+ .mo2f_tour_btn + .dropdown-toggle-split {
527
+ padding-right: 0.5625rem;
528
+ padding-left: 0.5625rem; }
529
+ .mo2f_tour_btn + .dropdown-toggle-split::after {
530
+ margin-left: 0; }
531
+
532
+ .mo2f_tour_btn-sm + .dropdown-toggle-split, .mo2f_tour_btn-group-sm > .mo2f_tour_btn + .dropdown-toggle-split {
533
+ padding-right: 0.375rem;
534
+ padding-left: 0.375rem; }
535
+
536
+ .mo2f_tour_btn-lg + .dropdown-toggle-split, .mo2f_tour_btn-group-lg > .mo2f_tour_btn + .dropdown-toggle-split {
537
+ padding-right: 0.75rem;
538
+ padding-left: 0.75rem; }
539
+
540
+ .mo2f_tour_btn-group-vertical {
541
+ display: inline-flex;
542
+ flex-direction: column;
543
+ align-items: flex-start;
544
+ justify-content: center; }
545
+ .mo2f_tour_btn-group-vertical .mo2f_tour_btn,
546
+ .mo2f_tour_btn-group-vertical .mo2f_tour_btn-group {
547
+ width: 100%; }
548
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn + .mo2f_tour_btn,
549
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn + .mo2f_tour_btn-group,
550
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn-group + .mo2f_tour_btn,
551
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn-group + .mo2f_tour_btn-group {
552
+ margin-top: -1px;
553
+ margin-left: 0; }
554
+
555
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn:not(:first-child):not(:last-child) {
556
+ border-radius: 0; }
557
+
558
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn:first-child:not(:last-child) {
559
+ border-bottom-right-radius: 0;
560
+ border-bottom-left-radius: 0; }
561
+
562
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn:last-child:not(:first-child) {
563
+ border-top-left-radius: 0;
564
+ border-top-right-radius: 0; }
565
+
566
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn-group:not(:first-child):not(:last-child) > .mo2f_tour_btn {
567
+ border-radius: 0; }
568
+
569
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn-group:first-child:not(:last-child) > .mo2f_tour_btn:last-child,
570
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn-group:first-child:not(:last-child) > .dropdown-toggle {
571
+ border-bottom-right-radius: 0;
572
+ border-bottom-left-radius: 0; }
573
+
574
+ .mo2f_tour_btn-group-vertical > .mo2f_tour_btn-group:last-child:not(:first-child) > .mo2f_tour_btn:first-child {
575
+ border-top-left-radius: 0;
576
+ border-top-right-radius: 0; }
577
+
578
+ [data-toggle="buttons"] > .mo2f_tour_btn input[type="radio"],
579
+ [data-toggle="buttons"] > .mo2f_tour_btn input[type="checkbox"],
580
+ [data-toggle="buttons"] > .mo2f_tour_btn-group > .mo2f_tour_btn input[type="radio"],
581
+ [data-toggle="buttons"] > .mo2f_tour_btn-group > .btn input[type="checkbox"] {
582
+ position: absolute;
583
+ clip: rect(0, 0, 0, 0);
584
+ pointer-events: none; }
585
+
586
+ .mo2f_popover {
587
+ position: absolute;
588
+ top: 0;
589
+ left: 0;
590
+ z-index: 1060;
591
+ display: block;
592
+ max-width: 276px;
593
+ padding: 1px;
594
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
595
+ font-style: normal;
596
+ font-weight: normal;
597
+ line-height: 1.5;
598
+ text-align: left;
599
+ text-align: start;
600
+ text-decoration: none;
601
+ text-shadow: none;
602
+ text-transform: none;
603
+ letter-spacing: normal;
604
+ word-break: normal;
605
+ word-spacing: normal;
606
+ white-space: normal;
607
+ line-break: auto;
608
+ font-size: 0.875rem;
609
+ word-wrap: break-word;
610
+ background-color: #fff;
611
+ background-clip: padding-box;
612
+ border: 1px solid rgba(0, 0, 0, 0.2);
613
+ border-radius: 0.3rem; }
614
+ .mo2f_popover .mo2f_arrow {
615
+ position: absolute;
616
+ display: block;
617
+ width: 10px;
618
+ height: 5px;
619
+
620
+ }
621
+ .mo2f_popover .mo2f_arrow::before,
622
+ .mo2f_popover .mo2f_arrow::after {
623
+ position: absolute;
624
+ display: block;
625
+ border-color:transparent;
626
+ border-style: solid; }
627
+ .mo2f_popover .mo2f_arrow::before {
628
+ content: "";
629
+ border-width: 11px;
630
+ }
631
+ .mo2f_popover .mo2f_arrow::after {
632
+ content: "";
633
+ border-width: 11px;
634
+
635
+ }
636
+ .mo2f_popover.bs-mo2f_popover-top, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="top"] {
637
+ margin-bottom: 10px; }
638
+ .mo2f_popover.bs-mo2f_popover-top .mo2f_arrow, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="top"] .mo2f_arrow {
639
+ bottom: 0; }
640
+ .mo2f_popover.bs-mo2f_popover-top .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="top"] .mo2f_arrow::before,
641
+ .mo2f_popover.bs-mo2f_popover-top .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="top"] .mo2f_arrow::after {
642
+
643
+ border-bottom-width: 0; }
644
+ .mo2f_popover.bs-mo2f_popover-top .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="top"] .mo2f_arrow::before {
645
+ bottom: -11px;
646
+ margin-left: -6px;
647
+ border-top-color: rgba(0, 0, 0, 0.25); }
648
+ .mo2f_popover.bs-mo2f_popover-top .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="top"] .mo2f_arrow::after {
649
+ bottom: -10px;
650
+ margin-left: -6px;
651
+ border-top-color: #fff;
652
+ }
653
+ .mo2f_popover.bs-mo2f_popover-right, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="right"] {
654
+
655
+ margin-left: 10px; }
656
+ .mo2f_popover.bs-mo2f_popover-right .mo2f_arrow, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="right"] .mo2f_arrow {
657
+ left: 0; }
658
+ .mo2f_popover.bs-mo2f_popover-right .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="right"] .mo2f_arrow::before,
659
+ .mo2f_popover.bs-mo2f_popover-right .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="right"] .mo2f_arrow::after {
660
+ margin-top: -8px;
661
+ border-left-width: 0;
662
+ }
663
+ .mo2f_popover.bs-mo2f_popover-right .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="right"] .mo2f_arrow::before {
664
+ left: -11px;
665
+ border-right-color: rgba(0, 0, 0, 0.25); }
666
+ .mo2f_popover.bs-mo2f_popover-right .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="right"] .mo2f_arrow::after {
667
+ left: -10px;
668
+ border-right-color: #fff;
669
+ }
670
+ .mo2f_popover.bs-mo2f_popover-bottom, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="bottom"] {
671
+ margin-top: 10px; }
672
+ .mo2f_popover.bs-mo2f_popover-bottom .mo2f_arrow, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="bottom"] .mo2f_arrow {
673
+ top: 0; }
674
+ .mo2f_popover.bs-mo2f_popover-bottom .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="bottom"] .mo2f_arrow::before,
675
+ .mo2f_popover.bs-mo2f_popover-bottom .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="bottom"] .mo2f_arrow::after {
676
+ margin-left: -7px;
677
+ border-top-width: 0;
678
+
679
+ }
680
+ .mo2f_popover.bs-mo2f_popover-bottom .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="bottom"] .mo2f_arrow::before {
681
+ top: -11px;
682
+ border-bottom-color: rgba(0, 0, 0, 0.25); }
683
+ .mo2f_popover.bs-mo2f_popover-bottom .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="bottom"] .mo2f_arrow::after {
684
+ top: -10px;
685
+ border-bottom-color: #fff;
686
+
687
+ }
688
+ .mo2f_popover.bs-mo2f_popover-bottom .mo2f_popover-header::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="bottom"] .mo2f_popover-header::before {
689
+ position: absolute;
690
+ top: 0;
691
+ left: 50%;
692
+ display: block;
693
+ width: 20px;
694
+ margin-left: -10px;
695
+ content: "";
696
+ border-bottom: 1px solid #f7f7f7; }
697
+ .mo2f_popover.bs-mo2f_popover-left, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="left"] {
698
+ margin-right: 10px; }
699
+ .mo2f_popover.bs-mo2f_popover-left .mo2f_arrow, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="left"] .mo2f_arrow {
700
+ right: 0;
701
+
702
+ }
703
+ .mo2f_popover.bs-mo2f_popover-left .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="left"] .mo2f_arrow::before,
704
+ .mo2f_popover.bs-mo2f_popover-left .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="left"] .mo2f_arrow::after {
705
+ margin-top: -8px;
706
+ border-right-width: 0;
707
+ }
708
+ .mo2f_popover.bs-mo2f_popover-left .mo2f_arrow::before, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="left"] .mo2f_arrow::before {
709
+ right: -11px;
710
+ border-left-color: rgba(0, 0, 0, 0.25); }
711
+ .mo2f_popover.bs-mo2f_popover-left .mo2f_arrow::after, .mo2f_popover.bs-mo2f_popover-auto[x-placement^="left"] .mo2f_arrow::after {
712
+ right: -10px;
713
+ border-left-color: #fff;
714
+ }
715
+
716
+ .mo2f_popover-header {
717
+ padding: 8px 14px;
718
+ margin-bottom: 0;
719
+ font-size: 1rem;
720
+ color: #FFF;
721
+ background-color: #000;
722
+ border-bottom: 1px solid #ebebeb;
723
+ border-top-left-radius: calc(0.3rem - 1px);
724
+ border-top-right-radius: calc(0.3rem - 1px);
725
+ }
726
+ .mo2f_popover-header:empty {
727
+ display: none; }
728
+
729
+ .mo2f_popover-body {
730
+ padding: 9px 14px;
731
+ color: #212529; }
732
+
733
+ .tour-backdrop {
734
+ background-color: #000;
735
+ filter: alpha(opacity=80);
736
+ opacity: .4;
737
+ position: absolute;
738
+ z-index: 1100; }
739
+
740
+ .mo2f_popover[class*="tour-"] {
741
+ z-index: 1102; }
742
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation {
743
+ overflow: hidden;
744
+ padding: 9px 14px; }
745
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation *[data-role="end"] {
746
+ float: right; }
747
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation *[data-role="prev"],
748
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation *[data-role="next"],
749
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation *[data-role="end"] {
750
+ cursor: pointer; }
751
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation *[data-role="prev"].disabled,
752
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation *[data-role="next"].disabled,
753
+ .mo2f_popover[class*="tour-"] .mo2f_popover-navigation *[data-role="end"].disabled {
754
+ cursor: default; }
755
+ .mo2f_popover[class*="tour-"].orphan {
756
+ left: 50%;
757
+ margin-top: 0;
758
+ position: fixed;
759
+ top: 50%;
760
+ transform: translate(-50%, -50%); }
761
+ .mo2f_popover[class*="tour-"].orphan .mo2f_arrow {
762
+ display: none; }
includes/css/bootstrap.min.css CHANGED
@@ -549,4 +549,3 @@ p .button {
549
  box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
550
  vertical-align: top;
551
  }
552
-
549
  box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
550
  vertical-align: top;
551
  }
 
includes/css/mo_openid_feedback.css CHANGED
@@ -1,21 +1,23 @@
1
- .mo_openid_modal {
2
  display: none;
3
  position: fixed;
4
  z-index: 1;
5
  padding-top: 100px;
6
- left: 100px;
7
  top: 0;
8
- margin-left:220px;
9
- width: 50%;
10
  height: 100%;
 
 
 
11
 
12
  }
13
- .mo_openid_modal-content {
14
  background-color: #fefefe;
15
  margin: auto;
16
  padding: 20px;
17
  border: 1px solid #888;
18
- width: 55%;
19
  }
20
 
21
  .mo_openid_close {
1
+ .mo_openid_modal1 {
2
  display: none;
3
  position: fixed;
4
  z-index: 1;
5
  padding-top: 100px;
6
+ left: 0;
7
  top: 0;
8
+ width: 100%; /* Full width */
 
9
  height: 100%;
10
+ background-color: rgb(0,0,0); /* Fallback color */
11
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
12
+
13
 
14
  }
15
+ .mo_openid_modal1-content {
16
  background-color: #fefefe;
17
  margin: auto;
18
  padding: 20px;
19
  border: 1px solid #888;
20
+ width: 30%;
21
  }
22
 
23
  .mo_openid_close {
includes/css/mo_openid_style.css CHANGED
@@ -1,3 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  .dis{
2
  pointer-events: none;
3
  }
@@ -6,7 +70,6 @@
6
  display: inline-block;
7
  opacity:1;
8
 
9
-
10
  }
11
 
12
  .tooltip .tooltiptext {
@@ -519,4 +582,4 @@ aside.widget-area>section.widget_mo_openid_sharing_hor_wid>div.mo-openid-app-ico
519
  }
520
  .mo-tomato {
521
  color: tomato;
522
- }
1
+ .mo_openid_modal {
2
+
3
+ position: fixed; /* Stay in place */
4
+ z-index: 1; /* Sit on top */
5
+ padding-top: 100px; /* Location of the box */
6
+ left: 0;
7
+ top: 0;
8
+ width: 100%; /* Full width */
9
+ overflow: auto; /* Enable scroll if needed */
10
+ background-color: rgb(0,0,0); /* Fallback color */
11
+ background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
12
+ height: 100%;
13
+ -webkit-border-radius: 10px !important;
14
+ -moz-border-radius: 10px !important;
15
+ border-radius: 10px !important;
16
+
17
+ }
18
+
19
+ .mo_openid_modal-content {
20
+ background-color: #F2F3F7;
21
+ margin: auto;
22
+ padding: 20px;
23
+ border: 1px solid #888;
24
+ width: 55%;
25
+ -webkit-animation-name: animatetop;
26
+ -webkit-animation-duration: 1s;
27
+ animation-name: animatetop;
28
+ animation-duration: 1s;
29
+
30
+ }
31
+ @-webkit-keyframes animatetop {
32
+ from {top:-300px; opacity:0}
33
+ to {top:0; opacity:1}
34
+ }
35
+
36
+ @keyframes animatetop {
37
+ from {top:-300px; opacity:0}
38
+ to {top:0; opacity:1}
39
+ }
40
+ .modal-head {
41
+ padding: 2px 16px;
42
+ background-color: #B9BCC7;
43
+ color: white;
44
+ }
45
+ .mo_close {
46
+ color: #aaaaaa;
47
+ float: right;
48
+ font-size: 28px;
49
+ font-weight: bold;
50
+ }
51
+ .overlay{
52
+ position: fixed;
53
+ top: 0;
54
+ left: 0;
55
+ right: 0;
56
+ bottom: 0;
57
+ width: 100%;
58
+ height: 100%;
59
+ background: #000;
60
+ opacity: .0;
61
+ z-index: 1;
62
+ }
63
+
64
+
65
  .dis{
66
  pointer-events: none;
67
  }
70
  display: inline-block;
71
  opacity:1;
72
 
 
73
  }
74
 
75
  .tooltip .tooltiptext {
582
  }
583
  .mo-tomato {
584
  color: tomato;
585
+ }
includes/images/custom_app.png ADDED
Binary file
includes/js/bootstrap-tour-standalone.min.js ADDED
@@ -0,0 +1,1761 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ========================================================================
2
+ * bootstrap-tour - v0.12.0
3
+ * http://bootstraptour.com
4
+ * ========================================================================
5
+ * Copyright 2012-2017 Ulrich Sossou
6
+ *
7
+ * ========================================================================
8
+ * Licensed under the MIT License (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * https://opensource.org/licenses/MIT
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================================
20
+ */
21
+
22
+ function _classCallCheck(t, e) {
23
+ if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
24
+ }
25
+
26
+ function _classCallCheck(t, e) {
27
+ if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
28
+ }
29
+
30
+ function _possibleConstructorReturn(t, e) {
31
+ if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
32
+ return !e || "object" != typeof e && "function" != typeof e ? t : e
33
+ }
34
+
35
+ function _inherits(t, e) {
36
+ if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
37
+ t.prototype = Object.create(e && e.prototype, {
38
+ constructor: {
39
+ value: t,
40
+ enumerable: !1,
41
+ writable: !0,
42
+ configurable: !0
43
+ }
44
+ }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
45
+ }! function(t, e) {
46
+ "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.Popper = e()
47
+ }(this, function() {
48
+ "use strict";
49
+
50
+ function t(t) {
51
+ var e = {};
52
+ return t && "[object Function]" === e.toString.call(t)
53
+ }
54
+
55
+ function e(t, e) {
56
+ if (1 !== t.nodeType) return [];
57
+ var n = window.getComputedStyle(t, null);
58
+ return e ? n[e] : n
59
+ }
60
+
61
+ function n(t) {
62
+ return "HTML" === t.nodeName ? t : t.parentNode || t.host
63
+ }
64
+
65
+ function o(t) {
66
+ if (!t || -1 !== ["HTML", "BODY", "#document"].indexOf(t.nodeName)) return window.document.body;
67
+ var i = e(t),
68
+ r = i.overflow,
69
+ s = i.overflowX,
70
+ a = i.overflowY;
71
+ return /(auto|scroll)/.test(r + a + s) ? t : o(n(t))
72
+ }
73
+
74
+ function i(t) {
75
+ var n = t && t.offsetParent,
76
+ o = n && n.nodeName;
77
+ return o && "BODY" !== o && "HTML" !== o ? -1 !== ["TD", "TABLE"].indexOf(n.nodeName) && "static" === e(n, "position") ? i(n) : n : window.document.documentElement
78
+ }
79
+
80
+ function r(t) {
81
+ var e = t.nodeName;
82
+ return "BODY" !== e && ("HTML" === e || i(t.firstElementChild) === t)
83
+ }
84
+
85
+ function s(t) {
86
+ return null !== t.parentNode ? s(t.parentNode) : t
87
+ }
88
+
89
+ function a(t, e) {
90
+ if (!(t && t.nodeType && e && e.nodeType)) return window.document.documentElement;
91
+ var n = t.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_FOLLOWING,
92
+ o = n ? t : e,
93
+ p = n ? e : t,
94
+ u = document.createRange();
95
+ u.setStart(o, 0), u.setEnd(p, 0);
96
+ var l = u.commonAncestorContainer;
97
+ if (t !== l && e !== l || o.contains(p)) return r(l) ? l : i(l);
98
+ var c = s(t);
99
+ return c.host ? a(c.host, e) : a(t, s(e).host)
100
+ }
101
+
102
+ function p(t) {
103
+ var e = "top" === (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "top") ? "scrollTop" : "scrollLeft",
104
+ n = t.nodeName;
105
+ if ("BODY" === n || "HTML" === n) {
106
+ var o = window.document.documentElement;
107
+ return (window.document.scrollingElement || o)[e]
108
+ }
109
+ return t[e]
110
+ }
111
+
112
+ function u(t, e) {
113
+ var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
114
+ o = p(e, "top"),
115
+ i = p(e, "left"),
116
+ r = n ? -1 : 1;
117
+ return t.top += o * r, t.bottom += o * r, t.left += i * r, t.right += i * r, t
118
+ }
119
+
120
+ function l(t, e) {
121
+ var n = "x" === e ? "Left" : "Top",
122
+ o = "Left" === n ? "Right" : "Bottom";
123
+ return +t["border" + n + "Width"].split("px")[0] + +t["border" + o + "Width"].split("px")[0]
124
+ }
125
+
126
+ function c(t, e, n, o) {
127
+ return Math.max(e["offset" + t], e["scroll" + t], n["client" + t], n["offset" + t], n["scroll" + t], Z() ? n["offset" + t] + o["margin" + ("Height" === t ? "Top" : "Left")] + o["margin" + ("Height" === t ? "Bottom" : "Right")] : 0)
128
+ }
129
+
130
+ function h() {
131
+ var t = window.document.body,
132
+ e = window.document.documentElement,
133
+ n = Z() && window.getComputedStyle(e);
134
+ return {
135
+ height: c("Height", t, e, n),
136
+ width: c("Width", t, e, n)
137
+ }
138
+ }
139
+
140
+ function f(t) {
141
+ return nt({}, t, {
142
+ right: t.left + t.width,
143
+ bottom: t.top + t.height
144
+ })
145
+ }
146
+
147
+ function d(t) {
148
+ var n = {};
149
+ if (Z()) try {
150
+ n = t.getBoundingClientRect();
151
+ var o = p(t, "top"),
152
+ i = p(t, "left");
153
+ n.top += o, n.left += i, n.bottom += o, n.right += i
154
+ } catch (t) {} else n = t.getBoundingClientRect();
155
+ var r = {
156
+ left: n.left,
157
+ top: n.top,
158
+ width: n.right - n.left,
159
+ height: n.bottom - n.top
160
+ },
161
+ s = "HTML" === t.nodeName ? h() : {},
162
+ a = s.width || t.clientWidth || r.right - r.left,
163
+ u = s.height || t.clientHeight || r.bottom - r.top,
164
+ c = t.offsetWidth - a,
165
+ d = t.offsetHeight - u;
166
+ if (c || d) {
167
+ var m = e(t);
168
+ c -= l(m, "x"), d -= l(m, "y"), r.width -= c, r.height -= d
169
+ }
170
+ return f(r)
171
+ }
172
+
173
+ function m(t, n) {
174
+ var i = Z(),
175
+ r = "HTML" === n.nodeName,
176
+ s = d(t),
177
+ a = d(n),
178
+ p = o(t),
179
+ l = e(n),
180
+ c = +l.borderTopWidth.split("px")[0],
181
+ h = +l.borderLeftWidth.split("px")[0],
182
+ m = f({
183
+ top: s.top - a.top - c,
184
+ left: s.left - a.left - h,
185
+ width: s.width,
186
+ height: s.height
187
+ });
188
+ if (m.marginTop = 0, m.marginLeft = 0, !i && r) {
189
+ var g = +l.marginTop.split("px")[0],
190
+ v = +l.marginLeft.split("px")[0];
191
+ m.top -= c - g, m.bottom -= c - g, m.left -= h - v, m.right -= h - v, m.marginTop = g, m.marginLeft = v
192
+ }
193
+ return (i ? n.contains(p) : n === p && "BODY" !== p.nodeName) && (m = u(m, n)), m
194
+ }
195
+
196
+ function g(t) {
197
+ var e = window.document.documentElement,
198
+ n = m(t, e),
199
+ o = Math.max(e.clientWidth, window.innerWidth || 0),
200
+ i = Math.max(e.clientHeight, window.innerHeight || 0),
201
+ r = p(e),
202
+ s = p(e, "left");
203
+ return f({
204
+ top: r - n.top + n.marginTop,
205
+ left: s - n.left + n.marginLeft,
206
+ width: o,
207
+ height: i
208
+ })
209
+ }
210
+
211
+ function v(t) {
212
+ var o = t.nodeName;
213
+ return "BODY" !== o && "HTML" !== o && ("fixed" === e(t, "position") || v(n(t)))
214
+ }
215
+
216
+ function _(t, e, i, r) {
217
+ var s = {
218
+ top: 0,
219
+ left: 0
220
+ },
221
+ p = a(t, e);
222
+ if ("viewport" === r) s = g(p);
223
+ else {
224
+ var u = void 0;
225
+ "scrollParent" === r ? "BODY" === (u = o(n(t))).nodeName && (u = window.document.documentElement) : u = "window" === r ? window.document.documentElement : r;
226
+ var l = m(u, p);
227
+ if ("HTML" !== u.nodeName || v(p)) s = l;
228
+ else {
229
+ var c = h(),
230
+ f = c.height,
231
+ d = c.width;
232
+ s.top += l.top - l.marginTop, s.bottom = f + l.top, s.left += l.left - l.marginLeft, s.right = d + l.left
233
+ }
234
+ }
235
+ return s.left += i, s.top += i, s.right -= i, s.bottom -= i, s
236
+ }
237
+
238
+ function b(t) {
239
+ return t.width * t.height
240
+ }
241
+
242
+ function y(t, e, n, o, i) {
243
+ var r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
244
+ if (-1 === t.indexOf("auto")) return t;
245
+ var s = _(n, o, r, i),
246
+ a = {
247
+ top: {
248
+ width: s.width,
249
+ height: e.top - s.top
250
+ },
251
+ right: {
252
+ width: s.right - e.right,
253
+ height: s.height
254
+ },
255
+ bottom: {
256
+ width: s.width,
257
+ height: s.bottom - e.bottom
258
+ },
259
+ left: {
260
+ width: e.left - s.left,
261
+ height: s.height
262
+ }
263
+ },
264
+ p = Object.keys(a).map(function(t) {
265
+ return nt({
266
+ key: t
267
+ }, a[t], {
268
+ area: b(a[t])
269
+ })
270
+ }).sort(function(t, e) {
271
+ return e.area - t.area
272
+ }),
273
+ u = p.filter(function(t) {
274
+ var e = t.width,
275
+ o = t.height;
276
+ return e >= n.clientWidth && o >= n.clientHeight
277
+ }),
278
+ l = u.length > 0 ? u[0].key : p[0].key,
279
+ c = t.split("-")[1];
280
+ return l + (c ? "-" + c : "")
281
+ }
282
+
283
+ function w(t, e, n) {
284
+ return m(n, a(e, n))
285
+ }
286
+
287
+ function E(t) {
288
+ var e = window.getComputedStyle(t),
289
+ n = parseFloat(e.marginTop) + parseFloat(e.marginBottom),
290
+ o = parseFloat(e.marginLeft) + parseFloat(e.marginRight);
291
+ return {
292
+ width: t.offsetWidth + o,
293
+ height: t.offsetHeight + n
294
+ }
295
+ }
296
+
297
+ function S(t) {
298
+ var e = {
299
+ left: "right",
300
+ right: "left",
301
+ bottom: "top",
302
+ top: "bottom"
303
+ };
304
+ return t.replace(/left|right|bottom|top/g, function(t) {
305
+ return e[t]
306
+ })
307
+ }
308
+
309
+ function T(t, e, n) {
310
+ n = n.split("-")[0];
311
+ var o = E(t),
312
+ i = {
313
+ width: o.width,
314
+ height: o.height
315
+ },
316
+ r = -1 !== ["right", "left"].indexOf(n),
317
+ s = r ? "top" : "left",
318
+ a = r ? "left" : "top",
319
+ p = r ? "height" : "width",
320
+ u = r ? "width" : "height";
321
+ return i[s] = e[s] + e[p] / 2 - o[p] / 2, i[a] = n === a ? e[a] - o[u] : e[S(a)], i
322
+ }
323
+
324
+ function O(t, e) {
325
+ return Array.prototype.find ? t.find(e) : t.filter(e)[0]
326
+ }
327
+
328
+ function C(t, e, n) {
329
+ if (Array.prototype.findIndex) return t.findIndex(function(t) {
330
+ return t[e] === n
331
+ });
332
+ var o = O(t, function(t) {
333
+ return t[e] === n
334
+ });
335
+ return t.indexOf(o)
336
+ }
337
+
338
+ function x(e, n, o) {
339
+ return (void 0 === o ? e : e.slice(0, C(e, "name", o))).forEach(function(e) {
340
+ e.function && console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
341
+ var o = e.function || e.fn;
342
+ e.enabled && t(o) && (n.offsets.popper = f(n.offsets.popper), n.offsets.reference = f(n.offsets.reference), n = o(n, e))
343
+ }), n
344
+ }
345
+
346
+ function k() {
347
+ if (!this.state.isDestroyed) {
348
+ var t = {
349
+ instance: this,
350
+ styles: {},
351
+ mo2f_arrowStyles: {},
352
+ attributes: {},
353
+ flipped: !1,
354
+ offsets: {}
355
+ };
356
+ t.offsets.reference = w(this.state, this.popper, this.reference), t.placement = y(this.options.placement, t.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), t.originalPlacement = t.placement, t.offsets.popper = T(this.popper, t.offsets.reference, t.placement), t.offsets.popper.position = "absolute", t = x(this.modifiers, t), this.state.isCreated ? this.options.onUpdate(t) : (this.state.isCreated = !0, this.options.onCreate(t))
357
+ }
358
+ }
359
+
360
+ function P(t, e) {
361
+ return t.some(function(t) {
362
+ var n = t.name;
363
+ return t.enabled && n === e
364
+ })
365
+ }
366
+
367
+ function D(t) {
368
+ for (var e = [!1, "ms", "Webkit", "Moz", "O"], n = t.charAt(0).toUpperCase() + t.slice(1), o = 0; o < e.length - 1; o++) {
369
+ var i = e[o],
370
+ r = i ? "" + i + n : t;
371
+ if (void 0 !== window.document.body.style[r]) return r
372
+ }
373
+ return null
374
+ }
375
+
376
+ function N() {
377
+ return this.state.isDestroyed = !0, P(this.modifiers, "applyStyle") && (this.popper.removeAttribute("x-placement"), this.popper.style.left = "", this.popper.style.position = "", this.popper.style.top = "", this.popper.style[D("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
378
+ }
379
+
380
+ function A(t, e, n, i) {
381
+ var r = "BODY" === t.nodeName,
382
+ s = r ? window : t;
383
+ s.addEventListener(e, n, {
384
+ passive: !0
385
+ }), r || A(o(s.parentNode), e, n, i), i.push(s)
386
+ }
387
+
388
+ function H(t, e, n, i) {
389
+ n.updateBound = i, window.addEventListener("resize", n.updateBound, {
390
+ passive: !0
391
+ });
392
+ var r = o(t);
393
+ return A(r, "scroll", n.updateBound, n.scrollParents), n.scrollElement = r, n.eventsEnabled = !0, n
394
+ }
395
+
396
+ function j() {
397
+ this.state.eventsEnabled || (this.state = H(this.reference, this.options, this.state, this.scheduleUpdate))
398
+ }
399
+
400
+ function I(t, e) {
401
+ return window.removeEventListener("resize", e.updateBound), e.scrollParents.forEach(function(t) {
402
+ t.removeEventListener("scroll", e.updateBound)
403
+ }), e.updateBound = null, e.scrollParents = [], e.scrollElement = null, e.eventsEnabled = !1, e
404
+ }
405
+
406
+ function R() {
407
+ this.state.eventsEnabled && (window.cancelAnimationFrame(this.scheduleUpdate), this.state = I(this.reference, this.state))
408
+ }
409
+
410
+ function L(t) {
411
+ return "" !== t && !isNaN(parseFloat(t)) && isFinite(t)
412
+ }
413
+
414
+ function W(t, e) {
415
+ Object.keys(e).forEach(function(n) {
416
+ var o = ""; - 1 !== ["width", "height", "top", "right", "bottom", "left"].indexOf(n) && L(e[n]) && (o = "px"), t.style[n] = e[n] + o
417
+ })
418
+ }
419
+
420
+ function U(t, e) {
421
+ Object.keys(e).forEach(function(n) {
422
+ !1 !== e[n] ? t.setAttribute(n, e[n]) : t.removeAttribute(n)
423
+ })
424
+ }
425
+
426
+ function M(t, e, n) {
427
+ var o = O(t, function(t) {
428
+ return t.name === e
429
+ }),
430
+ i = !!o && t.some(function(t) {
431
+ return t.name === n && t.enabled && t.order < o.order
432
+ });
433
+ if (!i) {
434
+ var r = "`" + e + "`",
435
+ s = "`" + n + "`";
436
+ console.warn(s + " modifier is required by " + r + " modifier in order to work, be sure to include it before " + r + "!")
437
+ }
438
+ return i
439
+ }
440
+
441
+ function F(t) {
442
+ return "end" === t ? "start" : "start" === t ? "end" : t
443
+ }
444
+
445
+ function B(t) {
446
+ var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
447
+ n = it.indexOf(t),
448
+ o = it.slice(n + 1).concat(it.slice(0, n));
449
+ return e ? o.reverse() : o
450
+ }
451
+
452
+ function K(t, e, n, o) {
453
+ var i = t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),
454
+ r = +i[1],
455
+ s = i[2];
456
+ if (!r) return t;
457
+ if (0 === s.indexOf("%")) {
458
+ var a = void 0;
459
+ switch (s) {
460
+ case "%p":
461
+ a = n;
462
+ break;
463
+ case "%":
464
+ case "%r":
465
+ default:
466
+ a = o
467
+ }
468
+ return f(a)[e] / 100 * r
469
+ }
470
+ if ("vh" === s || "vw" === s) {
471
+ return ("vh" === s ? Math.max(document.documentElement.clientHeight, window.innerHeight || 0) : Math.max(document.documentElement.clientWidth, window.innerWidth || 0)) / 100 * r
472
+ }
473
+ return r
474
+ }
475
+
476
+ function q(t, e, n, o) {
477
+ var i = [0, 0],
478
+ r = -1 !== ["right", "left"].indexOf(o),
479
+ s = t.split(/(\+|\-)/).map(function(t) {
480
+ return t.trim()
481
+ }),
482
+ a = s.indexOf(O(s, function(t) {
483
+ return -1 !== t.search(/,|\s/)
484
+ }));
485
+ s[a] && -1 === s[a].indexOf(",") && console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
486
+ var p = /\s*,\s*|\s+/,
487
+ u = -1 !== a ? [s.slice(0, a).concat([s[a].split(p)[0]]), [s[a].split(p)[1]].concat(s.slice(a + 1))] : [s];
488
+ return (u = u.map(function(t, o) {
489
+ var i = (1 === o ? !r : r) ? "height" : "width",
490
+ s = !1;
491
+ return t.reduce(function(t, e) {
492
+ return "" === t[t.length - 1] && -1 !== ["+", "-"].indexOf(e) ? (t[t.length - 1] = e, s = !0, t) : s ? (t[t.length - 1] += e, s = !1, t) : t.concat(e)
493
+ }, []).map(function(t) {
494
+ return K(t, i, e, n)
495
+ })
496
+ })).forEach(function(t, e) {
497
+ t.forEach(function(n, o) {
498
+ L(n) && (i[e] += n * ("-" === t[o - 1] ? -1 : 1))
499
+ })
500
+ }), i
501
+ }
502
+ for (var Y = ["native code", "[object MutationObserverConstructor]"], V = "undefined" != typeof window, Q = ["Edge", "Trident", "Firefox"], G = 0, z = 0; z < Q.length; z += 1)
503
+ if (V && navigator.userAgent.indexOf(Q[z]) >= 0) {
504
+ G = 1;
505
+ break
506
+ } var J = V && function(t) {
507
+ return Y.some(function(e) {
508
+ return (t || "").toString().indexOf(e) > -1
509
+ })
510
+ }(window.MutationObserver) ? function(t) {
511
+ var e = !1,
512
+ n = 0,
513
+ o = document.createElement("span");
514
+ return new MutationObserver(function() {
515
+ t(), e = !1
516
+ }).observe(o, {
517
+ attributes: !0
518
+ }),
519
+ function() {
520
+ e || (e = !0, o.setAttribute("x-index", n), n += 1)
521
+ }
522
+ } : function(t) {
523
+ var e = !1;
524
+ return function() {
525
+ e || (e = !0, setTimeout(function() {
526
+ e = !1, t()
527
+ }, G))
528
+ }
529
+ },
530
+ X = void 0,
531
+ Z = function() {
532
+ return void 0 === X && (X = -1 !== navigator.appVersion.indexOf("MSIE 10")), X
533
+ },
534
+ $ = function(t, e) {
535
+ if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
536
+ },
537
+ tt = function() {
538
+ function t(t, e) {
539
+ for (var n = 0; n < e.length; n++) {
540
+ var o = e[n];
541
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o)
542
+ }
543
+ }
544
+ return function(e, n, o) {
545
+ return n && t(e.prototype, n), o && t(e, o), e
546
+ }
547
+ }(),
548
+ et = function(t, e, n) {
549
+ return e in t ? Object.defineProperty(t, e, {
550
+ value: n,
551
+ enumerable: !0,
552
+ configurable: !0,
553
+ writable: !0
554
+ }) : t[e] = n, t
555
+ },
556
+ nt = Object.assign || function(t) {
557
+ for (var e = 1; e < arguments.length; e++) {
558
+ var n = arguments[e];
559
+ for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && (t[o] = n[o])
560
+ }
561
+ return t
562
+ },
563
+ ot = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"],
564
+ it = ot.slice(3),
565
+ rt = {
566
+ FLIP: "flip",
567
+ CLOCKWISE: "clockwise",
568
+ COUNTERCLOCKWISE: "counterclockwise"
569
+ },
570
+ st = {
571
+ placement: "bottom",
572
+ eventsEnabled: !0,
573
+ removeOnDestroy: !1,
574
+ onCreate: function() {},
575
+ onUpdate: function() {},
576
+ modifiers: {
577
+ shift: {
578
+ order: 100,
579
+ enabled: !0,
580
+ fn: function(t) {
581
+ var e = t.placement,
582
+ n = e.split("-")[0],
583
+ o = e.split("-")[1];
584
+ if (o) {
585
+ var i = t.offsets,
586
+ r = i.reference,
587
+ s = i.popper,
588
+ a = -1 !== ["bottom", "top"].indexOf(n),
589
+ p = a ? "left" : "top",
590
+ u = a ? "width" : "height",
591
+ l = {
592
+ start: et({}, p, r[p]),
593
+ end: et({}, p, r[p] + r[u] - s[u])
594
+ };
595
+ t.offsets.popper = nt({}, s, l[o])
596
+ }
597
+ return t
598
+ }
599
+ },
600
+ offset: {
601
+ order: 200,
602
+ enabled: !0,
603
+ fn: function(t, e) {
604
+ var n = e.offset,
605
+ o = t.placement,
606
+ i = t.offsets,
607
+ r = i.popper,
608
+ s = i.reference,
609
+ a = o.split("-")[0],
610
+ p = void 0;
611
+ return p = L(+n) ? [+n, 0] : q(n, r, s, a), "left" === a ? (r.top += p[0], r.left -= p[1]) : "right" === a ? (r.top += p[0], r.left += p[1]) : "top" === a ? (r.left += p[0], r.top -= p[1]) : "bottom" === a && (r.left += p[0], r.top += p[1]), t.popper = r, t
612
+ },
613
+ offset: 0
614
+ },
615
+ preventOverflow: {
616
+ order: 300,
617
+ enabled: !0,
618
+ fn: function(t, e) {
619
+ var n = e.boundariesElement || i(t.instance.popper);
620
+ t.instance.reference === n && (n = i(n));
621
+ var o = _(t.instance.popper, t.instance.reference, e.padding, n);
622
+ e.boundaries = o;
623
+ var r = e.priority,
624
+ s = t.offsets.popper,
625
+ a = {
626
+ primary: function(t) {
627
+ var n = s[t];
628
+ return s[t] < o[t] && !e.escapeWithReference && (n = Math.max(s[t], o[t])), et({}, t, n)
629
+ },
630
+ secondary: function(t) {
631
+ var n = "right" === t ? "left" : "top",
632
+ i = s[n];
633
+ return s[t] > o[t] && !e.escapeWithReference && (i = Math.min(s[n], o[t] - ("right" === t ? s.width : s.height))), et({}, n, i)
634
+ }
635
+ };
636
+ return r.forEach(function(t) {
637
+ var e = -1 !== ["left", "top"].indexOf(t) ? "primary" : "secondary";
638
+ s = nt({}, s, a[e](t))
639
+ }), t.offsets.popper = s, t
640
+ },
641
+ priority: ["left", "right", "top", "bottom"],
642
+ padding: 5,
643
+ boundariesElement: "scrollParent"
644
+ },
645
+ keepTogether: {
646
+ order: 400,
647
+ enabled: !0,
648
+ fn: function(t) {
649
+ var e = t.offsets,
650
+ n = e.popper,
651
+ o = e.reference,
652
+ i = t.placement.split("-")[0],
653
+ r = Math.floor,
654
+ s = -1 !== ["top", "bottom"].indexOf(i),
655
+ a = s ? "right" : "bottom",
656
+ p = s ? "left" : "top",
657
+ u = s ? "width" : "height";
658
+ return n[a] < r(o[p]) && (t.offsets.popper[p] = r(o[p]) - n[u]), n[p] > r(o[a]) && (t.offsets.popper[p] = r(o[a])), t
659
+ }
660
+ },
661
+ mo2f_arrow: {
662
+ order: 500,
663
+ enabled: !0,
664
+ fn: function(t, n) {
665
+ if (!M(t.instance.modifiers, "mo2f_arrow", "keepTogether")) return t;
666
+ var o = n.element;
667
+ if ("string" == typeof o) {
668
+ if (!(o = t.instance.popper.querySelector(o))) return t
669
+ } else if (!t.instance.popper.contains(o)) return console.warn("WARNING: `mo2f_arrow.element` must be child of its popper element!"), t;
670
+ var i = t.placement.split("-")[0],
671
+ r = t.offsets,
672
+ s = r.popper,
673
+ a = r.reference,
674
+ p = -1 !== ["left", "right"].indexOf(i),
675
+ u = p ? "height" : "width",
676
+ l = p ? "Top" : "Left",
677
+ c = l.toLowerCase(),
678
+ h = p ? "left" : "top",
679
+ d = p ? "bottom" : "right",
680
+ m = E(o)[u];
681
+ a[d] - m < s[c] && (t.offsets.popper[c] -= s[c] - (a[d] - m)), a[c] + m > s[d] && (t.offsets.popper[c] += a[c] + m - s[d]);
682
+ var g = a[c] + a[u] / 2 - m / 2,
683
+ v = e(t.instance.popper, "margin" + l).replace("px", ""),
684
+ _ = g - f(t.offsets.popper)[c] - v;
685
+ return _ = Math.max(Math.min(s[u] - m, _), 0), t.mo2f_arrowElement = o, t.offsets.mo2f_arrow = {}, t.offsets.mo2f_arrow[c] = Math.round(_), t.offsets.mo2f_arrow[h] = "", t
686
+ },
687
+ element: "[x-mo2f_arrow]"
688
+ },
689
+ flip: {
690
+ order: 600,
691
+ enabled: !0,
692
+ fn: function(t, e) {
693
+ if (P(t.instance.modifiers, "inner")) return t;
694
+ if (t.flipped && t.placement === t.originalPlacement) return t;
695
+ var n = _(t.instance.popper, t.instance.reference, e.padding, e.boundariesElement),
696
+ o = t.placement.split("-")[0],
697
+ i = S(o),
698
+ r = t.placement.split("-")[1] || "",
699
+ s = [];
700
+ switch (e.behavior) {
701
+ case rt.FLIP:
702
+ s = [o, i];
703
+ break;
704
+ case rt.CLOCKWISE:
705
+ s = B(o);
706
+ break;
707
+ case rt.COUNTERCLOCKWISE:
708
+ s = B(o, !0);
709
+ break;
710
+ default:
711
+ s = e.behavior
712
+ }
713
+ return s.forEach(function(a, p) {
714
+ if (o !== a || s.length === p + 1) return t;
715
+ o = t.placement.split("-")[0], i = S(o);
716
+ var u = t.offsets.popper,
717
+ l = t.offsets.reference,
718
+ c = Math.floor,
719
+ h = "left" === o && c(u.right) > c(l.left) || "right" === o && c(u.left) < c(l.right) || "top" === o && c(u.bottom) > c(l.top) || "bottom" === o && c(u.top) < c(l.bottom),
720
+ f = c(u.left) < c(n.left),
721
+ d = c(u.right) > c(n.right),
722
+ m = c(u.top) < c(n.top),
723
+ g = c(u.bottom) > c(n.bottom),
724
+ v = "left" === o && f || "right" === o && d || "top" === o && m || "bottom" === o && g,
725
+ _ = -1 !== ["top", "bottom"].indexOf(o),
726
+ b = !!e.flipVariations && (_ && "start" === r && f || _ && "end" === r && d || !_ && "start" === r && m || !_ && "end" === r && g);
727
+ (h || v || b) && (t.flipped = !0, (h || v) && (o = s[p + 1]), b && (r = F(r)), t.placement = o + (r ? "-" + r : ""), t.offsets.popper = nt({}, t.offsets.popper, T(t.instance.popper, t.offsets.reference, t.placement)), t = x(t.instance.modifiers, t, "flip"))
728
+ }), t
729
+ },
730
+ behavior: "flip",
731
+ padding: 5,
732
+ boundariesElement: "viewport"
733
+ },
734
+ inner: {
735
+ order: 700,
736
+ enabled: !1,
737
+ fn: function(t) {
738
+ var e = t.placement,
739
+ n = e.split("-")[0],
740
+ o = t.offsets,
741
+ i = o.popper,
742
+ r = o.reference,
743
+ s = -1 !== ["left", "right"].indexOf(n),
744
+ a = -1 === ["top", "left"].indexOf(n);
745
+ return i[s ? "left" : "top"] = r[n] - (a ? i[s ? "width" : "height"] : 0), t.placement = S(e), t.offsets.popper = f(i), t
746
+ }
747
+ },
748
+ hide: {
749
+ order: 800,
750
+ enabled: !0,
751
+ fn: function(t) {
752
+ if (!M(t.instance.modifiers, "hide", "preventOverflow")) return t;
753
+ var e = t.offsets.reference,
754
+ n = O(t.instance.modifiers, function(t) {
755
+ return "preventOverflow" === t.name
756
+ }).boundaries;
757
+ if (e.bottom < n.top || e.left > n.right || e.top > n.bottom || e.right < n.left) {
758
+ if (!0 === t.hide) return t;
759
+ t.hide = !0, t.attributes["x-out-of-boundaries"] = ""
760
+ } else {
761
+ if (!1 === t.hide) return t;
762
+ t.hide = !1, t.attributes["x-out-of-boundaries"] = !1
763
+ }
764
+ return t
765
+ }
766
+ },
767
+ computeStyle: {
768
+ order: 850,
769
+ enabled: !0,
770
+ fn: function(t, e) {
771
+ var n = e.x,
772
+ o = e.y,
773
+ r = t.offsets.popper,
774
+ s = O(t.instance.modifiers, function(t) {
775
+ return "applyStyle" === t.name
776
+ }).gpuAcceleration;
777
+ void 0 !== s && console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
778
+ var a = void 0 !== s ? s : e.gpuAcceleration,
779
+ p = d(i(t.instance.popper)),
780
+ u = {
781
+ position: r.position
782
+ },
783
+ l = {
784
+ left: Math.floor(r.left),
785
+ top: Math.floor(r.top),
786
+ bottom: Math.floor(r.bottom),
787
+ right: Math.floor(r.right)
788
+ },
789
+ c = "bottom" === n ? "top" : "bottom",
790
+ h = "right" === o ? "left" : "right",
791
+ f = D("transform"),
792
+ m = void 0,
793
+ g = void 0;
794
+ if (g = "bottom" === c ? -p.height + l.bottom : l.top, m = "right" === h ? -p.width + l.right : l.left, a && f) u[f] = "translate3d(" + m + "px, " + g + "px, 0)", u[c] = 0, u[h] = 0, u.willChange = "transform";
795
+ else {
796
+ var v = "bottom" === c ? -1 : 1,
797
+ _ = "right" === h ? -1 : 1;
798
+ u[c] = g * v, u[h] = m * _, u.willChange = c + ", " + h
799
+ }
800
+ var b = {
801
+ "x-placement": t.placement
802
+ };
803
+ return t.attributes = nt({}, b, t.attributes), t.styles = nt({}, u, t.styles), t.mo2f_arrowStyles = nt({}, t.offsets.mo2f_arrow, t.mo2f_arrowStyles), t
804
+ },
805
+ gpuAcceleration: !0,
806
+ x: "bottom",
807
+ y: "right"
808
+ },
809
+ applyStyle: {
810
+ order: 900,
811
+ enabled: !0,
812
+ fn: function(t) {
813
+ return W(t.instance.popper, t.styles), U(t.instance.popper, t.attributes), t.mo2f_arrowElement && Object.keys(t.mo2f_arrowStyles).length && W(t.mo2f_arrowElement, t.mo2f_arrowStyles), t
814
+ },
815
+ onLoad: function(t, e, n, o, i) {
816
+ var r = w(i, e, t),
817
+ s = y(n.placement, r, e, t, n.modifiers.flip.boundariesElement, n.modifiers.flip.padding);
818
+ return e.setAttribute("x-placement", s), W(e, {
819
+ position: "absolute"
820
+ }), n
821
+ },
822
+ gpuAcceleration: void 0
823
+ }
824
+ }
825
+ },
826
+ at = function() {
827
+ function e(n, o) {
828
+ var i = this,
829
+ r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
830
+ $(this, e), this.scheduleUpdate = function() {
831
+ return requestAnimationFrame(i.update)
832
+ }, this.update = J(this.update.bind(this)), this.options = nt({}, e.Defaults, r), this.state = {
833
+ isDestroyed: !1,
834
+ isCreated: !1,
835
+ scrollParents: []
836
+ }, this.reference = n.jquery ? n[0] : n, this.popper = o.jquery ? o[0] : o, this.options.modifiers = {}, Object.keys(nt({}, e.Defaults.modifiers, r.modifiers)).forEach(function(t) {
837
+ i.options.modifiers[t] = nt({}, e.Defaults.modifiers[t] || {}, r.modifiers ? r.modifiers[t] : {})
838
+ }), this.modifiers = Object.keys(this.options.modifiers).map(function(t) {
839
+ return nt({
840
+ name: t
841
+ }, i.options.modifiers[t])
842
+ }).sort(function(t, e) {
843
+ return t.order - e.order
844
+ }), this.modifiers.forEach(function(e) {
845
+ e.enabled && t(e.onLoad) && e.onLoad(i.reference, i.popper, i.options, e, i.state)
846
+ }), this.update();
847
+ var s = this.options.eventsEnabled;
848
+ s && this.enableEventListeners(), this.state.eventsEnabled = s
849
+ }
850
+ return tt(e, [{
851
+ key: "update",
852
+ value: function() {
853
+ return k.call(this)
854
+ }
855
+ }, {
856
+ key: "destroy",
857
+ value: function() {
858
+ return N.call(this)
859
+ }
860
+ }, {
861
+ key: "enableEventListeners",
862
+ value: function() {
863
+ return j.call(this)
864
+ }
865
+ }, {
866
+ key: "disableEventListeners",
867
+ value: function() {
868
+ return R.call(this)
869
+ }
870
+ }]), e
871
+ }();
872
+ return at.Utils = ("undefined" != typeof window ? window : global).PopperUtils, at.placements = ot, at.Defaults = st, at
873
+ });
874
+ var Util = function(t) {
875
+ function e(t) {
876
+ return {}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
877
+ }
878
+
879
+ function n(t) {
880
+ return (t[0] || t).nodeType
881
+ }
882
+
883
+ function o() {
884
+ return {
885
+ bindType: s.end,
886
+ delegateType: s.end,
887
+ handle: function(e) {
888
+ if (t(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
889
+ }
890
+ }
891
+ }
892
+
893
+ function i() {
894
+ if (window.QUnit) return !1;
895
+ var t = document.createElement("bootstrap");
896
+ for (var e in a)
897
+ if (void 0 !== t.style[e]) return {
898
+ end: a[e]
899
+ };
900
+ return !1
901
+ }
902
+
903
+ function r(e) {
904
+ var n = this,
905
+ o = !1;
906
+ return t(this).one(p.TRANSITION_END, function() {
907
+ o = !0
908
+ }), setTimeout(function() {
909
+ o || p.triggerTransitionEnd(n)
910
+ }, e), this
911
+ }
912
+ var s = !1,
913
+ a = {
914
+ WebkitTransition: "webkitTransitionEnd",
915
+ MozTransition: "transitionend",
916
+ OTransition: "oTransitionEnd otransitionend",
917
+ transition: "transitionend"
918
+ },
919
+ p = {
920
+ TRANSITION_END: "bsTransitionEnd",
921
+ getUID: function(t) {
922
+ do {
923
+ t += ~~(1e6 * Math.random())
924
+ } while (document.getElementById(t));
925
+ return t
926
+ },
927
+ getSelectorFromElement: function(e) {
928
+ var n = e.getAttribute("data-target");
929
+ n && "#" !== n || (n = e.getAttribute("href") || "");
930
+ try {
931
+ return t(n).length > 0 ? n : null
932
+ } catch (t) {
933
+ return null
934
+ }
935
+ },
936
+ reflow: function(t) {
937
+ return t.offsetHeight
938
+ },
939
+ triggerTransitionEnd: function(e) {
940
+ t(e).trigger(s.end)
941
+ },
942
+ supportsTransitionEnd: function() {
943
+ return Boolean(s)
944
+ },
945
+ typeCheckConfig: function(t, o, i) {
946
+ for (var r in i)
947
+ if (i.hasOwnProperty(r)) {
948
+ var s = i[r],
949
+ a = o[r],
950
+ p = a && n(a) ? "element" : e(a);
951
+ if (!new RegExp(s).test(p)) throw new Error(t.toUpperCase() + ': Option "' + r + '" provided type "' + p + '" but expected type "' + s + '".')
952
+ }
953
+ }
954
+ };
955
+ return s = i(), t.fn.emulateTransitionEnd = r, p.supportsTransitionEnd() && (t.event.special[p.TRANSITION_END] = o()), p
956
+ }(jQuery),
957
+ _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
958
+ return typeof t
959
+ } : function(t) {
960
+ return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
961
+ },
962
+ _createClass = function() {
963
+ function t(t, e) {
964
+ for (var n = 0; n < e.length; n++) {
965
+ var o = e[n];
966
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o)
967
+ }
968
+ }
969
+ return function(e, n, o) {
970
+ return n && t(e.prototype, n), o && t(e, o), e
971
+ }
972
+ }(),
973
+ Tooltip = function(t) {
974
+ if ("undefined" == typeof Popper) throw new Error("Bootstrap tooltips require Popper.js (https://popper.js.org)");
975
+ var e = "tooltip",
976
+ n = ".bs.tooltip",
977
+ o = t.fn[e],
978
+ i = new RegExp("(^|\\s)bs-tooltip\\S+", "g"),
979
+ r = {
980
+ animation: "boolean",
981
+ template: "string",
982
+ title: "(string|element|function)",
983
+ trigger: "string",
984
+ delay: "(number|object)",
985
+ html: "boolean",
986
+ selector: "(string|boolean)",
987
+ placement: "(string|function)",
988
+ offset: "(number|string)",
989
+ container: "(string|element|boolean)",
990
+ fallbackPlacement: "(string|array)"
991
+ },
992
+ s = {
993
+ AUTO: "auto",
994
+ TOP: "top",
995
+ RIGHT: "right",
996
+ BOTTOM: "bottom",
997
+ LEFT: "left"
998
+ },
999
+ a = {
1000
+ animation: !0,
1001
+ template: '<div class="tooltip" role="tooltip"><div class="mo2f_arrow"></div><div class="tooltip-inner"></div></div>',
1002
+ trigger: "hover focus",
1003
+ title: "",
1004
+ delay: 0,
1005
+ html: !1,
1006
+ selector: !1,
1007
+ placement: "top",
1008
+ offset: 0,
1009
+ container: !1,
1010
+ fallbackPlacement: "flip"
1011
+ },
1012
+ p = {
1013
+ SHOW: "show",
1014
+ OUT: "out"
1015
+ },
1016
+ u = {
1017
+ HIDE: "hide" + n,
1018
+ HIDDEN: "hidden" + n,
1019
+ SHOW: "show" + n,
1020
+ SHOWN: "shown" + n,
1021
+ INSERTED: "inserted" + n,
1022
+ CLICK: "click" + n,
1023
+ FOCUSIN: "focusin" + n,
1024
+ FOCUSOUT: "focusout" + n,
1025
+ MOUSEENTER: "mouseenter" + n,
1026
+ MOUSELEAVE: "mouseleave" + n
1027
+ },
1028
+ l = {
1029
+ FADE: "fade",
1030
+ SHOW: "show"
1031
+ },
1032
+ c = {
1033
+ TOOLTIP: ".tooltip",
1034
+ TOOLTIP_INNER: ".tooltip-inner",
1035
+ ARROW: ".mo2f_arrow"
1036
+ },
1037
+ h = {
1038
+ HOVER: "hover",
1039
+ FOCUS: "focus",
1040
+ CLICK: "click",
1041
+ MANUAL: "manual"
1042
+ },
1043
+ f = function() {
1044
+ function o(t, e) {
1045
+ _classCallCheck(this, o), this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners()
1046
+ }
1047
+ return o.prototype.enable = function() {
1048
+ this._isEnabled = !0
1049
+ }, o.prototype.disable = function() {
1050
+ this._isEnabled = !1
1051
+ }, o.prototype.toggleEnabled = function() {
1052
+ this._isEnabled = !this._isEnabled
1053
+ }, o.prototype.toggle = function(e) {
1054
+ if (e) {
1055
+ var n = this.constructor.DATA_KEY,
1056
+ o = t(e.currentTarget).data(n);
1057
+ o || (o = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(n, o)), o._activeTrigger.click = !o._activeTrigger.click, o._isWithActiveTrigger() ? o._enter(null, o) : o._leave(null, o)
1058
+ } else {
1059
+ if (t(this.getTipElement()).hasClass(l.SHOW)) return void this._leave(null, this);
1060
+ this._enter(null, this)
1061
+ }
1062
+ }, o.prototype.dispose = function() {
1063
+ clearTimeout(this._timeout), t.removeData(this.element, this.constructor.DATA_KEY), t(this.element).off(this.constructor.EVENT_KEY), t(this.element).closest(".modal").off("hide.bs.modal"), this.tip && t(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, this._activeTrigger = null, null !== this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null
1064
+ }, o.prototype.show = function() {
1065
+ var e = this;
1066
+ if ("none" === t(this.element).css("display")) throw new Error("Please use show on visible elements");
1067
+ var n = t.Event(this.constructor.Event.SHOW);
1068
+ if (this.isWithContent() && this._isEnabled) {
1069
+ t(this.element).trigger(n);
1070
+ var i = t.contains(this.element.ownerDocument.documentElement, this.element);
1071
+ if (n.isDefaultPrevented() || !i) return;
1072
+ var r = this.getTipElement(),
1073
+ s = Util.getUID(this.constructor.NAME);
1074
+ r.setAttribute("id", s), this.element.setAttribute("aria-describedby", s), this.setContent(), this.config.animation && t(r).addClass(l.FADE);
1075
+ var a = "function" == typeof this.config.placement ? this.config.placement.call(this, r, this.element) : this.config.placement,
1076
+ u = this._getAttachment(a);
1077
+ this.addAttachmentClass(u);
1078
+ var h = !1 === this.config.container ? document.body : t(this.config.container);
1079
+ t(r).data(this.constructor.DATA_KEY, this), t.contains(this.element.ownerDocument.documentElement, this.tip) || t(r).appendTo(h), t(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new Popper(this.element, r, {
1080
+ placement: u,
1081
+ modifiers: {
1082
+ offset: {
1083
+ offset: this.config.offset
1084
+ },
1085
+ flip: {
1086
+ behavior: this.config.fallbackPlacement
1087
+ },
1088
+ mo2f_arrow: {
1089
+ element: c.ARROW
1090
+ }
1091
+ },
1092
+ onCreate: function(t) {
1093
+ t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t)
1094
+ },
1095
+ onUpdate: function(t) {
1096
+ e._handlePopperPlacementChange(t)
1097
+ }
1098
+ }), t(r).addClass(l.SHOW), "ontouchstart" in document.documentElement && t("body").children().on("mouseover", null, t.noop);
1099
+ var f = function() {
1100
+ e.config.animation && e._fixTransition();
1101
+ var n = e._hoverState;
1102
+ e._hoverState = null, t(e.element).trigger(e.constructor.Event.SHOWN), n === p.OUT && e._leave(null, e)
1103
+ };
1104
+ Util.supportsTransitionEnd() && t(this.tip).hasClass(l.FADE) ? t(this.tip).one(Util.TRANSITION_END, f).emulateTransitionEnd(o._TRANSITION_DURATION) : f()
1105
+ }
1106
+ }, o.prototype.hide = function(e) {
1107
+ var n = this,
1108
+ o = this.getTipElement(),
1109
+ i = t.Event(this.constructor.Event.HIDE),
1110
+ r = function() {
1111
+ n._hoverState !== p.SHOW && o.parentNode && o.parentNode.removeChild(o), n._cleanTipClass(), n.element.removeAttribute("aria-describedby"), t(n.element).trigger(n.constructor.Event.HIDDEN), null !== n._popper && n._popper.destroy(), e && e()
1112
+ };
1113
+ t(this.element).trigger(i), i.isDefaultPrevented() || (t(o).removeClass(l.SHOW), "ontouchstart" in document.documentElement && t("body").children().off("mouseover", null, t.noop), this._activeTrigger[h.CLICK] = !1, this._activeTrigger[h.FOCUS] = !1, this._activeTrigger[h.HOVER] = !1, Util.supportsTransitionEnd() && t(this.tip).hasClass(l.FADE) ? t(o).one(Util.TRANSITION_END, r).emulateTransitionEnd(150) : r(), this._hoverState = "")
1114
+ }, o.prototype.update = function() {
1115
+ null !== this._popper && this._popper.scheduleUpdate()
1116
+ }, o.prototype.isWithContent = function() {
1117
+ return Boolean(this.getTitle())
1118
+ }, o.prototype.addAttachmentClass = function(e) {
1119
+ t(this.getTipElement()).addClass("bs-tooltip-" + e)
1120
+ }, o.prototype.getTipElement = function() {
1121
+ return this.tip = this.tip || t(this.config.template)[0]
1122
+ }, o.prototype.setContent = function() {
1123
+ var e = t(this.getTipElement());
1124
+ this.setElementContent(e.find(c.TOOLTIP_INNER), this.getTitle()), e.removeClass(l.FADE + " " + l.SHOW)
1125
+ }, o.prototype.setElementContent = function(e, n) {
1126
+ var o = this.config.html;
1127
+ "object" === (void 0 === n ? "undefined" : _typeof(n)) && (n.nodeType || n.jquery) ? o ? t(n).parent().is(e) || e.empty().append(n) : e.text(t(n).text()): e[o ? "html" : "text"](n)
1128
+ }, o.prototype.getTitle = function() {
1129
+ var t = this.element.getAttribute("data-original-title");
1130
+ return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t
1131
+ }, o.prototype._getAttachment = function(t) {
1132
+ return s[t.toUpperCase()]
1133
+ }, o.prototype._setListeners = function() {
1134
+ var e = this;
1135
+ this.config.trigger.split(" ").forEach(function(n) {
1136
+ if ("click" === n) t(e.element).on(e.constructor.Event.CLICK, e.config.selector, function(t) {
1137
+ return e.toggle(t)
1138
+ });
1139
+ else if (n !== h.MANUAL) {
1140
+ var o = n === h.HOVER ? e.constructor.Event.MOUSEENTER : e.constructor.Event.FOCUSIN,
1141
+ i = n === h.HOVER ? e.constructor.Event.MOUSELEAVE : e.constructor.Event.FOCUSOUT;
1142
+ t(e.element).on(o, e.config.selector, function(t) {
1143
+ return e._enter(t)
1144
+ }).on(i, e.config.selector, function(t) {
1145
+ return e._leave(t)
1146
+ })
1147
+ }
1148
+ t(e.element).closest(".modal").on("hide.bs.modal", function() {
1149
+ return e.hide()
1150
+ })
1151
+ }), this.config.selector ? this.config = t.extend({}, this.config, {
1152
+ trigger: "manual",
1153
+ selector: ""
1154
+ }) : this._fixTitle()
1155
+ }, o.prototype._fixTitle = function() {
1156
+ var t = _typeof(this.element.getAttribute("data-original-title"));
1157
+ (this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", ""))
1158
+ }, o.prototype._enter = function(e, n) {
1159
+ var o = this.constructor.DATA_KEY;
1160
+ (n = n || t(e.currentTarget).data(o)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(o, n)), e && (n._activeTrigger["focusin" === e.type ? h.FOCUS : h.HOVER] = !0), t(n.getTipElement()).hasClass(l.SHOW) || n._hoverState === p.SHOW ? n._hoverState = p.SHOW : (clearTimeout(n._timeout), n._hoverState = p.SHOW, n.config.delay && n.config.delay.show ? n._timeout = setTimeout(function() {
1161
+ n._hoverState === p.SHOW && n.show()
1162
+ }, n.config.delay.show) : n.show())
1163
+ }, o.prototype._leave = function(e, n) {
1164
+ var o = this.constructor.DATA_KEY;
1165
+ (n = n || t(e.currentTarget).data(o)) || (n = new this.constructor(e.currentTarget, this._getDelegateConfig()), t(e.currentTarget).data(o, n)), e && (n._activeTrigger["focusout" === e.type ? h.FOCUS : h.HOVER] = !1), n._isWithActiveTrigger() || (clearTimeout(n._timeout), n._hoverState = p.OUT, n.config.delay && n.config.delay.hide ? n._timeout = setTimeout(function() {
1166
+ n._hoverState === p.OUT && n.hide()
1167
+ }, n.config.delay.hide) : n.hide())
1168
+ }, o.prototype._isWithActiveTrigger = function() {
1169
+ for (var t in this._activeTrigger)
1170
+ if (this._activeTrigger[t]) return !0;
1171
+ return !1
1172
+ }, o.prototype._getConfig = function(n) {
1173
+ return (n = t.extend({}, this.constructor.Default, t(this.element).data(), n)).delay && "number" == typeof n.delay && (n.delay = {
1174
+ show: n.delay,
1175
+ hide: n.delay
1176
+ }), n.title && "number" == typeof n.title && (n.title = n.title.toString()), n.content && "number" == typeof n.content && (n.content = n.content.toString()), Util.typeCheckConfig(e, n, this.constructor.DefaultType), n
1177
+ }, o.prototype._getDelegateConfig = function() {
1178
+ var t = {};
1179
+ if (this.config)
1180
+ for (var e in this.config) this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]);
1181
+ return t
1182
+ }, o.prototype._cleanTipClass = function() {
1183
+ var e = t(this.getTipElement()),
1184
+ n = e.attr("class").match(i);
1185
+ null !== n && n.length > 0 && e.removeClass(n.join(""))
1186
+ }, o.prototype._handlePopperPlacementChange = function(t) {
1187
+ this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement))
1188
+ }, o.prototype._fixTransition = function() {
1189
+ var e = this.getTipElement(),
1190
+ n = this.config.animation;
1191
+ null === e.getAttribute("x-placement") && (t(e).removeClass(l.FADE), this.config.animation = !1, this.hide(), this.show(), this.config.animation = n)
1192
+ }, o._jQueryInterface = function(e) {
1193
+ return this.each(function() {
1194
+ var n = t(this).data("bs.tooltip"),
1195
+ i = "object" === (void 0 === e ? "undefined" : _typeof(e)) && e;
1196
+ if ((n || !/dispose|hide/.test(e)) && (n || (n = new o(this, i), t(this).data("bs.tooltip", n)), "string" == typeof e)) {
1197
+ if (void 0 === n[e]) throw new Error('No method named "' + e + '"');
1198
+ n[e]()
1199
+ }
1200
+ })
1201
+ }, _createClass(o, null, [{
1202
+ key: "VERSION",
1203
+ get: function() {
1204
+ return "4.0.0-beta"
1205
+ }
1206
+ }, {
1207
+ key: "Default",
1208
+ get: function() {
1209
+ return a
1210
+ }
1211
+ }, {
1212
+ key: "NAME",
1213
+ get: function() {
1214
+ return e
1215
+ }
1216
+ }, {
1217
+ key: "DATA_KEY",
1218
+ get: function() {
1219
+ return "bs.tooltip"
1220
+ }
1221
+ }, {
1222
+ key: "Event",
1223
+ get: function() {
1224
+ return u
1225
+ }
1226
+ }, {
1227
+ key: "EVENT_KEY",
1228
+ get: function() {
1229
+ return n
1230
+ }
1231
+ }, {
1232
+ key: "DefaultType",
1233
+ get: function() {
1234
+ return r
1235
+ }
1236
+ }]), o
1237
+ }();
1238
+ return t.fn[e] = f._jQueryInterface, t.fn[e].Constructor = f, t.fn[e].noConflict = function() {
1239
+ return t.fn[e] = o, f._jQueryInterface
1240
+ }, f
1241
+ }(jQuery),
1242
+ _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
1243
+ return typeof t
1244
+ } : function(t) {
1245
+ return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
1246
+ },
1247
+ _createClass = function() {
1248
+ function t(t, e) {
1249
+ for (var n = 0; n < e.length; n++) {
1250
+ var o = e[n];
1251
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(t, o.key, o)
1252
+ }
1253
+ }
1254
+ return function(e, n, o) {
1255
+ return n && t(e.prototype, n), o && t(e, o), e
1256
+ }
1257
+ }(),
1258
+ mo2f_popover = function(t) {
1259
+ var e = "mo2f_popover",
1260
+ n = ".bs.mo2f_popover",
1261
+ o = t.fn[e],
1262
+ i = new RegExp("(^|\\s)bs-mo2f_popover\\S+", "g"),
1263
+ r = t.extend({}, Tooltip.Default, {
1264
+ placement: "right",
1265
+ trigger: "click",
1266
+ content: "",
1267
+ template: '<div class="mo2f_popover" role="tooltip"><div class="mo2f_arrow"></div><h3 class="mo2f_popover-header"></h3><div class="mo2f_popover-body"></div></div>'
1268
+ }),
1269
+ s = t.extend({}, Tooltip.DefaultType, {
1270
+ content: "(string|element|function)"
1271
+ }),
1272
+ a = {
1273
+ FADE: "fade",
1274
+ SHOW: "show"
1275
+ },
1276
+ p = {
1277
+ TITLE: ".mo2f_popover-header",
1278
+ CONTENT: ".mo2f_popover-body"
1279
+ },
1280
+ u = {
1281
+ HIDE: "hide" + n,
1282
+ HIDDEN: "hidden" + n,
1283
+ SHOW: "show" + n,
1284
+ SHOWN: "shown" + n,
1285
+ INSERTED: "inserted" + n,
1286
+ CLICK: "click" + n,
1287
+ FOCUSIN: "focusin" + n,
1288
+ FOCUSOUT: "focusout" + n,
1289
+ MOUSEENTER: "mouseenter" + n,
1290
+ MOUSELEAVE: "mouseleave" + n
1291
+ },
1292
+ l = function(o) {
1293
+ function l() {
1294
+ return _classCallCheck(this, l), _possibleConstructorReturn(this, o.apply(this, arguments))
1295
+ }
1296
+ return _inherits(l, o), l.prototype.isWithContent = function() {
1297
+ return this.getTitle() || this._getContent()
1298
+ }, l.prototype.addAttachmentClass = function(e) {
1299
+ t(this.getTipElement()).addClass("bs-mo2f_popover-" + e)
1300
+ }, l.prototype.getTipElement = function() {
1301
+ return this.tip = this.tip || t(this.config.template)[0]
1302
+ }, l.prototype.setContent = function() {
1303
+ var e = t(this.getTipElement());
1304
+ this.setElementContent(e.find(p.TITLE), this.getTitle()), this.setElementContent(e.find(p.CONTENT), this._getContent()), e.removeClass(a.FADE + " " + a.SHOW)
1305
+ }, l.prototype._getContent = function() {
1306
+ return this.element.getAttribute("data-content") || ("function" == typeof this.config.content ? this.config.content.call(this.element) : this.config.content)
1307
+ }, l.prototype._cleanTipClass = function() {
1308
+ var e = t(this.getTipElement()),
1309
+ n = e.attr("class").match(i);
1310
+ null !== n && n.length > 0 && e.removeClass(n.join(""))
1311
+ }, l._jQueryInterface = function(e) {
1312
+ return this.each(function() {
1313
+ var n = t(this).data("bs.mo2f_popover"),
1314
+ o = "object" === (void 0 === e ? "undefined" : _typeof(e)) ? e : null;
1315
+ if ((n || !/destroy|hide/.test(e)) && (n || (n = new l(this, o), t(this).data("bs.mo2f_popover", n)), "string" == typeof e)) {
1316
+ if (void 0 === n[e]) throw new Error('No method named "' + e + '"');
1317
+ n[e]()
1318
+ }
1319
+ })
1320
+ }, _createClass(l, null, [{
1321
+ key: "VERSION",
1322
+ get: function() {
1323
+ return "4.0.0-beta"
1324
+ }
1325
+ }, {
1326
+ key: "Default",
1327
+ get: function() {
1328
+ return r
1329
+ }
1330
+ }, {
1331
+ key: "NAME",
1332
+ get: function() {
1333
+ return e
1334
+ }
1335
+ }, {
1336
+ key: "DATA_KEY",
1337
+ get: function() {
1338
+ return "bs.mo2f_popover"
1339
+ }
1340
+ }, {
1341
+ key: "Event",
1342
+ get: function() {
1343
+ return u
1344
+ }
1345
+ }, {
1346
+ key: "EVENT_KEY",
1347
+ get: function() {
1348
+ return n
1349
+ }
1350
+ }, {
1351
+ key: "DefaultType",
1352
+ get: function() {
1353
+ return s
1354
+ }
1355
+ }]), l
1356
+ }(Tooltip);
1357
+ return t.fn[e] = l._jQueryInterface, t.fn[e].Constructor = l, t.fn[e].noConflict = function() {
1358
+ return t.fn[e] = o, l._jQueryInterface
1359
+ }, l
1360
+ }(jQuery),
1361
+ bind = function(t, e) {
1362
+ return function() {
1363
+ return t.apply(e, arguments)
1364
+ }
1365
+ };
1366
+ ! function(t, e) {
1367
+ "function" == typeof define && define.amd ? define(["jquery"], function(n) {
1368
+ return t.Tour = e(n)
1369
+ }) : "object" == typeof exports ? module.exports = e(require("jquery")) : t.Tour = e(t.jQuery)
1370
+ }(window, function(t) {
1371
+ var e;
1372
+ return e = window.document,
1373
+ function() {
1374
+ function n(e) {
1375
+ this._showmo2f_popoverAndOverlay = bind(this._showmo2f_popoverAndOverlay, this);
1376
+ var n;
1377
+ try {
1378
+ n = window.localStorage
1379
+ } catch (t) {
1380
+ n = !1
1381
+ }
1382
+ this._options = t.extend({
1383
+ name: "tour",
1384
+ steps: [],
1385
+ container: "body",
1386
+ autoscroll: !0,
1387
+ keyboard: !0,
1388
+ storage: n,
1389
+ debug: !1,
1390
+ backdrop: !1,
1391
+ backdropContainer: "body",
1392
+ backdropPadding: 0,
1393
+ redirect: !0,
1394
+ orphan: !1,
1395
+ duration: !1,
1396
+ delay: !1,
1397
+ basePath: "",
1398
+ //template: '<div class="mo2f_popover" role="tooltip"> <div class="mo2f_arrow" ></div> <h3 class="mo2f_popover-header" style="margin-top:0px;"></h3> <div class="mo2f_popover-body"></div> <div class="mo2f_popover-navigation"> <div class="mo2f_tour_btn-group"> <button class="mo2f_tour_btn mo2f_tour_btn-sm mo2f_tour_btn-secondary mo2f_tour_btn_next-success" data-role="next">Next &raquo;</button> <button class="mo2f_tour_btn mo2f_tour_btn-sm mo2f_tour_btn-secondary" data-role="pause-resume" data-pause-text="Pause" data-resume-text="Resume">Pause</button> </div>&nbsp;&nbsp; <button class="button button-primary button-large" data-role="end">End tour</button> </div> </div>',
1399
+
1400
+ afterSetState: function(t, e) {},
1401
+ afterGetState: function(t, e) {},
1402
+ afterRemoveState: function(t) {},
1403
+ onStart: function(t) {},
1404
+ onEnd: function(t) {},
1405
+ onShow: function(t) {},
1406
+ onShown: function(t) {},
1407
+ onHide: function(t) {},
1408
+ onHidden: function(t) {},
1409
+ onNext: function(t) {},
1410
+ onPrev: function(t) {},
1411
+ onPause: function(t, e) {},
1412
+ onResume: function(t, e) {},
1413
+ onRedirectError: function(t) {}
1414
+ }, e), this._force = !1, this._inited = !1, this._current = null, this.backdrops = []
1415
+ }
1416
+ return n.prototype.addSteps = function(t) {
1417
+ var e, n, o;
1418
+ for (e = 0, n = t.length; e < n; e++) o = t[e], this.addStep(o);
1419
+ return this
1420
+ }, n.prototype.addStep = function(t) {
1421
+ return this._options.steps.push(t), this
1422
+ }, n.prototype.getStep = function(e) {
1423
+ if (null != this._options.steps[e]) return t.extend({
1424
+ id: "step-" + e,
1425
+ path: "",
1426
+ host: "",
1427
+ placement: "right",
1428
+ title: "",
1429
+ content: "<p></p>",
1430
+ next: e === this._options.steps.length - 1 ? -1 : e + 1,
1431
+ prev: e - 1,
1432
+ animation: !0,
1433
+ container: this._options.container,
1434
+ autoscroll: this._options.autoscroll,
1435
+ backdrop: this._options.backdrop,
1436
+ backdropContainer: this._options.backdropContainer,
1437
+ backdropPadding: this._options.backdropPadding,
1438
+ redirect: this._options.redirect,
1439
+ reflexElement: this._options.steps[e].element,
1440
+ backdropElement: this._options.steps[e].element,
1441
+ orphan: this._options.orphan,
1442
+ duration: this._options.duration,
1443
+ delay: this._options.delay,
1444
+ template: this._options.template,
1445
+ onShow: this._options.onShow,
1446
+ onShown: this._options.onShown,
1447
+ onHide: this._options.onHide,
1448
+ onHidden: this._options.onHidden,
1449
+ onNext: this._options.onNext,
1450
+ onPrev: this._options.onPrev,
1451
+ onPause: this._options.onPause,
1452
+ onResume: this._options.onResume,
1453
+ onRedirectError: this._options.onRedirectError
1454
+ }, this._options.steps[e])
1455
+ }, n.prototype.init = function(t) {
1456
+ return this._force = t, this.ended() ? (this._debug("Tour ended, init prevented."), this) : (this.setCurrentStep(), this._initMouseNavigation(), this._initKeyboardNavigation(), null !== this._current && this.showStep(this._current), this._inited = !0, this)
1457
+ }, n.prototype.start = function(t) {
1458
+ var e;
1459
+ return null == t && (t = !1), this._inited || this.init(t), null === this._current && (e = this._makePromise(null != this._options.onStart ? this._options.onStart(this) : void 0), this._callOnPromiseDone(e, this.showStep, 0)), this
1460
+ }, n.prototype.next = function() {
1461
+ var t;
1462
+ return t = this.hideStep(this._current, this._current + 1), this._callOnPromiseDone(t, this._showNextStep)
1463
+ }, n.prototype.prev = function() {
1464
+ var t;
1465
+ return t = this.hideStep(this._current, this._current - 1), this._callOnPromiseDone(t, this._showPrevStep)
1466
+ }, n.prototype.goTo = function(t) {
1467
+ var e;
1468
+ return e = this.hideStep(this._current, t), this._callOnPromiseDone(e, this.showStep, t)
1469
+ }, n.prototype.end = function() {
1470
+ var n, o;
1471
+ return n = function(n) {
1472
+ return function(o) {
1473
+ if (t(e).off("click.tour-" + n._options.name), t(e).off("keyup.tour-" + n._options.name), n._setState("end", "yes"), n._inited = !1, n._force = !1, n._clearTimer(), null != n._options.onEnd) return n._options.onEnd(n)
1474
+ }
1475
+ }(this), o = this.hideStep(this._current), this._callOnPromiseDone(o, n)
1476
+ }, n.prototype.ended = function() {
1477
+ return !this._force && !!this._getState("end")
1478
+ }, n.prototype.restart = function() {
1479
+ return this._removeState("current_step"), this._removeState("end"), this._removeState("redirect_to"), this.start()
1480
+ }, n.prototype.pause = function() {
1481
+ var t;
1482
+ return (t = this.getStep(this._current)) && t.duration ? (this._paused = !0, this._duration -= (new Date).getTime() - this._start, window.clearTimeout(this._timer), this._debug("Paused/Stopped step " + (this._current + 1) + " timer (" + this._duration + " remaining)."), null != t.onPause ? t.onPause(this, this._duration) : void 0) : this
1483
+ }, n.prototype.resume = function() {
1484
+ var t;
1485
+ return (t = this.getStep(this._current)) && t.duration ? (this._paused = !1, this._start = (new Date).getTime(), this._duration = this._duration || t.duration, this._timer = window.setTimeout(function(t) {
1486
+ return function() {
1487
+ return t._isLast() ? t.next() : t.end()
1488
+ }
1489
+ }(this), this._duration), this._debug("Started step " + (this._current + 1) + " timer with duration " + this._duration), null != t.onResume && this._duration !== t.duration ? t.onResume(this, this._duration) : void 0) : this
1490
+ }, n.prototype.hideStep = function(e, n) {
1491
+ var o, i, r, s;
1492
+ if (s = this.getStep(e)) return this._clearTimer(), r = this._makePromise(null != s.onHide ? s.onHide(this, e) : void 0), i = function(o) {
1493
+ return function(i) {
1494
+ var r, a;
1495
+ if ((r = t(s.element)).data("bs.mo2f_popover") || (r = t("body")), r.mo2f_popover("dispose").removeClass("tour-" + o._options.name + "-element tour-" + o._options.name + "-" + e + "-element").removeData("bs.mo2f_popover"), s.reflex && t(s.reflexElement).removeClass("tour-step-element-reflex").off(o._reflexEvent(s.reflex) + ".tour-" + o._options.name), s.backdrop && ((a = null != n && o.getStep(n)) && a.backdrop && a.backdropElement === s.backdropElement || o._hideOverlayElement(s)), null != s.onHidden) return s.onHidden(o)
1496
+ }
1497
+ }(this), o = s.delay.hide || s.delay, "[object Number]" === {}.toString.call(o) && o > 0 ? (this._debug("Wait " + o + " milliseconds to hide the step " + (this._current + 1)), window.setTimeout(function(t) {
1498
+ return function() {
1499
+ return t._callOnPromiseDone(r, i)
1500
+ }
1501
+ }(this), o)) : this._callOnPromiseDone(r, i), r
1502
+ }, n.prototype.showStep = function(t) {
1503
+ var n, o, i, r, s, a;
1504
+ return this.ended() ? (this._debug("Tour ended, showStep prevented."), this) : (a = this.getStep(t)) && (s = t < this._current, o = this._makePromise(null != a.onShow ? a.onShow(this, t) : void 0), this.setCurrentStep(t), n = function() {
1505
+ switch ({}.toString.call(a.path)) {
1506
+ case "[object Function]":
1507
+ return a.path();
1508
+ case "[object String]":
1509
+ return this._options.basePath + a.path;
1510
+ default:
1511
+ return a.path
1512
+ }
1513
+ }.call(this), !a.redirect || !this._isRedirect(a.host, n, e.location) || (this._redirect(a, t, n), this._isJustPathHashDifferent(a.host, n, e.location))) ? (r = function(e) {
1514
+ return function(n) {
1515
+ if (e._isOrphan(a)) {
1516
+ if (!1 === a.orphan) return e._debug("Skip the orphan step " + (e._current + 1) + ".\nOrphan option is false and the element does not exist or is hidden."), void(s ? e._showPrevStep() : e._showNextStep());
1517
+ e._debug("Show the orphan step " + (e._current + 1) + ". Orphans option is true.")
1518
+ }
1519
+ if (a.autoscroll ? e._scrollIntoView(t) : e._showmo2f_popoverAndOverlay(t), a.duration) return e.resume()
1520
+ }
1521
+ }(this), i = a.delay.show || a.delay, "[object Number]" === {}.toString.call(i) && i > 0 ? (this._debug("Wait " + i + " milliseconds to show the step " + (this._current + 1)), window.setTimeout(function(t) {
1522
+ return function() {
1523
+ return t._callOnPromiseDone(o, r)
1524
+ }
1525
+ }(this), i)) : this._callOnPromiseDone(o, r), o) : void 0
1526
+ }, n.prototype.getCurrentStep = function() {
1527
+ return this._current
1528
+ }, n.prototype.setCurrentStep = function(t) {
1529
+ return null != t ? (this._current = t, this._setState("current_step", t)) : (this._current = this._getState("current_step"), this._current = null === this._current ? null : parseInt(this._current, 10)), this
1530
+ }, n.prototype.redraw = function() {
1531
+ return this._showOverlayElement(this.getStep(this.getCurrentStep()))
1532
+ }, n.prototype._setState = function(t, e) {
1533
+ var n;
1534
+ if (this._options.storage) {
1535
+ n = this._options.name + "_" + t;
1536
+ try {
1537
+ this._options.storage.setItem(n, e)
1538
+ } catch (t) {
1539
+ t.code === DOMException.QUOTA_EXCEEDED_ERR && this._debug("LocalStorage quota exceeded. State storage failed.")
1540
+ }
1541
+ return this._options.afterSetState(n, e)
1542
+ }
1543
+ return null == this._state && (this._state = {}), this._state[t] = e
1544
+ }, n.prototype._removeState = function(t) {
1545
+ var e;
1546
+ return this._options.storage ? (e = this._options.name + "_" + t, this._options.storage.removeItem(e), this._options.afterRemoveState(e)) : null != this._state ? delete this._state[t] : void 0
1547
+ }, n.prototype._getState = function(t) {
1548
+ var e, n;
1549
+ return this._options.storage ? (e = this._options.name + "_" + t, n = this._options.storage.getItem(e)) : null != this._state && (n = this._state[t]), void 0 !== n && "null" !== n || (n = null), this._options.afterGetState(t, n), n
1550
+ }, n.prototype._showNextStep = function() {
1551
+ var t, e, n;
1552
+ return n = this.getStep(this._current), e = function(t) {
1553
+ return function(e) {
1554
+ return t.showStep(n.next)
1555
+ }
1556
+ }(this), t = this._makePromise(null != n.onNext ? n.onNext(this) : void 0), this._callOnPromiseDone(t, e)
1557
+ }, n.prototype._showPrevStep = function() {
1558
+ var t, e, n;
1559
+ return n = this.getStep(this._current), e = function(t) {
1560
+ return function(e) {
1561
+ return t.showStep(n.prev)
1562
+ }
1563
+ }(this), t = this._makePromise(null != n.onPrev ? n.onPrev(this) : void 0), this._callOnPromiseDone(t, e)
1564
+ }, n.prototype._debug = function(t) {
1565
+ if (this._options.debug) return window.console.log("Bootstrap Tour '" + this._options.name + "' | " + t)
1566
+ }, n.prototype._isRedirect = function(t, e, n) {
1567
+ var o;
1568
+ return !(null == t || "" === t || !("[object RegExp]" === {}.toString.call(t) && !t.test(n.origin) || "[object String]" === {}.toString.call(t) && this._isHostDifferent(t, n))) || (o = [n.pathname, n.search, n.hash].join(""), null != e && "" !== e && ("[object RegExp]" === {}.toString.call(e) && !e.test(o) || "[object String]" === {}.toString.call(e) && this._isPathDifferent(e, o)))
1569
+ }, n.prototype._isHostDifferent = function(t, e) {
1570
+ switch ({}.toString.call(t)) {
1571
+ case "[object RegExp]":
1572
+ return !t.test(e.origin);
1573
+ case "[object String]":
1574
+ return this._getProtocol(t) !== this._getProtocol(e.href) || this._getHost(t) !== this._getHost(e.href);
1575
+ default:
1576
+ return !0
1577
+ }
1578
+ }, n.prototype._isPathDifferent = function(t, e) {
1579
+ return this._getPath(t) !== this._getPath(e) || !this._equal(this._getQuery(t), this._getQuery(e)) || !this._equal(this._getHash(t), this._getHash(e))
1580
+ }, n.prototype._isJustPathHashDifferent = function(t, e, n) {
1581
+ var o;
1582
+ return (null == t || "" === t || !this._isHostDifferent(t, n)) && (o = [n.pathname, n.search, n.hash].join(""), "[object String]" === {}.toString.call(e) && (this._getPath(e) === this._getPath(o) && this._equal(this._getQuery(e), this._getQuery(o)) && !this._equal(this._getHash(e), this._getHash(o))))
1583
+ }, n.prototype._redirect = function(n, o, i) {
1584
+ var r;
1585
+ return t.isFunction(n.redirect) ? n.redirect.call(this, i) : (r = "[object String]" === {}.toString.call(n.host) ? "" + n.host + i : i, this._debug("Redirect to " + r), this._getState("redirect_to") !== "" + o ? (this._setState("redirect_to", "" + o), e.location.href = r) : (this._debug("Error redirection loop to " + i), this._removeState("redirect_to"), null != n.onRedirectError ? n.onRedirectError(this) : void 0))
1586
+ }, n.prototype._isOrphan = function(e) {
1587
+ return null == e.element || !t(e.element).length || t(e.element).is(":hidden") && "http://www.w3.org/2000/svg" !== t(e.element)[0].namespaceURI
1588
+ }, n.prototype._isLast = function() {
1589
+ return this._current < this._options.steps.length - 1
1590
+ }, n.prototype._showmo2f_popoverAndOverlay = function(t) {
1591
+ var e;
1592
+ if (this.getCurrentStep() === t && !this.ended()) return (e = this.getStep(t)).backdrop && this._showOverlayElement(e), this._showmo2f_popover(e, t), null != e.onShown && e.onShown(this), this._debug("Step " + (this._current + 1) + " of " + this._options.steps.length)
1593
+ }, n.prototype._showmo2f_popover = function(e, n) {
1594
+ var o, i, r;
1595
+ return t(".tour-" + this._options.name).remove(), r = t.extend({}, this._options), i = this._isOrphan(e), e.template = this._template(e, n), i && (e.element = "body", e.placement = "top"), (o = t(e.element)).addClass("tour-" + this._options.name + "-element tour-" + this._options.name + "-" + n + "-element"), e.options && t.extend(r, e.options), e.reflex && !i && t(e.reflexElement).addClass("tour-step-element-reflex").off(this._reflexEvent(e.reflex) + ".tour-" + this._options.name).on(this._reflexEvent(e.reflex) + ".tour-" + this._options.name, function(t) {
1596
+ return function() {
1597
+ return t._isLast() ? t.next() : t.end()
1598
+ }
1599
+ }(this)), o.mo2f_popover({
1600
+ placement: e.placement,
1601
+ trigger: "manual",
1602
+ title: e.title,
1603
+ content: e.content,
1604
+ html: !0,
1605
+ animation: e.animation,
1606
+ container: e.container,
1607
+ template: e.template,
1608
+ selector: e.element
1609
+ }).mo2f_popover("show"), t(o.data("bs.mo2f_popover").getTipElement()).attr("id", e.id)
1610
+ }, n.prototype._template = function(e, n) {
1611
+ var o, i, r, s, a, p;
1612
+ return p = e.template, this._isOrphan(e) && "[object Boolean]" !== {}.toString.call(e.orphan) && (p = e.orphan), a = t(t.isFunction(p) ? p(n, e) : p), o = a.find(".mo2f_popover-navigation"), r = o.find('[data-role="prev"]'), i = o.find('[data-role="next"]'), s = o.find('[data-role="pause-resume"]'), this._isOrphan(e) && a.addClass("orphan"), a.addClass("tour-" + this._options.name + " tour-" + this._options.name + "-" + n), e.reflex && a.addClass("tour-" + this._options.name + "-reflex"), e.prev < 0 && r.addClass("disabled").prop("disabled", !0).prop("tabindex", -1), e.next < 0 && i.addClass("disabled").prop("disabled", !0).prop("tabindex", -1), e.duration || s.remove(), a.clone().wrap("<div>").parent().html()
1613
+ }, n.prototype._reflexEvent = function(t) {
1614
+ return "[object Boolean]" === {}.toString.call(t) ? "click" : t
1615
+ }, n.prototype._scrollIntoView = function(e) {
1616
+ var n, o, i, r, s, a, p, u;
1617
+ if (p = this.getStep(e), !(n = t(p.element)).length) return this._showmo2f_popoverAndOverlay(e);
1618
+ switch (o = t(window), s = n.offset().top, r = n.outerHeight(), u = o.height(), a = 0, p.placement) {
1619
+ case "top":
1620
+ a = Math.max(0, s - u / 2);
1621
+ break;
1622
+ case "left":
1623
+ case "right":
1624
+ a = Math.max(0, s + r / 2 - u / 2);
1625
+ break;
1626
+ case "bottom":
1627
+ a = Math.max(0, s + r - u / 2)
1628
+ }
1629
+ return this._debug("Scroll into view. ScrollTop: " + a + ". Element offset: " + s + ". Window height: " + u + "."), i = 0, t("body, html").stop(!0, !0).animate({
1630
+ scrollTop: Math.ceil(a)
1631
+ }, function(t) {
1632
+ return function() {
1633
+ if (2 == ++i) return t._showmo2f_popoverAndOverlay(e), t._debug("Scroll into view.\nAnimation end element offset: " + n.offset().top + ".\nWindow height: " + o.height() + ".")
1634
+ }
1635
+ }(this))
1636
+ }, n.prototype._initMouseNavigation = function() {
1637
+ var n;
1638
+ return n = this, t(e).off("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='prev']").off("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='next']").off("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='end']").off("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='pause-resume']").on("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='next']", function(t) {
1639
+ return function(e) {
1640
+ return e.preventDefault(), t.next()
1641
+ }
1642
+ }(this)).on("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='prev']", function(t) {
1643
+ return function(e) {
1644
+ if (e.preventDefault(), t._current > 0) return t.prev()
1645
+ }
1646
+ }(this)).on("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='end']", function(t) {
1647
+ return function(e) {
1648
+ return e.preventDefault(), t.end()
1649
+ }
1650
+ }(this)).on("click.tour-" + this._options.name, ".mo2f_popover.tour-" + this._options.name + " *[data-role='pause-resume']", function(e) {
1651
+ var o;
1652
+ return e.preventDefault(), (o = t(this)).text(n._paused ? o.data("pause-text") : o.data("resume-text")), n._paused ? n.resume() : n.pause()
1653
+ })
1654
+ }, n.prototype._initKeyboardNavigation = function() {
1655
+ if (this._options.keyboard) return t(e).on("keyup.tour-" + this._options.name, function(t) {
1656
+ return function(e) {
1657
+ if (e.which) switch (e.which) {
1658
+ case 39:
1659
+ return e.preventDefault(), t._isLast() ? t.next() : t.end();
1660
+ case 37:
1661
+ if (e.preventDefault(), t._current > 0) return t.prev()
1662
+ }
1663
+ }
1664
+ }(this))
1665
+ }, n.prototype._makePromise = function(e) {
1666
+ return e && t.isFunction(e.then) ? e : null
1667
+ }, n.prototype._callOnPromiseDone = function(t, e, n) {
1668
+ return t ? t.then(function(t) {
1669
+ return function(o) {
1670
+ return e.call(t, n)
1671
+ }
1672
+ }(this)) : e.call(this, n)
1673
+ }, n.prototype._showBackground = function(n, o) {
1674
+ var i, r, s, a, p, u, l, c, h;
1675
+ for (s = t(e).height(), h = t(e).width(), c = [], a = 0, p = (l = ["top", "bottom", "left", "right"]).length; a < p; a++) switch (u = l[a], i = null != (r = this.backdrops)[u] ? r[u] : r[u] = t("<div>", {
1676
+ class: "tour-backdrop " + u
1677
+ }), t(n.backdropContainer).append(i), u) {
1678
+ case "top":
1679
+ c.push(i.height(o.offset.top > 0 ? o.offset.top : 0).width(h).offset({
1680
+ top: 0,
1681
+ left: 0
1682
+ }));
1683
+ break;
1684
+ case "bottom":
1685
+ c.push(i.offset({
1686
+ top: o.offset.top + o.height,
1687
+ left: 0
1688
+ }).height(s - (o.offset.top + o.height)).width(h));
1689
+ break;
1690
+ case "left":
1691
+ c.push(i.offset({
1692
+ top: o.offset.top,
1693
+ left: 0
1694
+ }).height(o.height).width(o.offset.left > 0 ? o.offset.left : 0));
1695
+ break;
1696
+ case "right":
1697
+ c.push(i.offset({
1698
+ top: o.offset.top,
1699
+ left: o.offset.left + o.width
1700
+ }).height(o.height).width(h - (o.offset.left + o.width)));
1701
+ break;
1702
+ default:
1703
+ c.push(void 0)
1704
+ }
1705
+ return c
1706
+ }, n.prototype._showOverlayElement = function(e) {
1707
+ var n, o;
1708
+ return 0 === (n = t(e.backdropElement)).length ? o = {
1709
+ width: 0,
1710
+ height: 0,
1711
+ offset: {
1712
+ top: 0,
1713
+ left: 0
1714
+ }
1715
+ } : (o = {
1716
+ width: n.innerWidth(),
1717
+ height: n.innerHeight(),
1718
+ offset: n.offset()
1719
+ }, n.addClass("tour-step-backdrop"), e.backdropPadding && (o = this._applyBackdropPadding(e.backdropPadding, o))), this._showBackground(e, o)
1720
+ }, n.prototype._hideOverlayElement = function(e) {
1721
+ var n, o, i;
1722
+ t(e.backdropElement).removeClass("tour-step-backdrop"), i = this.backdrops;
1723
+ for (o in i)(n = i[o]) && void 0 !== n.remove && n.remove();
1724
+ return this.backdrops = []
1725
+ }, n.prototype._applyBackdropPadding = function(t, e) {
1726
+ return "object" == typeof t ? (null == t.top && (t.top = 0), null == t.right && (t.right = 0), null == t.bottom && (t.bottom = 0), null == t.left && (t.left = 0), e.offset.top = e.offset.top - t.top, e.offset.left = e.offset.left - t.left, e.width = e.width + t.left + t.right, e.height = e.height + t.top + t.bottom) : (e.offset.top = e.offset.top - t, e.offset.left = e.offset.left - t, e.width = e.width + 2 * t, e.height = e.height + 2 * t), e
1727
+ }, n.prototype._clearTimer = function() {
1728
+ return window.clearTimeout(this._timer), this._timer = null, this._duration = null
1729
+ }, n.prototype._getProtocol = function(t) {
1730
+ return (t = t.split("://")).length > 1 ? t[0] : "http"
1731
+ }, n.prototype._getHost = function(t) {
1732
+ return t = t.split("//"), (t = t.length > 1 ? t[1] : t[0]).split("/")[0]
1733
+ }, n.prototype._getPath = function(t) {
1734
+ return t.replace(/\/?$/, "").split("?")[0].split("#")[0]
1735
+ }, n.prototype._getQuery = function(t) {
1736
+ return this._getParams(t, "?")
1737
+ }, n.prototype._getHash = function(t) {
1738
+ return this._getParams(t, "#")
1739
+ }, n.prototype._getParams = function(t, e) {
1740
+ var n, o, i, r, s;
1741
+ if (1 === (r = t.split(e)).length) return {};
1742
+ for (s = {}, n = 0, o = (r = r[1].split("&")).length; n < o; n++) s[(i = (i = r[n]).split("="))[0]] = i[1] || "";
1743
+ return s
1744
+ }, n.prototype._equal = function(t, e) {
1745
+ var n, o, i, r, s, a;
1746
+ if ("[object Object]" === {}.toString.call(t) && "[object Object]" === {}.toString.call(e)) {
1747
+ if (r = Object.keys(t), s = Object.keys(e), r.length !== s.length) return !1;
1748
+ for (o in t)
1749
+ if (a = t[o], !this._equal(e[o], a)) return !1;
1750
+ return !0
1751
+ }
1752
+ if ("[object Array]" === {}.toString.call(t) && "[object Array]" === {}.toString.call(e)) {
1753
+ if (t.length !== e.length) return !1;
1754
+ for (o = n = 0, i = t.length; n < i; o = ++n)
1755
+ if (a = t[o], !this._equal(a, e[o])) return !1;
1756
+ return !0
1757
+ }
1758
+ return t === e
1759
+ }, n
1760
+ }()
1761
+ });
miniorange_openid_sso_settings.php CHANGED
@@ -1,11 +1,11 @@
1
  <?php
2
  /**
3
  * Plugin Name: Social Login, Social Sharing by miniOrange
4
- * Plugin URI: https://www.miniorange.com
5
- * Description: Allow your users to login, comment and share with Facebook, Google, Twitter, LinkedIn etc using customizable buttons.
6
- * Version: 7.0.3
7
- * Author: miniOrange
8
- * Author URI: https://www.miniorange.com
9
  * License: GPL2
10
  */
11
 
@@ -14,7 +14,7 @@ include_once dirname( __FILE__ ) . '/class-mo-openid-login-widget.php';
14
  require('class-mo-openid-sso-customer.php');
15
  require('class-mo-openid-sso-shortcode-buttons.php');
16
  require('class-mo-openid-social-comment.php');
17
- define('MO_OPENID_SOCIAL_LOGIN_VERSION', '7.0.3');
18
  include dirname( __FILE__ ) . '/mo_openid_feedback_form.php';
19
  class Miniorange_OpenID_SSO {
20
 
@@ -288,7 +288,10 @@ class Miniorange_OpenID_SSO {
288
  add_option( 'mo_manual_login_error_message','There was an error during login. Please try to login/register manually. <a href='.site_url().'>Go back to site</a>');
289
  add_option( 'mo_delete_user_error_message','Error deleting user from account linking table');
290
  add_option( 'mo_account_linking_message','Link your social account to existing WordPress account by entering username and password.');
291
-
 
 
 
292
  }
293
 
294
  function mo_openid_feedback_request(){
@@ -498,29 +501,34 @@ class Miniorange_OpenID_SSO {
498
  wp_enqueue_style( 'mo-wp-font-awesome',plugins_url('includes/css/font-awesome.css?version=4.8', __FILE__), false );
499
  }
500
 
501
- function mo_openid_plugin_settings_style() {
502
- wp_enqueue_style( 'mo_openid_admin_settings_style', plugins_url('includes/css/mo_openid_style.css?version=5.0.6', __FILE__));
503
- wp_enqueue_style( 'mo_openid_admin_settings_phone_style', plugins_url('includes/css/phone.css', __FILE__));
504
- wp_enqueue_style( 'mo-wp-bootstrap-social',plugins_url('includes/css/bootstrap-social.css', __FILE__), false );
505
- wp_enqueue_style( 'mo-wp-bootstrap-main',plugins_url('includes/css/bootstrap.min-preview.css', __FILE__), false );
506
- wp_enqueue_style( 'mo-wp-font-awesome',plugins_url('includes/css/font-awesome.min.css?version=4.8', __FILE__), false );
507
- wp_enqueue_style( 'mo-wp-font-awesome',plugins_url('includes/css/font-awesome.css?version=4.8', __FILE__), false );
 
508
 
509
- }
510
 
511
- function mo_openid_plugin_script() {
512
- wp_enqueue_script( 'js-cookie-script',plugins_url('includes/js/jquery.cookie.min.js', __FILE__), array('jquery'));
513
- wp_enqueue_script( 'mo-social-login-script',plugins_url('includes/js/social_login.js', __FILE__), array('jquery') );
514
- }
515
 
516
- function mo_openid_plugin_settings_script() {
517
- wp_enqueue_script( 'mo_openid_admin_settings_phone_script', plugins_url('includes/js/phone.js', __FILE__ ));
518
- wp_enqueue_script( 'mo_openid_admin_settings_color_script', plugins_url('includes/jscolor/jscolor.js', __FILE__ ));
519
- wp_enqueue_script( 'mo_openid_admin_settings_script', plugins_url('includes/js/settings.js?version=4.9.6', __FILE__ ), array('jquery'));
520
- wp_enqueue_script( 'mo_openid_admin_settings_phone_script', plugins_url('includes/js/bootstrap.min.js', __FILE__ ));
521
- }
522
 
523
- function mo_openid_success_message() {
 
 
 
 
 
 
 
 
 
524
  $message = get_option('mo_openid_message'); ?>
525
  <script>
526
 
@@ -608,249 +616,304 @@ class Miniorange_OpenID_SSO {
608
  }
609
  return false;
610
  }
 
611
 
612
- function miniorange_openid_save_settings(){
 
613
 
614
- if ( current_user_can( 'manage_options' )){
615
- if(is_admin() && get_option('Activated_Plugin')=='Plugin-Slug') {
 
 
616
 
617
- delete_option('Activated_Plugin');
618
- update_option('mo_openid_message','Go to plugin <b><a href="admin.php?page=mo_openid_settings">settings</a></b> to enable Social Login, Social Sharing by miniOrange.');
619
- add_action('admin_notices', array($this, 'mo_openid_activation_message'));
620
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
621
 
622
- if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_connect_register_customer" ) { //register the admin to miniOrange
623
-
624
- //validation and sanitization
625
- $company = '';
626
- $first_name = '';
627
- $last_name = '';
628
- $email = '';
629
- $phone = '';
630
- $password = '';
631
- $confirmPassword = '';
632
- $illegal = "#$%^*()+=[]';,/{}|:<>?~";
633
- $illegal = $illegal . '"';
634
- if( $this->mo_openid_check_empty_or_null( $_POST['company'] ) || $this->mo_openid_check_empty_or_null( $_POST['email'] ) || $this->mo_openid_check_empty_or_null( $_POST['password'] ) || $this->mo_openid_check_empty_or_null( $_POST['confirmPassword'] ) ) {
635
- update_option( 'mo_openid_message', 'All the fields are required. Please enter valid entries.');
636
- $this->mo_openid_show_error_message();
637
- return;
638
- } else if( strlen( $_POST['password'] ) < 6 || strlen( $_POST['confirmPassword'] ) < 6){ //check password is of minimum length 6
639
- update_option( 'mo_openid_message', 'Choose a password with minimum length 6.');
640
- $this->mo_openid_show_error_message();
641
- return;
642
- } else if(strpbrk($_POST['email'],$illegal)) {
643
- update_option( 'mo_openid_message', 'Please match the format of Email. No special characters are allowed.');
644
- $this->mo_openid_show_error_message();
645
- return;
646
- } else {
647
- $company = sanitize_text_field($_POST['company']);
648
- $first_name = sanitize_text_field(isset($_POST['fname'])?$_POST['fname']:'');
649
- $last_name = sanitize_text_field(isset($_POST['lname'])?$_POST['lname']:'');
650
- $email = sanitize_email( $_POST['email'] );
651
- $phone = sanitize_text_field( isset($_POST['phone'])?$_POST['phone']:'' );
652
- $password = sanitize_text_field( $_POST['password'] );
653
- $confirmPassword = sanitize_text_field( $_POST['confirmPassword'] );
654
- }
655
 
656
- update_option( 'mo_openid_admin_company_name', $company);
657
- update_option( 'mo_openid_admin_first_name', $first_name);
658
- update_option( 'mo_openid_admin_last_name', $last_name);
659
- update_option( 'mo_openid_admin_email', $email );
660
- update_option( 'mo_openid_admin_phone', $phone );
661
-
662
- if( strcmp( $password, $confirmPassword) == 0 ) {
663
- update_option( 'mo_openid_admin_password', $password );
664
-
665
- $customer = new CustomerOpenID();
666
- $content = json_decode($customer->check_customer(), true);
667
- if( strcasecmp( $content['status'], 'CUSTOMER_NOT_FOUND') == 0 ){
668
- $content = json_decode($customer->send_otp_token('EMAIL'), true);
669
- if(strcasecmp($content['status'], 'SUCCESS') == 0) {
670
- if(get_option('mo_openid_email_otp_count')){
671
- update_option('mo_openid_email_otp_count',get_option('mo_openid_email_otp_count') + 1);
672
- update_option('mo_openid_message', 'Another One Time Passcode has been sent <b>( ' . get_option('mo_openid_email_otp_count') . ' )</b> for verification to ' . get_option('mo_openid_admin_email'));
673
- }else{
674
- update_option( 'mo_openid_message', ' A passcode is sent to ' . get_option('mo_openid_admin_email') . '. Please enter the otp here to verify your email.');
675
- update_option('mo_openid_email_otp_count',1);
676
- }
677
- update_option('mo_openid_transactionId',$content['txId']);
678
- update_option('mo_openid_registration_status','MO_OTP_DELIVERED_SUCCESS');
679
-
680
- $this->mo_openid_show_success_message();
681
- }else{
682
- update_option('mo_openid_message','There was an error in sending email. Please click on Resend OTP to try again.');
683
- update_option('mo_openid_registration_status','MO_OTP_DELIVERED_FAILURE');
684
- $this->mo_openid_show_error_message();
685
- }
686
- }else{
687
- $this->get_current_customer();
688
- }
689
-
690
- } else {
691
- update_option( 'mo_openid_message', 'Passwords do not match.');
692
- delete_option('mo_openid_verify_customer');
693
- $this->mo_openid_show_error_message();
694
- }
695
 
696
- }
697
- else if(isset($_POST['option']) and $_POST['option'] == "mo_openid_validate_otp"){
698
-
699
- //validation and sanitization
700
- $otp_token = '';
701
- if( $this->mo_openid_check_empty_or_null( $_POST['otp_token'] ) ) {
702
- update_option( 'mo_openid_message', 'Please enter a value in OTP field.');
703
- update_option('mo_openid_registration_status','MO_OTP_VALIDATION_FAILURE');
704
- $this->mo_openid_show_error_message();
705
- return;
706
- } else if(!preg_match('/^[0-9]*$/', $_POST['otp_token'])) {
707
- update_option( 'mo_openid_message', 'Please enter a valid value in OTP field.');
708
- update_option('mo_openid_registration_status','MO_OTP_VALIDATION_FAILURE');
709
- $this->mo_openid_show_error_message();
710
- return;
711
- } else{
712
- $otp_token = sanitize_text_field( $_POST['otp_token'] );
713
- }
714
 
715
- $customer = new CustomerOpenID();
716
- $content = json_decode($customer->validate_otp_token(get_option('mo_openid_transactionId'), $otp_token ),true);
717
- if(strcasecmp($content['status'], 'SUCCESS') == 0) {
718
- $this->create_customer();
719
- update_option('mo_openid_oauth','1');
720
- update_option('mo_openid_new_user','1');
721
- update_option('mo_openid_malform_error','1');
 
722
 
 
 
723
 
724
- }else{
725
- update_option( 'mo_openid_message','Invalid one time passcode. Please enter a valid passcode.');
726
- update_option('mo_openid_registration_status','MO_OTP_VALIDATION_FAILURE');
727
- $this->mo_openid_show_error_message();
728
- }
729
- }
730
- else if( isset($_POST['option']) and $_POST['option'] == 'mo_openid_phone_verification'){ //at registration time
731
- $phone = sanitize_text_field($_POST['phone_number']);
732
-
733
- $phone = str_replace(' ', '', $phone);
734
- update_option('mo_openid_admin_phone',$phone);
735
- $auth_type = 'SMS';
736
- $customer = new CustomerOpenID();
737
- $send_otp_response = json_decode($customer->send_otp_token($auth_type),true);
738
- if(strcasecmp($send_otp_response['status'], 'SUCCESS') == 0){
739
- //Save txId
740
-
741
- update_option('mo_openid_transactionId',$send_otp_response['txId']);
742
- update_option( 'mo_openid_registration_status','MO_OTP_DELIVERED_SUCCESS');
743
- if(get_option('mo_openid_sms_otp_count')){
744
- update_option('mo_openid_sms_otp_count',get_option('mo_openid_sms_otp_count') + 1);
745
- update_option('mo_openid_message', 'Another One Time Passcode has been sent <b>( ' . get_option('mo_openid_sms_otp_count') . ' )</b> for verification to ' . $phone);
746
- }else{
747
-
748
- update_option('mo_openid_message', 'One Time Passcode has been sent for verification to ' . $phone);
749
- update_option('mo_openid_sms_otp_count',1);
750
- }
751
-
752
- $this->mo_openid_show_success_message();
753
-
754
- }else{
755
- update_option('mo_openid_message','There was an error in sending sms. Please click on Resend OTP link next to phone number textbox.');
756
- update_option('mo_openid_registration_status','MO_OTP_DELIVERED_FAILURE');
757
- $this->mo_openid_show_error_message();
758
 
759
- }
760
- }
761
- else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_connect_verify_customer" ) { //register the admin to miniOrange
762
-
763
- //validation and sanitization
764
- $email = '';
765
- $password = '';
766
- $illegal = "#$%^*()+=[]';,/{}|:<>?~";
767
- $illegal = $illegal . '"';
768
- if( $this->mo_openid_check_empty_or_null( $_POST['email'] ) || $this->mo_openid_check_empty_or_null( $_POST['password'] ) ) {
769
- update_option( 'mo_openid_message', 'All the fields are required. Please enter valid entries.');
770
- $this->mo_openid_show_error_message();
771
- return;
772
- } else if(strpbrk($_POST['email'],$illegal)) {
773
- update_option( 'mo_openid_message', 'Please match the format of Email. No special characters are allowed.');
774
- $this->mo_openid_show_error_message();
775
- return;
776
- } else{
777
- $email = sanitize_email( $_POST['email'] );
778
- $password = sanitize_text_field( $_POST['password'] );
779
- }
780
 
781
- update_option( 'mo_openid_admin_email', $email );
782
- update_option( 'mo_openid_admin_password', $password );
783
- $customer = new CustomerOpenID();
784
- $content = $customer->get_customer_key();
785
- $customerKey = json_decode( $content, true );
786
- if( isset($customerKey) ) {
787
- update_option( 'mo_openid_admin_customer_key', $customerKey['id'] );
788
- update_option( 'mo_openid_admin_api_key', $customerKey['apiKey'] );
789
- update_option( 'mo_openid_customer_token', $customerKey['token'] );
790
- update_option( 'mo_openid_admin_phone', $customerKey['phone'] );
791
- update_option('mo_openid_admin_password', '');
792
- update_option( 'mo_openid_message', 'Your account has been retrieved successfully.');
793
- delete_option('mo_openid_verify_customer');
794
- $this->mo_openid_show_success_message();
795
-
796
- } else {
797
- update_option( 'mo_openid_message', 'Invalid username or password. Please try again.');
798
- $this->mo_openid_show_error_message();
799
- }
800
- update_option('mo_openid_admin_password', '');
801
- }
802
- else if(isset($_POST['option']) and $_POST['option'] == 'mo_openid_forgot_password'){
803
- $email = get_option('mo_openid_admin_email');
804
- if( $this->mo_openid_check_empty_or_null( $email ) ) {
805
- if( $this->mo_openid_check_empty_or_null( $_POST['email'] ) ) {
806
- update_option( 'mo_openid_message', 'No email provided. Please enter your email below to reset password.');
807
- $this->mo_openid_show_error_message();
808
- return;
809
- } else {
810
- $email = $_POST['email'];
811
- }
812
- }
813
- $customer = new CustomerOpenID();
814
- $content = json_decode($customer->forgot_password($email),true);
815
- if(strcasecmp($content['status'], 'SUCCESS') == 0){
816
- update_option( 'mo_openid_message','You password has been reset successfully. Please enter the new password sent to your registered mail here.');
817
- $this->mo_openid_show_success_message();
818
- }else{
819
- update_option( 'mo_openid_message','An error occured while processing your request. Please make sure you are registered with miniOrange with the given email address.');
820
- $this->mo_openid_show_error_message();
821
- }
822
- }
823
- else if(isset($_POST['option']) and $_POST['option'] == 'mo_openid_check_license'){
824
- if(mo_openid_is_customer_registered()) {
825
- $customer = new CustomerOpenID();
826
- $content = json_decode($customer->check_customer_valid(),true);
827
- if(strcasecmp($content['status'], 'SUCCESS') == 0){
828
- update_option( 'mo_openid_admin_customer_valid', strcasecmp($content['licenseType'], 'Premium') !== FALSE ? 1 : 0);
829
- update_option( 'mo_openid_admin_customer_plan', isset($content['licensePlan']) ? base64_encode($content['licensePlan']) : 0);
830
- if(get_option('mo_openid_admin_customer_valid') && isset($content['licensePlan'])){
831
- $license = explode(' -', $content['licensePlan']);
832
- $lp = $license[0];
833
- update_option( 'mo_openid_message','You are on the old ' . $lp . '.');
834
- } else
835
- update_option( 'mo_openid_message','You are on the Free Plan.');
836
- $this->mo_openid_show_success_message();
837
- }else if(strcasecmp($content['status'], 'FAILED') == 0){
838
- update_option('mo_openid_message', 'You are on Free Plan.');
839
- $this->mo_openid_show_success_message();
840
- }else{
841
- update_option( 'mo_openid_message','An error occured while processing your request. Please try again.');
842
- $this->mo_openid_show_error_message();
843
- }
844
- } else {
845
- update_option('mo_openid_message', 'Please register an account before trying to check your plan');
846
- $this->mo_openid_show_error_message();
847
- }
848
- }
849
- else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_enable_apps" ) {
850
 
 
 
 
 
851
 
852
- update_option( 'mo_openid_google_enable', isset( $_POST['mo_openid_google_enable']) ? $_POST['mo_openid_google_enable'] : 0);
853
- update_option( 'mo_openid_salesforce_enable', isset( $_POST['mo_openid_salesforce_enable']) ? $_POST['mo_openid_salesforce_enable'] : 0);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
854
  if($this->if_custom_app_exists('facebook')) {
855
  update_option('mo_openid_facebook_enable', isset($_POST['mo_openid_facebook_enable']) ? $_POST['mo_openid_facebook_enable'] : 0);
856
  }
@@ -860,15 +923,15 @@ class Miniorange_OpenID_SSO {
860
 
861
  }
862
  update_option( 'mo_openid_linkedin_enable', isset( $_POST['mo_openid_linkedin_enable']) ? $_POST['mo_openid_linkedin_enable'] : 0);
863
- update_option( 'mo_openid_windowslive_enable', isset( $_POST['mo_openid_windowslive_enable']) ? $_POST['mo_openid_windowslive_enable'] : 0);
864
- update_option( 'mo_openid_amazon_enable', isset( $_POST['mo_openid_amazon_enable']) ? $_POST['mo_openid_amazon_enable'] : 0);
865
- update_option( 'mo_openid_instagram_enable', isset( $_POST['mo_openid_instagram_enable']) ? $_POST['mo_openid_instagram_enable'] : 0);
866
- update_option( 'mo_openid_twitter_enable', isset( $_POST['mo_openid_twitter_enable']) ? $_POST['mo_openid_twitter_enable'] : 0);
867
- update_option( 'mo_openid_vkontakte_enable', isset( $_POST['mo_openid_vkontakte_enable']) ? $_POST['mo_openid_vkontakte_enable'] : 0);
868
 
869
- update_option( 'mo_openid_default_login_enable', isset( $_POST['mo_openid_default_login_enable']) ? $_POST['mo_openid_default_login_enable'] : 0);
870
- update_option( 'mo_openid_default_register_enable', isset( $_POST['mo_openid_default_register_enable']) ? $_POST['mo_openid_default_register_enable'] : 0);
871
- update_option( 'mo_openid_default_comment_enable', isset( $_POST['mo_openid_default_comment_enable']) ? $_POST['mo_openid_default_comment_enable'] : 0);
872
 
873
 
874
 
@@ -880,359 +943,367 @@ class Miniorange_OpenID_SSO {
880
  update_option('mo_openid_gdpr_consent_message', isset($_POST['mo_openid_gdpr_consent_message']) ? stripslashes($_POST['mo_openid_gdpr_consent_message']) : get_option('mo_openid_gdpr_consent_message'));
881
  }
882
  //Redirect URL
883
- update_option( 'mo_openid_login_redirect', $_POST['mo_openid_login_redirect']);
884
- update_option( 'mo_openid_login_redirect_url', $_POST['mo_openid_login_redirect_url'] );
885
  update_option( 'mo_openid_relative_login_redirect_url', isset( $_POST['mo_openid_relative_login_redirect_url']) ? $_POST['mo_openid_relative_login_redirect_url'] : "" );
886
 
887
- //Logout Url
888
- update_option( 'mo_openid_logout_redirection_enable', isset( $_POST['mo_openid_logout_redirection_enable']) ? $_POST['mo_openid_logout_redirection_enable'] : 0);
889
- update_option( 'mo_openid_logout_redirect', $_POST['mo_openid_logout_redirect']);
890
- update_option( 'mo_openid_logout_redirect_url', $_POST['mo_openid_logout_redirect_url'] );
891
 
892
- //auto register
893
- update_option( 'mo_openid_auto_register_enable', isset( $_POST['mo_openid_auto_register_enable']) ? $_POST['mo_openid_auto_register_enable'] : 0);
894
- update_option( 'mo_openid_register_disabled_message', $_POST['mo_openid_register_disabled_message']);
895
 
896
 
897
- //email notification
898
- update_option( 'mo_openid_email_enable', isset( $_POST['mo_openid_email_enable']) ? $_POST['mo_openid_email_enable'] : 0);
899
 
900
- //Customized text
901
- update_option('mo_openid_login_widget_customize_text',$_POST['mo_openid_login_widget_customize_text'] );
902
- update_option( 'mo_openid_login_button_customize_text',$_POST['mo_openid_login_button_customize_text'] );
903
 
904
  //profile completion
905
  update_option('mo_openid_enable_profile_completion', isset( $_POST['mo_openid_enable_profile_completion']) ? $_POST['mo_openid_enable_profile_completion'] : 0);
906
 
907
  if(get_option('mo_openid_enable_profile_completion') == 1) {
908
- // update_option('mo_profile_completion_form_title', $_POST['mo_profile_completion_form_title']);
909
- //update_option('mo_profile_completion_form_message', $_POST['mo_profile_completion_form_message']);
910
-
911
- update_option('mo_profile_complete_title', $_POST['mo_profile_complete_title']);
912
- update_option('mo_profile_complete_username_label', $_POST['mo_profile_complete_username_label']);
913
- update_option('mo_profile_complete_email_label', $_POST['mo_profile_complete_email_label']);
914
- update_option('mo_profile_complete_submit_button', $_POST['mo_profile_complete_submit_button']);
915
- update_option('mo_profile_complete_instruction', $_POST['mo_profile_complete_instruction']);
916
- update_option('mo_profile_complete_extra_instruction', $_POST['mo_profile_complete_extra_instruction']);
917
- update_option('mo_profile_complete_uname_exist', $_POST['mo_profile_complete_uname_exist']);
918
-
919
- update_option('mo_email_verify_resend_otp_button', $_POST['mo_email_verify_resend_otp_button']);
920
- update_option('mo_email_verify_back_button', $_POST['mo_email_verify_back_button']);
921
- update_option('mo_email_verify_title', $_POST['mo_email_verify_title']);
922
- update_option('mo_email_verify_message', $_POST['mo_email_verify_message']);
923
- update_option('mo_email_verify_verification_code_instruction', $_POST['mo_email_verify_verification_code_instruction']);
924
- update_option('mo_email_verify_wrong_otp', $_POST['mo_email_verify_wrong_otp']);
925
- }
926
  //account-linking
927
  update_option( 'mo_openid_account_linking_enable', isset( $_POST['mo_openid_account_linking_enable']) ? $_POST['mo_openid_account_linking_enable'] : 0);
928
 
929
- if(get_option('mo_openid_account_linking_enable') == 1 && (!mo_openid_restrict_user()))
930
- {
931
  // update_option('mo_account_linking_form_title', $_POST['mo_account_linking_form_title']);
932
- //update_option('mo_account_linking_form_message', $_POST['mo_account_linking_form_message']);
933
 
934
- update_option('mo_account_linking_title', $_POST['mo_account_linking_title']);
935
- update_option('mo_account_linking_new_user_button', $_POST['mo_account_linking_new_user_button']);
936
- update_option('mo_account_linking_existing_user_button', $_POST['mo_account_linking_existing_user_button']);
937
- update_option('mo_account_linking_new_user_instruction', $_POST['mo_account_linking_new_user_instruction']);
938
- update_option('mo_account_linking_existing_user_instruction', $_POST['mo_account_linking_existing_user_instruction']);
939
- update_option('mo_account_linking_extra_instruction', $_POST['mo_account_linking_extra_instruction']);
940
 
941
 
942
- }
943
 
944
 
945
 
946
  if(!get_option('mo_openid_oauth')){
947
  update_option('mo_openid_login_widget_customize_logout_name_text',sanitize_text_field($_POST['mo_openid_login_widget_customize_logout_name_text']));
948
  update_option( 'mo_openid_login_widget_customize_logout_text',sanitize_text_field($_POST['mo_openid_login_widget_customize_logout_text']));
949
- update_option('moopenid_logo_check', isset( $_POST['moopenid_logo_check']) ? $_POST['moopenid_logo_check'] : 0);
950
 
951
- }else{
952
  update_option('moopenid_logo_check', isset( $_POST['moopenid_logo_check']) ? $_POST['moopenid_logo_check'] : 0);
953
  }
954
 
955
- update_option('mo_login_openid_login_widget_customize_textcolor',$_POST['mo_login_openid_login_widget_customize_textcolor']);
956
- update_option('mo_openid_login_theme',$_POST['mo_openid_login_theme'] );
957
- update_option( 'mo_openid_message', 'Your settings are saved successfully.' );
958
 
959
- //customization of icons
960
- update_option('mo_login_icon_custom_size',$_POST['mo_login_icon_custom_size'] );
961
- update_option('mo_login_icon_space',$_POST['mo_login_icon_space'] );
962
- update_option('mo_login_icon_custom_width',$_POST['mo_login_icon_custom_width'] );
963
- update_option('mo_login_icon_custom_height',$_POST['mo_login_icon_custom_height'] );
964
- update_option('mo_openid_login_custom_theme',$_POST['mo_openid_login_custom_theme'] );
965
- update_option( 'mo_login_icon_custom_color', $_POST['mo_login_icon_custom_color'] );
966
- update_option('mo_login_icon_custom_boundary',$_POST['mo_login_icon_custom_boundary']);
967
 
968
- // avatar
969
- update_option( 'moopenid_social_login_avatar', isset( $_POST['moopenid_social_login_avatar']) ? $_POST['moopenid_social_login_avatar'] : 0);
970
 
971
 
972
- if(isset($_POST['mapping_value_default']))
973
- update_option('mo_openid_login_role_mapping', isset( $_POST['mapping_value_default']) ? $_POST['mapping_value_default'] : 'subscriber');
974
 
975
- if(mo_openid_is_customer_valid() && !mo_openid_get_customer_plan('Do It Yourself')){
976
- //Attribute collection
977
- update_option( 'moopenid_user_attributes', isset( $_POST['moopenid_user_attributes']) ? $_POST['moopenid_user_attributes'] : 0);
978
- }
979
 
980
- $this->mo_openid_show_success_message();
981
  if(!mo_openid_is_customer_registered()) {
982
- $redirect = add_query_arg( array('tab' => 'register'), $_SERVER['REQUEST_URI'] );
983
- update_option('mo_openid_message', 'Your settings are successfully saved. Please <a href=\" '. $redirect .'\">Register or Login with miniOrange</a> to enable Social Login and Social Sharing.');
984
- $this->mo_openid_show_error_message();
985
  }
986
 
987
 
988
- }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_woocommerce_field" ) {
989
- //woocommerce integration
990
- // woocommerce display options
991
- if(!mo_openid_restrict_user()) {
 
 
 
 
 
 
 
 
 
 
 
 
992
 
993
- update_option('mo_openid_woocommerce_login_form', isset($_POST['mo_openid_woocommerce_login_form']) ? $_POST['mo_openid_woocommerce_login_form'] : 0);
994
- update_option('mo_openid_woocommerce_before_login_form', isset($_POST['mo_openid_woocommerce_before_login_form']) ? $_POST['mo_openid_woocommerce_before_login_form'] : 0);
995
- update_option('mo_openid_woocommerce_center_login_form', isset($_POST['mo_openid_woocommerce_center_login_form']) ? $_POST['mo_openid_woocommerce_center_login_form'] : 0);
996
- update_option('mo_openid_woocommerce_register_form_start', isset($_POST['mo_openid_woocommerce_register_form_start']) ? $_POST['mo_openid_woocommerce_register_form_start'] : 0);
997
- update_option('mo_openid_woocommerce_center_register_form', isset($_POST['mo_openid_woocommerce_center_register_form']) ? $_POST['mo_openid_woocommerce_center_register_form'] : 0);
998
- update_option('mo_openid_woocommerce_register_form_end', isset($_POST['mo_openid_woocommerce_register_form_end']) ? $_POST['mo_openid_woocommerce_register_form_end'] : 0);
999
- update_option('mo_openid_woocommerce_before_checkout_billing_form', isset($_POST['mo_openid_woocommerce_before_checkout_billing_form']) ? $_POST['mo_openid_woocommerce_before_checkout_billing_form'] : 0);
1000
- update_option('mo_openid_woocommerce_after_checkout_billing_form', isset($_POST['mo_openid_woocommerce_after_checkout_billing_form']) ? $_POST['mo_openid_woocommerce_after_checkout_billing_form'] : 0);
1001
- }
1002
 
1003
- }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_buddypress_field" ){
1004
 
1005
- //buddypress display options
1006
- if(!mo_openid_restrict_user()) {
1007
- update_option('mo_openid_bp_before_register_page', isset($_POST['mo_openid_bp_before_register_page']) ? $_POST['mo_openid_bp_before_register_page'] : 0);
1008
- update_option('mo_openid_bp_before_account_details_fields', isset($_POST['mo_openid_bp_before_account_details_fields']) ? $_POST['mo_openid_bp_before_account_details_fields'] : 0);
1009
- update_option('mo_openid_bp_after_register_page', isset($_POST['mo_openid_bp_after_register_page']) ? $_POST['mo_openid_bp_after_register_page'] : 0);
1010
  }
 
1011
 
1012
 
1013
- }
1014
- else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_comment_settings" ) {
1015
-
1016
-
1017
- //commenting
1018
- update_option( 'mo_openid_social_comment_fb', isset( $_POST['mo_openid_social_comment_fb']) ? $_POST['mo_openid_social_comment_fb'] : 0);
1019
- update_option( 'mo_openid_social_comment_google', isset( $_POST['mo_openid_social_comment_google']) ? $_POST['mo_openid_social_comment_google'] : 0);
1020
- update_option( 'mo_openid_social_comment_default', isset( $_POST['mo_openid_social_comment_default']) ? $_POST['mo_openid_social_comment_default'] : 0);
1021
-
1022
- //comment position
1023
- update_option( 'mo_openid_social_comment_blogpost', isset( $_POST['mo_openid_social_comment_blogpost']) ? $_POST['mo_openid_social_comment_blogpost'] : 0);
1024
- update_option( 'mo_openid_social_comment_static', isset( $_POST['mo_openid_social_comment_static']) ? $_POST['mo_openid_social_comment_static'] : 0);
1025
-
1026
- //comment labels
1027
- update_option('mo_openid_social_comment_default_label',$_POST['mo_openid_social_comment_default_label'] );
1028
- update_option('mo_openid_social_comment_fb_label',$_POST['mo_openid_social_comment_fb_label'] );
1029
- update_option('mo_openid_social_comment_google_label',$_POST['mo_openid_social_comment_google_label'] );
1030
- update_option('mo_openid_social_comment_heading_label',$_POST['mo_openid_social_comment_heading_label'] );
1031
-
1032
- update_option( 'mo_openid_message', 'Your settings are saved successfully.' );
1033
- $this->mo_openid_show_success_message();
1034
- if(!mo_openid_is_customer_registered()) {
1035
- $redirect = add_query_arg( array('tab' => 'register'), $_SERVER['REQUEST_URI'] );
1036
- update_option('mo_openid_message', 'Your settings are successfully saved. Please <a href=\" '. $redirect .'\">Register or Login with miniOrange</a> to enable Social Login and Social Sharing.');
1037
- $this->mo_openid_show_error_message();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1038
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1039
 
 
 
 
 
 
 
1040
 
1041
- }
1042
- else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_contact_us_query_option" ) {
1043
- // Contact Us query
1044
- $email = $_POST['mo_openid_contact_us_email'];
1045
- $phone = $_POST['mo_openid_contact_us_phone'];
1046
- $query = $_POST['mo_openid_contact_us_query'];
1047
- $customer = new CustomerOpenID();
1048
- if ( $this->mo_openid_check_empty_or_null( $email ) || $this->mo_openid_check_empty_or_null( $query ) ) {
1049
- update_option('mo_openid_message', 'Please fill up Email and Query fields to submit your query.');
1050
- $this->mo_openid_show_error_message();
1051
- } else {
1052
- $submited = $customer->submit_contact_us( $email, $phone, $query );
1053
- if ( $submited == false ) {
1054
- update_option('mo_openid_message', 'Your query could not be submitted. Please try again.');
1055
- $this->mo_openid_show_error_message();
1056
- } else {
1057
- update_option('mo_openid_message', 'Thanks for getting in touch! We shall get back to you shortly.');
1058
- $this->mo_openid_show_success_message();
1059
- }
1060
- }
1061
- }
1062
- else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_resend_otp" ) {
1063
-
1064
- $customer = new CustomerOpenID();
1065
- $content = json_decode($customer->send_otp_token('EMAIL'), true);
1066
- if(strcasecmp($content['status'], 'SUCCESS') == 0) {
1067
- if(get_option('mo_openid_email_otp_count')){
1068
- update_option('mo_openid_email_otp_count',get_option('mo_openid_email_otp_count') + 1);
1069
- update_option('mo_openid_message', 'Another One Time Passcode has been sent <b>( ' . get_option('mo_openid_email_otp_count') . ' )</b> for verification to ' . get_option('mo_openid_admin_email'));
1070
- }else{
1071
- update_option( 'mo_openid_message', ' A passcode is sent to ' . get_option('mo_openid_admin_email') . '. Please enter the otp here to verify your email.');
1072
- update_option('mo_openid_email_otp_count',1);
1073
- }
1074
- update_option('mo_openid_transactionId',$content['txId']);
1075
- update_option('mo_openid_registration_status','MO_OTP_DELIVERED_SUCCESS');
1076
- $this->mo_openid_show_success_message();
1077
- }else{
1078
- update_option('mo_openid_message','There was an error in sending email. Please click on Resend OTP to try again.');
1079
- update_option('mo_openid_registration_status','MO_OTP_DELIVERED_FAILURE');
1080
- $this->mo_openid_show_error_message();
1081
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1082
 
1083
- }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_go_back" ){
1084
- update_option('mo_openid_registration_status','');
1085
- delete_option('mo_openid_new_registration');
1086
- delete_option('mo_openid_admin_email');
1087
- delete_option('mo_openid_sms_otp_count');
1088
- delete_option('mo_openid_email_otp_count');
1089
-
1090
- }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_go_back_login" ){
1091
- update_option('mo_openid_registration_status','');
1092
- delete_option('mo_openid_admin_email');
1093
- delete_option('mo_openid_admin_phone');
1094
- delete_option('mo_openid_admin_password');
1095
- delete_option('mo_openid_admin_customer_key');
1096
- delete_option('mo_openid_verify_customer');
 
 
 
 
 
 
 
 
 
 
1097
 
1098
- }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_go_back_registration" ){
1099
- update_option('mo_openid_verify_customer','true');
1100
-
1101
- }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_other_settings" ){
1102
-
1103
- update_option( 'mo_openid_google_share_enable', isset( $_POST['mo_openid_google_share_enable']) ? $_POST['mo_openid_google_share_enable'] : 0);
1104
- update_option( 'mo_openid_facebook_share_enable', isset( $_POST['mo_openid_facebook_share_enable']) ? $_POST['mo_openid_facebook_share_enable'] : 0);
1105
- update_option( 'mo_openid_linkedin_share_enable', isset( $_POST['mo_openid_linkedin_share_enable']) ? $_POST['mo_openid_linkedin_share_enable'] : 0);
1106
- update_option( 'mo_openid_reddit_share_enable', isset( $_POST['mo_openid_reddit_share_enable']) ? $_POST['mo_openid_reddit_share_enable'] : 0);
1107
- update_option( 'mo_openid_pinterest_share_enable', isset( $_POST['mo_openid_pinterest_share_enable']) ? $_POST['mo_openid_pinterest_share_enable'] : 0);
1108
- update_option( 'mo_openid_twitter_share_enable', isset( $_POST['mo_openid_twitter_share_enable']) ? $_POST['mo_openid_twitter_share_enable'] : 0);
1109
- update_option( 'mo_openid_tumblr_share_enable', isset( $_POST['mo_openid_tumblr_share_enable']) ? $_POST['mo_openid_tumblr_share_enable'] : 0);
1110
- update_option( 'mo_openid_delicious_share_enable', isset( $_POST['mo_openid_delicious_share_enable']) ? $_POST['mo_openid_delicious_share_enable'] : 0);
1111
- update_option( 'mo_openid_vkontakte_share_enable', isset( $_POST['mo_openid_vkontakte_share_enable']) ? $_POST['mo_openid_vkontakte_share_enable'] : 0);
1112
- update_option( 'mo_openid_stumble_share_enable', isset( $_POST['mo_openid_stumble_share_enable']) ? $_POST['mo_openid_stumble_share_enable'] : 0);
1113
- update_option( 'mo_openid_odnoklassniki_share_enable', isset( $_POST['mo_openid_odnoklassniki_share_enable']) ? $_POST['mo_openid_odnoklassniki_share_enable'] : 0);
1114
- update_option( 'mo_openid_digg_share_enable', isset( $_POST['mo_openid_digg_share_enable']) ? $_POST['mo_openid_digg_share_enable'] : 0);
1115
- update_option( 'mo_openid_pocket_share_enable', isset( $_POST['mo_openid_pocket_share_enable']) ? $_POST['mo_openid_pocket_share_enable'] : 0);
1116
-
1117
- update_option( 'mo_openid_mail_share_enable', isset( $_POST['mo_openid_mail_share_enable']) ? $_POST['mo_openid_mail_share_enable'] : 0);
1118
- update_option( 'mo_openid_print_share_enable', isset( $_POST['mo_openid_print_share_enable']) ? $_POST['mo_openid_print_share_enable'] : 0);
1119
- update_option( 'mo_openid_whatsapp_share_enable', isset( $_POST['mo_openid_whatsapp_share_enable']) ? $_POST['mo_openid_whatsapp_share_enable'] : 0);
1120
-
1121
- update_option('mo_share_options_enable_home_page',isset( $_POST['mo_share_options_home_page']) ? $_POST['mo_share_options_home_page'] : 0);
1122
- update_option('mo_share_options_enable_post',isset( $_POST['mo_share_options_post']) ? $_POST['mo_share_options_post'] : 0);
1123
- update_option('mo_share_options_enable_static_pages',isset( $_POST['mo_share_options_static_pages']) ? $_POST['mo_share_options_static_pages'] : 0);
1124
- update_option('mo_share_options_wc_sp_summary',isset( $_POST['mo_share_options_wc_sp_summary']) ? $_POST['mo_share_options_wc_sp_summary'] : 0);
1125
- update_option('mo_share_options_wc_sp_summary_top',isset( $_POST['mo_share_options_wc_sp_summary_top']) ? $_POST['mo_share_options_wc_sp_summary_top'] : 0);
1126
- update_option('mo_share_options_enable_post_position',$_POST['mo_share_options_enable_post_position'] );
1127
- update_option('mo_share_options_home_page_position',$_POST['mo_share_options_home_page_position'] );
1128
- update_option('mo_share_options_static_pages_position',$_POST['mo_share_options_static_pages_position'] );
1129
- update_option('mo_share_options_bb_forum_position',$_POST['mo_share_options_bb_forum_position'] );
1130
- update_option('mo_share_options_bb_topic_position',$_POST['mo_share_options_bb_topic_position'] );
1131
- update_option('mo_share_options_bb_reply_position',$_POST['mo_share_options_bb_reply_position'] );
1132
- update_option('mo_openid_share_theme',$_POST['mo_openid_share_theme'] );
1133
- update_option('mo_share_vertical_hide_mobile',isset( $_POST['mo_share_vertical_hide_mobile']) ? $_POST['mo_share_vertical_hide_mobile'] : 0);
1134
- update_option('mo_share_options_bb_forum',isset( $_POST['mo_share_options_bb_forum']) ? $_POST['mo_share_options_bb_forum'] : 0);
1135
- update_option('mo_share_options_bb_topic',isset( $_POST['mo_share_options_bb_topic']) ? $_POST['mo_share_options_bb_topic'] : 0);
1136
- update_option('mo_share_options_bb_reply',isset( $_POST['mo_share_options_bb_reply']) ? $_POST['mo_share_options_bb_reply'] : 0);
1137
- update_option('mo_openid_share_widget_customize_text',$_POST['mo_openid_share_widget_customize_text'] );
1138
- update_option('mo_openid_share_widget_customize_text_color',$_POST['mo_openid_share_widget_customize_text_color'] );
1139
- update_option('mo_openid_share_twitter_username', sanitize_text_field($_POST['mo_openid_share_twitter_username'])) ;
1140
- update_option('mo_openid_share_email_subject', sanitize_text_field($_POST['mo_openid_share_email_subject'])) ;
1141
- update_option('mo_openid_share_email_body', sanitize_text_field($_POST['mo_openid_share_email_body'])) ;
1142
-
1143
- update_option('mo_openid_share_widget_customize_direction_horizontal',isset( $_POST['mo_openid_share_widget_customize_direction_horizontal']) ? $_POST['mo_openid_share_widget_customize_direction_horizontal'] : 0);
1144
- update_option('mo_openid_share_widget_customize_direction_vertical',isset( $_POST['mo_openid_share_widget_customize_direction_vertical']) ? $_POST['mo_openid_share_widget_customize_direction_vertical'] : 0);
1145
- update_option('mo_sharing_icon_custom_size',isset( $_POST['mo_sharing_icon_custom_size']) ? $_POST['mo_sharing_icon_custom_size'] : 35);
1146
- update_option('mo_sharing_icon_custom_color',$_POST['mo_sharing_icon_custom_color'] );
1147
- update_option('mo_openid_share_custom_theme',$_POST['mo_openid_share_custom_theme'] );
1148
- update_option('mo_sharing_icon_custom_font',$_POST['mo_sharing_icon_custom_font'] );
1149
- update_option('mo_sharing_icon_space',$_POST['mo_sharing_icon_space'] );
1150
- update_option( 'mo_openid_message', 'Your settings are saved successfully.' );
1151
- $this->mo_openid_show_success_message();
1152
- if(!mo_openid_is_customer_registered()) {
1153
- $redirect = add_query_arg( array('tab' => 'register'), $_SERVER['REQUEST_URI'] );
1154
- update_option('mo_openid_message', 'Your settings are successfully saved. Please <a href=\" '. $redirect .'\">Register or Login with miniOrange</a> to enable Social Login and Social Sharing.');
1155
- $this->mo_openid_show_error_message();
1156
  }
1157
- }
1158
- else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_add_custom_app" ) {
1159
- if($this->mo_oauth_check_empty_or_null($_POST['mo_oauth_client_id']) || $this->mo_oauth_check_empty_or_null($_POST['mo_oauth_client_secret'])) {
1160
- update_option( 'message', 'Please enter valid Client ID and Client Secret.');
1161
- $this->mo_openid_show_error_message();
1162
- return;
1163
- } else{
1164
- $scope = stripslashes(sanitize_text_field( $_POST['mo_oauth_scope'] ));
1165
- $clientid = stripslashes(sanitize_text_field( $_POST['mo_oauth_client_id'] ));
1166
- $clientsecret = stripslashes(sanitize_text_field( $_POST['mo_oauth_client_secret'] ));
1167
- $appname = stripslashes(sanitize_text_field( $_POST['mo_oauth_app_name'] ));
1168
-
1169
- if(get_option('mo_openid_apps_list'))
1170
- $appslist = get_option('mo_openid_apps_list');
1171
- else
1172
- $appslist = array();
1173
-
1174
- $newapp = array();
1175
-
1176
- foreach($appslist as $key => $currentapp){
1177
- if($appname == $key){
1178
- $newapp = $currentapp;
1179
- break;
1180
- }
1181
- }
1182
-
1183
- $newapp['clientid'] = $clientid;
1184
- $newapp['clientsecret'] = $clientsecret;
1185
- $newapp['scope'] = $scope;
1186
- $newapp['redirecturi'] = site_url().'/openidcallback';
1187
- if($appname=="facebook"){
1188
- $authorizeurl = 'https://www.facebook.com/dialog/oauth';
1189
- $accesstokenurl = 'https://graph.facebook.com/v2.8/oauth/access_token';
1190
- $resourceownerdetailsurl = 'https://graph.facebook.com/me/?fields=id,name,email,age_range,first_name,gender,last_name,link&access_token=';
1191
- } else if($appname=="google"){
1192
- $authorizeurl = "https://accounts.google.com/o/oauth2/auth";
1193
- $accesstokenurl = "https://www.googleapis.com/oauth2/v3/token";
1194
- //private static final String VERIFY_TOKEN_ENDPOINT = "https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=";
1195
- //private static final String GET_USER_INFO_ENDPOINT = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=";
1196
- $resourceownerdetailsurl = "https://www.googleapis.com/plus/v1/people/me";
1197
- } else if($appname=="twitter"){
1198
- $authorizeurl = "https://api.twitter.com/oauth/authorize";
1199
- $accesstokenurl = "https://api.twitter.com/oauth/access_token";
1200
- $resourceownerdetailsurl = "https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials?include_email=true";
1201
- }else {
1202
- $authorizeurl = stripslashes(sanitize_text_field($_POST['mo_oauth_authorizeurl']));
1203
- $accesstokenurl = stripslashes(sanitize_text_field($_POST['mo_oauth_accesstokenurl']));
1204
- $resourceownerdetailsurl = stripslashes(sanitize_text_field($_POST['mo_oauth_resourceownerdetailsurl']));
1205
- $appname = stripslashes(sanitize_text_field( $_POST['mo_oauth_custom_app_name'] ));
1206
- }
1207
-
1208
- $newapp['authorizeurl'] = $authorizeurl;
1209
- $newapp['accesstokenurl'] = $accesstokenurl;
1210
- $newapp['resourceownerdetailsurl'] = $resourceownerdetailsurl;
1211
- $appslist[$appname] = $newapp;
1212
- update_option('mo_openid_apps_list', $appslist);
1213
- wp_redirect('admin.php?page=mo_openid_settings&tab=custom_app');
1214
- }
1215
- }
1216
- else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_custom_app_attribute_mapping" ) {
1217
- $appname = stripslashes(sanitize_text_field( $_POST['mo_oauth_app_name'] ));
1218
- $email_attr = stripslashes(sanitize_text_field( $_POST['mo_oauth_email_attr'] ));
1219
- $name_attr = stripslashes(sanitize_text_field( $_POST['mo_oauth_name_attr'] ));
1220
-
1221
- $appslist = get_option('mo_openid_apps_list');
1222
- foreach($appslist as $key => $currentapp){
1223
- if($appname == $key){
1224
- $currentapp['email_attr'] = $email_attr;
1225
- $currentapp['name_attr'] = $name_attr;
1226
- $appslist[$key] = $currentapp;
1227
- break;
1228
- }
1229
- }
1230
- update_option('mo_openid_apps_list', $appslist);
1231
- update_option( 'message', 'Your settings are saved successfully.' );
1232
- $this->mo_openid_show_success_message();
1233
- wp_redirect('admin.php?page=mo_openid_settings&tab=custom_app&action=update&app='.urlencode($appname));
1234
- }
1235
- }
1236
 
1237
 
1238
  if(isset($_POST['mo_openid_option']) and $_POST['mo_openid_option']=='mo_openid_skip_feedback'){
@@ -1268,11 +1339,11 @@ class Miniorange_OpenID_SSO {
1268
  if ( json_last_error() == JSON_ERROR_NONE ) {
1269
  if ( is_array( $submited ) && array_key_exists( 'status', $submited ) && $submited['status'] == 'ERROR' )
1270
  {
1271
- if( isset($submited['message']))
1272
- {
1273
- update_option('mo_openid_message',$submited['message']);
1274
- $this->mo_openid_show_error_message();
1275
- }
1276
 
1277
 
1278
  } else
@@ -1297,8 +1368,7 @@ class Miniorange_OpenID_SSO {
1297
  }
1298
  }
1299
 
1300
- }
1301
-
1302
  function create_customer(){
1303
  delete_option('mo_openid_sms_otp_count');
1304
  delete_option('mo_openid_email_otp_count');
@@ -1341,6 +1411,11 @@ class Miniorange_OpenID_SSO {
1341
  update_option('mo_openid_verify_customer', 'true');
1342
  delete_option('mo_openid_new_registration');
1343
  $this->mo_openid_show_error_message();
 
 
 
 
 
1344
  }
1345
 
1346
  }
@@ -1494,6 +1569,5 @@ class Miniorange_OpenID_SSO {
1494
  return false;
1495
  }
1496
  }
1497
-
1498
  new Miniorange_OpenID_SSO;
1499
  ?>
1
  <?php
2
  /**
3
  * Plugin Name: Social Login, Social Sharing by miniOrange
4
+ * Plugin URI: https://www.miniorange.com/social-login
5
+ * Description: Allow your users to login, comment and share with social login apps like Facebook, Google, Twitter, LinkedIn etc using customizable buttons.
6
+ * Version: 7.1.0
7
+ * Author: social login (miniOrange)
8
+ * Author URI: https://www.miniorange.com/social-login
9
  * License: GPL2
10
  */
11
 
14
  require('class-mo-openid-sso-customer.php');
15
  require('class-mo-openid-sso-shortcode-buttons.php');
16
  require('class-mo-openid-social-comment.php');
17
+ define('MO_OPENID_SOCIAL_LOGIN_VERSION', '7.1.0');
18
  include dirname( __FILE__ ) . '/mo_openid_feedback_form.php';
19
  class Miniorange_OpenID_SSO {
20
 
288
  add_option( 'mo_manual_login_error_message','There was an error during login. Please try to login/register manually. <a href='.site_url().'>Go back to site</a>');
289
  add_option( 'mo_delete_user_error_message','Error deleting user from account linking table');
290
  add_option( 'mo_account_linking_message','Link your social account to existing WordPress account by entering username and password.');
291
+ add_option('regi_pop_up','');
292
+ add_option('mo_openid_tour','0');
293
+ add_option('pop_regi_msg','Your settings are saved successfully. Please enter your valid email address to enable social login.');
294
+ add_option('pop_login_msg','Enter Your Login Credentials.');
295
  }
296
 
297
  function mo_openid_feedback_request(){
501
  wp_enqueue_style( 'mo-wp-font-awesome',plugins_url('includes/css/font-awesome.css?version=4.8', __FILE__), false );
502
  }
503
 
504
+ function mo_openid_plugin_settings_style() {
505
+ wp_enqueue_style( 'mo_openid_admin_settings_style', plugins_url('includes/css/mo_openid_style.css?version=5.0.6', __FILE__));
506
+ wp_enqueue_style( 'mo_openid_admin_settings_phone_style', plugins_url('includes/css/phone.css', __FILE__));
507
+ wp_enqueue_style( 'mo-wp-bootstrap-social',plugins_url('includes/css/bootstrap-social.css', __FILE__), false );
508
+ wp_enqueue_style( 'mo-wp-bootstrap-main',plugins_url('includes/css/bootstrap.min-preview.css', __FILE__), false );
509
+ wp_enqueue_style( 'mo-wp-font-awesome',plugins_url('includes/css/font-awesome.min.css?version=4.8', __FILE__), false );
510
+ wp_enqueue_style( 'mo-wp-font-awesome',plugins_url('includes/css/font-awesome.css?version=4.8', __FILE__), false );
511
+ wp_enqueue_style( 'bootstrap_style_ass', plugins_url( 'includes/css/bootstrap-tour-standalone.css?version=5.1.4', __FILE__ ) );
512
 
 
513
 
 
 
 
 
514
 
515
+ }
516
+
517
+ function mo_openid_plugin_script() {
518
+ wp_enqueue_script( 'js-cookie-script',plugins_url('includes/js/jquery.cookie.min.js', __FILE__), array('jquery'));
519
+ wp_enqueue_script( 'mo-social-login-script',plugins_url('includes/js/social_login.js', __FILE__), array('jquery') );
520
+ }
521
 
522
+ function mo_openid_plugin_settings_script() {
523
+ wp_enqueue_script( 'mo_openid_admin_settings_phone_script', plugins_url('includes/js/phone.js', __FILE__ ));
524
+ wp_enqueue_script( 'mo_openid_admin_settings_color_script', plugins_url('includes/jscolor/jscolor.js', __FILE__ ));
525
+ wp_enqueue_script( 'mo_openid_admin_settings_script', plugins_url('includes/js/settings.js?version=4.9.6', __FILE__ ), array('jquery'));
526
+ wp_enqueue_script( 'mo_openid_admin_settings_phone_script', plugins_url('includes/js/bootstrap.min.js', __FILE__ ));
527
+ wp_enqueue_script( 'bootstrap_script_hehe', plugins_url( 'includes/js/bootstrap-tour-standalone.min.js', __FILE__ ) );
528
+ }
529
+
530
+
531
+ function mo_openid_success_message() {
532
  $message = get_option('mo_openid_message'); ?>
533
  <script>
534
 
616
  }
617
  return false;
618
  }
619
+ function miniorange_openid_save_settings(){
620
 
621
+ if ( current_user_can( 'manage_options' )){
622
+ if(is_admin() && get_option('Activated_Plugin')=='Plugin-Slug') {
623
 
624
+ delete_option('Activated_Plugin');
625
+ update_option('mo_openid_message','Go to plugin <b><a href="admin.php?page=mo_openid_settings">settings</a></b> to enable Social Login, Social Sharing by miniOrange.');
626
+ add_action('admin_notices', array($this, 'mo_openid_activation_message'));
627
+ }
628
 
629
+ if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_connect_register_customer" ) { //register the admin to miniOrange
630
+
631
+ //validation and sanitization
632
+ $company = '';
633
+ $first_name = '';
634
+ $last_name = '';
635
+ $email = '';
636
+ $phone = '';
637
+ $password = '';
638
+ $confirmPassword = '';
639
+ $illegal = "#$%^*()+=[]';,/{}|:<>?~";
640
+ $illegal = $illegal . '"';
641
+ if( $this->mo_openid_check_empty_or_null( $_POST['company'] ) || $this->mo_openid_check_empty_or_null( $_POST['email'] ) || $this->mo_openid_check_empty_or_null( $_POST['password'] ) || $this->mo_openid_check_empty_or_null( $_POST['confirmPassword'] ) ) {
642
+ update_option( 'mo_openid_message', 'All the fields are required. Please enter valid entries.');
643
+ $this->mo_openid_show_error_message();
644
+ if(get_option('regi_pop_up') =="yes") {
645
+ update_option('pop_regi_msg', get_option('mo_openid_message'));
646
+ mo_openid_registeration_modal();
647
+ }
648
+ return;
649
+ } else if( strlen( $_POST['password'] ) < 6 || strlen( $_POST['confirmPassword'] ) < 6){ //check password is of minimum length 6
650
+ update_option( 'mo_openid_message', 'Choose a password with minimum length 6.');
651
+ $this->mo_openid_show_error_message();
652
+ if(get_option('regi_pop_up') =="yes"){
653
+ update_option('pop_regi_msg', get_option('mo_openid_message'));
654
+ mo_openid_registeration_modal();
655
+ }
656
+ return;
657
+ } else if(strpbrk($_POST['email'],$illegal)) {
658
+ update_option( 'mo_openid_message', 'Please match the format of Email. No special characters are allowed.');
659
+ $this->mo_openid_show_error_message();
660
+ if(get_option('regi_pop_up') =="yes"){
661
+ update_option('pop_regi_msg', get_option('mo_openid_message'));
662
+ mo_openid_registeration_modal();
663
+ }
664
+ return;
665
+ } else {
666
+ $company = sanitize_text_field($_POST['company']);
667
+ $first_name = sanitize_text_field(isset($_POST['fname'])?$_POST['fname']:'');
668
+ $last_name = sanitize_text_field(isset($_POST['lname'])?$_POST['lname']:'');
669
+ $email = sanitize_email( $_POST['email'] );
670
+ $phone = sanitize_text_field( isset($_POST['phone'])?$_POST['phone']:'' );
671
+ $password = sanitize_text_field( $_POST['password'] );
672
+ $confirmPassword = sanitize_text_field( $_POST['confirmPassword'] );
673
+ }
674
 
675
+ update_option( 'mo_openid_admin_company_name', $company);
676
+ update_option( 'mo_openid_admin_first_name', $first_name);
677
+ update_option( 'mo_openid_admin_last_name', $last_name);
678
+ update_option( 'mo_openid_admin_email', $email );
679
+ update_option( 'mo_openid_admin_phone', $phone );
680
+
681
+ if( strcmp( $password, $confirmPassword) == 0 ) {
682
+ update_option( 'mo_openid_admin_password', $password );
683
+
684
+ $customer = new CustomerOpenID();
685
+ $content = json_decode($customer->check_customer(), true);
686
+ if( strcasecmp( $content['status'], 'CUSTOMER_NOT_FOUND') == 0 ){
687
+ $content = json_decode($customer->send_otp_token('EMAIL'), true);
688
+ if(strcasecmp($content['status'], 'SUCCESS') == 0) {
689
+ if(get_option('mo_openid_email_otp_count')){
690
+ update_option('mo_openid_email_otp_count',get_option('mo_openid_email_otp_count') + 1);
691
+ update_option('mo_openid_message', 'Another One Time Passcode has been sent <b>( ' . get_option('mo_openid_email_otp_count') . ' )</b> for verification to ' . get_option('mo_openid_admin_email'));
692
+ }else{
693
+ update_option( 'mo_openid_message', ' A passcode is sent to ' . get_option('mo_openid_admin_email') . '. Please enter the otp here to verify your email.');
694
+ update_option('mo_openid_email_otp_count',1);
695
+ }
696
+ update_option('mo_openid_transactionId',$content['txId']);
697
+ update_option('mo_openid_registration_status','MO_OTP_DELIVERED_SUCCESS');
 
 
 
 
 
 
 
 
 
 
698
 
699
+ $this->mo_openid_show_success_message();
700
+ if(get_option('regi_pop_up') =="yes")
701
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
702
+ }else{
703
+
704
+ update_option('mo_openid_message','There was an error in sending email. Please click on Resend OTP to try again.');
705
+ update_option('mo_openid_registration_status','MO_OTP_DELIVERED_FAILURE');
706
+ $this->mo_openid_show_error_message();
707
+ if(get_option('regi_pop_up') =="yes")
708
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
709
+ }
710
+ }else{
711
+ $this->get_current_customer();
712
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
713
 
714
+ } else {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
715
 
716
+ update_option( 'mo_openid_message', 'Passwords do not match.');
717
+ if(get_option('regi_pop_up') =="yes"){
718
+ update_option('pop_regi_msg', get_option('mo_openid_message'));
719
+ mo_openid_registeration_modal();
720
+ }
721
+ delete_option('mo_openid_verify_customer');
722
+ $this->mo_openid_show_error_message();
723
+ }
724
 
725
+ } else if( isset( $_POST['show_login'] ) )
726
+ {
727
 
728
+ mo_pop_show_verify_password_page();
729
+ }
730
+ else if(isset($_POST['option']) and $_POST['option'] == "mo_openid_validate_otp"){
731
+ //validation and sanitization
732
+ $otp_token = '';
733
+ if( $this->mo_openid_check_empty_or_null( $_POST['otp_token'] ) ) {
734
+ update_option( 'mo_openid_message', 'Please enter a value in OTP field.');
735
+ update_option('mo_openid_registration_status','MO_OTP_VALIDATION_FAILURE');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
736
 
737
+ $this->mo_openid_show_error_message();
738
+ if(get_option('regi_pop_up') =="yes")
739
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
740
+ return;
741
+ } else if(!preg_match('/^[0-9]*$/', $_POST['otp_token'])) {
742
+ update_option( 'mo_openid_message', 'Please enter a valid value in OTP field.');
743
+ update_option('mo_openid_registration_status','MO_OTP_VALIDATION_FAILURE');
744
+ $this->mo_openid_show_error_message();
 
 
 
 
 
 
 
 
 
 
 
 
 
745
 
746
+ if(get_option('regi_pop_up') =="yes")
747
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
748
+ return;
749
+ } else{
750
+ $otp_token = sanitize_text_field( $_POST['otp_token'] );
751
+ }
752
+
753
+ $customer = new CustomerOpenID();
754
+ $content = json_decode($customer->validate_otp_token(get_option('mo_openid_transactionId'), $otp_token ),true);
755
+ if(strcasecmp($content['status'], 'SUCCESS') == 0) {
756
+ $this->create_customer();
757
+ update_option('mo_openid_oauth','1');
758
+ update_option('mo_openid_new_user','1');
759
+ update_option('mo_openid_malform_error','1');
760
+
761
+ }else{
762
+ update_option( 'mo_openid_message','Invalid one time passcode. Please enter a valid passcode.');
763
+ update_option('mo_openid_registration_status','MO_OTP_VALIDATION_FAILURE');
764
+ $this->mo_openid_show_error_message();
765
+ if(get_option('regi_pop_up') =="yes")
766
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
767
+ }
768
+ }
769
+ else if( isset($_POST['option']) and $_POST['option'] == 'mo_openid_phone_verification'){ //at registration time
770
+ $phone = sanitize_text_field($_POST['phone_number']);
771
+
772
+ $phone = str_replace(' ', '', $phone);
773
+ update_option('mo_openid_admin_phone',$phone);
774
+ $auth_type = 'SMS';
775
+ $customer = new CustomerOpenID();
776
+ $send_otp_response = json_decode($customer->send_otp_token($auth_type),true);
777
+ if(strcasecmp($send_otp_response['status'], 'SUCCESS') == 0){
778
+ //Save txId
779
+
780
+ update_option('mo_openid_transactionId',$send_otp_response['txId']);
781
+ update_option( 'mo_openid_registration_status','MO_OTP_DELIVERED_SUCCESS');
782
+ if(get_option('mo_openid_sms_otp_count')){
783
+ update_option('mo_openid_sms_otp_count',get_option('mo_openid_sms_otp_count') + 1);
784
+ update_option('mo_openid_message', 'Another One Time Passcode has been sent <b>( ' . get_option('mo_openid_sms_otp_count') . ' )</b> for verification to ' . $phone);
785
+ }else{
786
+
787
+ update_option('mo_openid_message', 'One Time Passcode has been sent for verification to ' . $phone);
788
+ update_option('mo_openid_sms_otp_count',1);
789
+ }
790
+
791
+ $this->mo_openid_show_success_message();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
792
 
793
+ }else{
794
+ update_option('mo_openid_message','There was an error in sending sms. Please click on Resend OTP link next to phone number textbox.');
795
+ update_option('mo_openid_registration_status','MO_OTP_DELIVERED_FAILURE');
796
+ $this->mo_openid_show_error_message();
797
 
798
+ }
799
+ }
800
+ else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_connect_verify_customer" ) { //register the admin to miniOrange
801
+
802
+ //validation and sanitization
803
+ $email = '';
804
+ $password = '';
805
+ $illegal = "#$%^*()+=[]';,/{}|:<>?~";
806
+ $illegal = $illegal . '"';
807
+ if( $this->mo_openid_check_empty_or_null( $_POST['email'] ) || $this->mo_openid_check_empty_or_null( $_POST['password'] ) ) {
808
+ update_option( 'mo_openid_message', 'All the fields are required. Please enter valid entries.');
809
+ $this->mo_openid_show_error_message();
810
+ return;
811
+ } else if(strpbrk($_POST['email'],$illegal)) {
812
+ update_option( 'mo_openid_message', 'Please match the format of Email. No special characters are allowed.');
813
+ $this->mo_openid_show_error_message();
814
+ return;
815
+ } else{
816
+ $email = sanitize_email( $_POST['email'] );
817
+ $password = sanitize_text_field( $_POST['password'] );
818
+ }
819
+
820
+ update_option( 'mo_openid_admin_email', $email );
821
+ update_option( 'mo_openid_admin_password', $password );
822
+ $customer = new CustomerOpenID();
823
+ $content = $customer->get_customer_key();
824
+ $customerKey = json_decode( $content, true );
825
+ if( isset($customerKey) ) {
826
+ update_option( 'mo_openid_admin_customer_key', $customerKey['id'] );
827
+ update_option( 'mo_openid_admin_api_key', $customerKey['apiKey'] );
828
+ update_option( 'mo_openid_customer_token', $customerKey['token'] );
829
+ update_option( 'mo_openid_admin_phone', $customerKey['phone'] );
830
+ update_option('mo_openid_admin_password', '');
831
+ update_option( 'mo_openid_message', 'Your account has been retrieved successfully.');
832
+ delete_option('mo_openid_verify_customer');
833
+ $this->mo_openid_show_success_message();
834
+
835
+ } else {
836
+ update_option( 'mo_openid_message', 'Invalid username or password. Please try again.');
837
+ $this->mo_openid_show_error_message();
838
+ if(get_option('regi_pop_up') =="yes") {
839
+ update_option("pop_login_msg",get_option("mo_openid_message"));
840
+ mo_pop_show_verify_password_page();
841
+
842
+ }
843
+ }
844
+ update_option('mo_openid_admin_password', '');
845
+ }
846
+ else if(isset($_POST['option']) and $_POST['option'] == 'mo_openid_forgot_password'){
847
+
848
+ $email ='';
849
+ if( $this->mo_openid_check_empty_or_null( $email ) ) {
850
+ if( $this->mo_openid_check_empty_or_null( $_POST['email'] ) ) {
851
+ update_option( 'mo_openid_message', 'No email provided. Please enter your email below to reset password.');
852
+ $this->mo_openid_show_error_message();
853
+ if(get_option('regi_pop_up') =="yes"){
854
+ update_option("pop_login_msg",get_option("mo_openid_message"));
855
+ mo_pop_show_verify_password_page();
856
+
857
+ }
858
+ return;
859
+ } else {
860
+ $email = $_POST['email'];
861
+
862
+ }
863
+ }
864
+
865
+
866
+ $customer = new CustomerOpenID();
867
+ $content = json_decode($customer->forgot_password($email),true);
868
+ if(strcasecmp($content['status'], 'SUCCESS') == 0){
869
+ update_option( 'mo_openid_message','You password has been reset successfully. Please enter the new password sent to your registered mail here.');
870
+ $this->mo_openid_show_success_message();
871
+ if(get_option('regi_pop_up') =="yes"){
872
+ update_option("pop_login_msg",get_option("mo_openid_message"));
873
+ mo_pop_show_verify_password_page();
874
+
875
+ }
876
+ }else{
877
+ update_option( 'mo_openid_message','An error occured while processing your request. Please make sure you are registered with miniOrange with the given email address.');
878
+ $this->mo_openid_show_error_message();
879
+ if(get_option('regi_pop_up') =="yes"){
880
+ update_option("pop_login_msg",get_option("mo_openid_message"));
881
+ mo_pop_show_verify_password_page();
882
+
883
+ }
884
+ }
885
+ }
886
+ else if(isset($_POST['option']) and $_POST['option'] == 'mo_openid_check_license'){
887
+ if(mo_openid_is_customer_registered()) {
888
+ $customer = new CustomerOpenID();
889
+ $content = json_decode($customer->check_customer_valid(),true);
890
+ if(strcasecmp($content['status'], 'SUCCESS') == 0){
891
+ update_option( 'mo_openid_admin_customer_valid', strcasecmp($content['licenseType'], 'Premium') !== FALSE ? 1 : 0);
892
+ update_option( 'mo_openid_admin_customer_plan', isset($content['licensePlan']) ? base64_encode($content['licensePlan']) : 0);
893
+ if(get_option('mo_openid_admin_customer_valid') && isset($content['licensePlan'])){
894
+ $license = explode(' -', $content['licensePlan']);
895
+ $lp = $license[0];
896
+ update_option( 'mo_openid_message','You are on the old ' . $lp . '.');
897
+ } else
898
+ update_option( 'mo_openid_message','You are on the Free Plan.');
899
+ $this->mo_openid_show_success_message();
900
+ }else if(strcasecmp($content['status'], 'FAILED') == 0){
901
+ update_option('mo_openid_message', 'You are on Free Plan.');
902
+ $this->mo_openid_show_success_message();
903
+ }else{
904
+ update_option( 'mo_openid_message','An error occured while processing your request. Please try again.');
905
+ $this->mo_openid_show_error_message();
906
+ }
907
+ } else {
908
+ update_option('mo_openid_message', 'Please register an account before trying to check your plan');
909
+ $this->mo_openid_show_error_message();
910
+ }
911
+ }
912
+ else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_enable_apps" ) {
913
+
914
+
915
+ update_option( 'mo_openid_google_enable', isset( $_POST['mo_openid_google_enable']) ? $_POST['mo_openid_google_enable'] : 0);
916
+ update_option( 'mo_openid_salesforce_enable', isset( $_POST['mo_openid_salesforce_enable']) ? $_POST['mo_openid_salesforce_enable'] : 0);
917
  if($this->if_custom_app_exists('facebook')) {
918
  update_option('mo_openid_facebook_enable', isset($_POST['mo_openid_facebook_enable']) ? $_POST['mo_openid_facebook_enable'] : 0);
919
  }
923
 
924
  }
925
  update_option( 'mo_openid_linkedin_enable', isset( $_POST['mo_openid_linkedin_enable']) ? $_POST['mo_openid_linkedin_enable'] : 0);
926
+ update_option( 'mo_openid_windowslive_enable', isset( $_POST['mo_openid_windowslive_enable']) ? $_POST['mo_openid_windowslive_enable'] : 0);
927
+ update_option( 'mo_openid_amazon_enable', isset( $_POST['mo_openid_amazon_enable']) ? $_POST['mo_openid_amazon_enable'] : 0);
928
+ update_option( 'mo_openid_instagram_enable', isset( $_POST['mo_openid_instagram_enable']) ? $_POST['mo_openid_instagram_enable'] : 0);
929
+ update_option( 'mo_openid_twitter_enable', isset( $_POST['mo_openid_twitter_enable']) ? $_POST['mo_openid_twitter_enable'] : 0);
930
+ update_option( 'mo_openid_vkontakte_enable', isset( $_POST['mo_openid_vkontakte_enable']) ? $_POST['mo_openid_vkontakte_enable'] : 0);
931
 
932
+ update_option( 'mo_openid_default_login_enable', isset( $_POST['mo_openid_default_login_enable']) ? $_POST['mo_openid_default_login_enable'] : 0);
933
+ update_option( 'mo_openid_default_register_enable', isset( $_POST['mo_openid_default_register_enable']) ? $_POST['mo_openid_default_register_enable'] : 0);
934
+ update_option( 'mo_openid_default_comment_enable', isset( $_POST['mo_openid_default_comment_enable']) ? $_POST['mo_openid_default_comment_enable'] : 0);
935
 
936
 
937
 
943
  update_option('mo_openid_gdpr_consent_message', isset($_POST['mo_openid_gdpr_consent_message']) ? stripslashes($_POST['mo_openid_gdpr_consent_message']) : get_option('mo_openid_gdpr_consent_message'));
944
  }
945
  //Redirect URL
946
+ update_option( 'mo_openid_login_redirect', $_POST['mo_openid_login_redirect']);
947
+ update_option( 'mo_openid_login_redirect_url', $_POST['mo_openid_login_redirect_url'] );
948
  update_option( 'mo_openid_relative_login_redirect_url', isset( $_POST['mo_openid_relative_login_redirect_url']) ? $_POST['mo_openid_relative_login_redirect_url'] : "" );
949
 
950
+ //Logout Url
951
+ update_option( 'mo_openid_logout_redirection_enable', isset( $_POST['mo_openid_logout_redirection_enable']) ? $_POST['mo_openid_logout_redirection_enable'] : 0);
952
+ update_option( 'mo_openid_logout_redirect', $_POST['mo_openid_logout_redirect']);
953
+ update_option( 'mo_openid_logout_redirect_url', $_POST['mo_openid_logout_redirect_url'] );
954
 
955
+ //auto register
956
+ update_option( 'mo_openid_auto_register_enable', isset( $_POST['mo_openid_auto_register_enable']) ? $_POST['mo_openid_auto_register_enable'] : 0);
957
+ update_option( 'mo_openid_register_disabled_message', $_POST['mo_openid_register_disabled_message']);
958
 
959
 
960
+ //email notification
961
+ update_option( 'mo_openid_email_enable', isset( $_POST['mo_openid_email_enable']) ? $_POST['mo_openid_email_enable'] : 0);
962
 
963
+ //Customized text
964
+ update_option('mo_openid_login_widget_customize_text',$_POST['mo_openid_login_widget_customize_text'] );
965
+ update_option( 'mo_openid_login_button_customize_text',$_POST['mo_openid_login_button_customize_text'] );
966
 
967
  //profile completion
968
  update_option('mo_openid_enable_profile_completion', isset( $_POST['mo_openid_enable_profile_completion']) ? $_POST['mo_openid_enable_profile_completion'] : 0);
969
 
970
  if(get_option('mo_openid_enable_profile_completion') == 1) {
971
+ // update_option('mo_profile_completion_form_title', $_POST['mo_profile_completion_form_title']);
972
+ //update_option('mo_profile_completion_form_message', $_POST['mo_profile_completion_form_message']);
973
+
974
+ update_option('mo_profile_complete_title', $_POST['mo_profile_complete_title']);
975
+ update_option('mo_profile_complete_username_label', $_POST['mo_profile_complete_username_label']);
976
+ update_option('mo_profile_complete_email_label', $_POST['mo_profile_complete_email_label']);
977
+ update_option('mo_profile_complete_submit_button', $_POST['mo_profile_complete_submit_button']);
978
+ update_option('mo_profile_complete_instruction', $_POST['mo_profile_complete_instruction']);
979
+ update_option('mo_profile_complete_extra_instruction', $_POST['mo_profile_complete_extra_instruction']);
980
+ update_option('mo_profile_complete_uname_exist', $_POST['mo_profile_complete_uname_exist']);
981
+
982
+ update_option('mo_email_verify_resend_otp_button', $_POST['mo_email_verify_resend_otp_button']);
983
+ update_option('mo_email_verify_back_button', $_POST['mo_email_verify_back_button']);
984
+ update_option('mo_email_verify_title', $_POST['mo_email_verify_title']);
985
+ update_option('mo_email_verify_message', $_POST['mo_email_verify_message']);
986
+ update_option('mo_email_verify_verification_code_instruction', $_POST['mo_email_verify_verification_code_instruction']);
987
+ update_option('mo_email_verify_wrong_otp', $_POST['mo_email_verify_wrong_otp']);
988
+ }
989
  //account-linking
990
  update_option( 'mo_openid_account_linking_enable', isset( $_POST['mo_openid_account_linking_enable']) ? $_POST['mo_openid_account_linking_enable'] : 0);
991
 
992
+ if(get_option('mo_openid_account_linking_enable') == 1 && (!mo_openid_restrict_user()))
993
+ {
994
  // update_option('mo_account_linking_form_title', $_POST['mo_account_linking_form_title']);
995
+ //update_option('mo_account_linking_form_message', $_POST['mo_account_linking_form_message']);
996
 
997
+ update_option('mo_account_linking_title', $_POST['mo_account_linking_title']);
998
+ update_option('mo_account_linking_new_user_button', $_POST['mo_account_linking_new_user_button']);
999
+ update_option('mo_account_linking_existing_user_button', $_POST['mo_account_linking_existing_user_button']);
1000
+ update_option('mo_account_linking_new_user_instruction', $_POST['mo_account_linking_new_user_instruction']);
1001
+ update_option('mo_account_linking_existing_user_instruction', $_POST['mo_account_linking_existing_user_instruction']);
1002
+ update_option('mo_account_linking_extra_instruction', $_POST['mo_account_linking_extra_instruction']);
1003
 
1004
 
1005
+ }
1006
 
1007
 
1008
 
1009
  if(!get_option('mo_openid_oauth')){
1010
  update_option('mo_openid_login_widget_customize_logout_name_text',sanitize_text_field($_POST['mo_openid_login_widget_customize_logout_name_text']));
1011
  update_option( 'mo_openid_login_widget_customize_logout_text',sanitize_text_field($_POST['mo_openid_login_widget_customize_logout_text']));
1012
+ update_option('moopenid_logo_check', isset( $_POST['moopenid_logo_check']) ? $_POST['moopenid_logo_check'] : 0);
1013
 
1014
+ }else{
1015
  update_option('moopenid_logo_check', isset( $_POST['moopenid_logo_check']) ? $_POST['moopenid_logo_check'] : 0);
1016
  }
1017
 
1018
+ update_option('mo_login_openid_login_widget_customize_textcolor',$_POST['mo_login_openid_login_widget_customize_textcolor']);
1019
+ update_option('mo_openid_login_theme',$_POST['mo_openid_login_theme'] );
1020
+ update_option( 'mo_openid_message', 'Your settings are saved successfully.' );
1021
 
1022
+ //customization of icons
1023
+ update_option('mo_login_icon_custom_size',$_POST['mo_login_icon_custom_size'] );
1024
+ update_option('mo_login_icon_space',$_POST['mo_login_icon_space'] );
1025
+ update_option('mo_login_icon_custom_width',$_POST['mo_login_icon_custom_width'] );
1026
+ update_option('mo_login_icon_custom_height',$_POST['mo_login_icon_custom_height'] );
1027
+ update_option('mo_openid_login_custom_theme',$_POST['mo_openid_login_custom_theme'] );
1028
+ update_option( 'mo_login_icon_custom_color', $_POST['mo_login_icon_custom_color'] );
1029
+ update_option('mo_login_icon_custom_boundary',$_POST['mo_login_icon_custom_boundary']);
1030
 
1031
+ // avatar
1032
+ update_option( 'moopenid_social_login_avatar', isset( $_POST['moopenid_social_login_avatar']) ? $_POST['moopenid_social_login_avatar'] : 0);
1033
 
1034
 
1035
+ if(isset($_POST['mapping_value_default']))
1036
+ update_option('mo_openid_login_role_mapping', isset( $_POST['mapping_value_default']) ? $_POST['mapping_value_default'] : 'subscriber');
1037
 
1038
+ if(mo_openid_is_customer_valid() && !mo_openid_get_customer_plan('Do It Yourself')){
1039
+ //Attribute collection
1040
+ update_option( 'moopenid_user_attributes', isset( $_POST['moopenid_user_attributes']) ? $_POST['moopenid_user_attributes'] : 0);
1041
+ }
1042
 
1043
+ $this->mo_openid_show_success_message();
1044
  if(!mo_openid_is_customer_registered()) {
1045
+ mo_openid_registeration_modal();
 
 
1046
  }
1047
 
1048
 
1049
+ }else if(isset($_POST['go_to_register'])) {
1050
+ mo_openid_registeration_modal();
1051
+ } else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_woocommerce_field" ) {
1052
+ //woocommerce integration
1053
+ // woocommerce display options
1054
+ if(!mo_openid_restrict_user()) {
1055
+
1056
+ update_option('mo_openid_woocommerce_login_form', isset($_POST['mo_openid_woocommerce_login_form']) ? $_POST['mo_openid_woocommerce_login_form'] : 0);
1057
+ update_option('mo_openid_woocommerce_before_login_form', isset($_POST['mo_openid_woocommerce_before_login_form']) ? $_POST['mo_openid_woocommerce_before_login_form'] : 0);
1058
+ update_option('mo_openid_woocommerce_center_login_form', isset($_POST['mo_openid_woocommerce_center_login_form']) ? $_POST['mo_openid_woocommerce_center_login_form'] : 0);
1059
+ update_option('mo_openid_woocommerce_register_form_start', isset($_POST['mo_openid_woocommerce_register_form_start']) ? $_POST['mo_openid_woocommerce_register_form_start'] : 0);
1060
+ update_option('mo_openid_woocommerce_center_register_form', isset($_POST['mo_openid_woocommerce_center_register_form']) ? $_POST['mo_openid_woocommerce_center_register_form'] : 0);
1061
+ update_option('mo_openid_woocommerce_register_form_end', isset($_POST['mo_openid_woocommerce_register_form_end']) ? $_POST['mo_openid_woocommerce_register_form_end'] : 0);
1062
+ update_option('mo_openid_woocommerce_before_checkout_billing_form', isset($_POST['mo_openid_woocommerce_before_checkout_billing_form']) ? $_POST['mo_openid_woocommerce_before_checkout_billing_form'] : 0);
1063
+ update_option('mo_openid_woocommerce_after_checkout_billing_form', isset($_POST['mo_openid_woocommerce_after_checkout_billing_form']) ? $_POST['mo_openid_woocommerce_after_checkout_billing_form'] : 0);
1064
+ }
1065
 
1066
+ }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_buddypress_field" ){
1067
+
1068
+ //buddypress display options
1069
+ if(!mo_openid_restrict_user()) {
1070
+ update_option('mo_openid_bp_before_register_page', isset($_POST['mo_openid_bp_before_register_page']) ? $_POST['mo_openid_bp_before_register_page'] : 0);
1071
+ update_option('mo_openid_bp_before_account_details_fields', isset($_POST['mo_openid_bp_before_account_details_fields']) ? $_POST['mo_openid_bp_before_account_details_fields'] : 0);
1072
+ update_option('mo_openid_bp_after_register_page', isset($_POST['mo_openid_bp_after_register_page']) ? $_POST['mo_openid_bp_after_register_page'] : 0);
1073
+ }
 
1074
 
 
1075
 
 
 
 
 
 
1076
  }
1077
+ else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_comment_settings" ) {
1078
 
1079
 
1080
+ //commenting
1081
+ update_option( 'mo_openid_social_comment_fb', isset( $_POST['mo_openid_social_comment_fb']) ? $_POST['mo_openid_social_comment_fb'] : 0);
1082
+ update_option( 'mo_openid_social_comment_google', isset( $_POST['mo_openid_social_comment_google']) ? $_POST['mo_openid_social_comment_google'] : 0);
1083
+ update_option( 'mo_openid_social_comment_default', isset( $_POST['mo_openid_social_comment_default']) ? $_POST['mo_openid_social_comment_default'] : 0);
1084
+
1085
+ //comment position
1086
+ update_option( 'mo_openid_social_comment_blogpost', isset( $_POST['mo_openid_social_comment_blogpost']) ? $_POST['mo_openid_social_comment_blogpost'] : 0);
1087
+ update_option( 'mo_openid_social_comment_static', isset( $_POST['mo_openid_social_comment_static']) ? $_POST['mo_openid_social_comment_static'] : 0);
1088
+
1089
+ //comment labels
1090
+ update_option('mo_openid_social_comment_default_label',$_POST['mo_openid_social_comment_default_label'] );
1091
+ update_option('mo_openid_social_comment_fb_label',$_POST['mo_openid_social_comment_fb_label'] );
1092
+ update_option('mo_openid_social_comment_google_label',$_POST['mo_openid_social_comment_google_label'] );
1093
+ update_option('mo_openid_social_comment_heading_label',$_POST['mo_openid_social_comment_heading_label'] );
1094
+
1095
+ update_option( 'mo_openid_message', 'Your settings are saved successfully.' );
1096
+ $this->mo_openid_show_success_message();
1097
+ if(!mo_openid_is_customer_registered()) {
1098
+
1099
+ $redirect = add_query_arg( array('tab' => 'register'), $_SERVER['REQUEST_URI'] );
1100
+ update_option('mo_openid_message', 'Your settings are successfully saved. Please <a href=\" '. $redirect .'\">Register or Login with miniOrange</a> to enable Social Login and Social Sharing.');
1101
+ $this->mo_openid_show_error_message();
1102
+ }
1103
+
1104
+
1105
+ }
1106
+ else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_contact_us_query_option" ) {
1107
+ // Contact Us query
1108
+ $email = $_POST['mo_openid_contact_us_email'];
1109
+ $phone = $_POST['mo_openid_contact_us_phone'];
1110
+ $query = $_POST['mo_openid_contact_us_query'];
1111
+ $customer = new CustomerOpenID();
1112
+ if ( $this->mo_openid_check_empty_or_null( $email ) || $this->mo_openid_check_empty_or_null( $query ) ) {
1113
+ update_option('mo_openid_message', 'Please fill up Email and Query fields to submit your query.');
1114
+ $this->mo_openid_show_error_message();
1115
+ } else {
1116
+ $submited = $customer->submit_contact_us( $email, $phone, $query );
1117
+ if ( $submited == false ) {
1118
+ update_option('mo_openid_message', 'Your query could not be submitted. Please try again.');
1119
+ $this->mo_openid_show_error_message();
1120
+ } else {
1121
+ update_option('mo_openid_message', 'Thanks for getting in touch! We shall get back to you shortly.');
1122
+ $this->mo_openid_show_success_message();
1123
+ }
1124
+ }
1125
  }
1126
+ else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_resend_otp" ) {
1127
+
1128
+ $customer = new CustomerOpenID();
1129
+ $content = json_decode($customer->send_otp_token('EMAIL'), true);
1130
+ if(strcasecmp($content['status'], 'SUCCESS') == 0) {
1131
+ if(get_option('mo_openid_email_otp_count')){
1132
+ update_option('mo_openid_email_otp_count',get_option('mo_openid_email_otp_count') + 1);
1133
+ update_option('mo_openid_message', 'Another One Time Passcode has been sent <b>( ' . get_option('mo_openid_email_otp_count') . ' )</b> for verification to ' . get_option('mo_openid_admin_email'));
1134
+ if(get_option('regi_pop_up') =="yes")
1135
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
1136
+ }else{
1137
+ update_option( 'mo_openid_message', ' A passcode is sent to ' . get_option('mo_openid_admin_email') . '. Please enter the otp here to verify your email.');
1138
+ update_option('mo_openid_email_otp_count',1);
1139
+ if(get_option('regi_pop_up') =="yes")
1140
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
1141
+ }
1142
+ update_option('mo_openid_transactionId',$content['txId']);
1143
+ update_option('mo_openid_registration_status','MO_OTP_DELIVERED_SUCCESS');
1144
+ $this->mo_openid_show_success_message();
1145
+ }else{
1146
 
1147
+ update_option('mo_openid_message','There was an error in sending email. Please click on Resend OTP to try again.');
1148
+ update_option('mo_openid_registration_status','MO_OTP_DELIVERED_FAILURE');
1149
+ $this->mo_openid_show_error_message();
1150
+ if(get_option('regi_pop_up') =="yes")
1151
+ mo_pop_show_otp_verification(get_option('mo_openid_message'));
1152
+ }
1153
 
1154
+ }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_go_back" ){
1155
+ update_option('mo_openid_registration_status','');
1156
+ delete_option('mo_openid_new_registration');
1157
+ delete_option('mo_openid_admin_email');
1158
+ delete_option('mo_openid_sms_otp_count');
1159
+ delete_option('mo_openid_email_otp_count');
1160
+
1161
+ }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_go_back_login" ){
1162
+ update_option('mo_openid_registration_status','');
1163
+ delete_option('mo_openid_admin_email');
1164
+ delete_option('mo_openid_admin_phone');
1165
+ delete_option('mo_openid_admin_password');
1166
+ delete_option('mo_openid_admin_customer_key');
1167
+ delete_option('mo_openid_verify_customer');
1168
+
1169
+ }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_go_back_registration" ){
1170
+ update_option('mo_openid_verify_customer','true');
1171
+
1172
+ }else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_save_other_settings" ){
1173
+
1174
+ update_option( 'mo_openid_google_share_enable', isset( $_POST['mo_openid_google_share_enable']) ? $_POST['mo_openid_google_share_enable'] : 0);
1175
+ update_option( 'mo_openid_facebook_share_enable', isset( $_POST['mo_openid_facebook_share_enable']) ? $_POST['mo_openid_facebook_share_enable'] : 0);
1176
+ update_option( 'mo_openid_linkedin_share_enable', isset( $_POST['mo_openid_linkedin_share_enable']) ? $_POST['mo_openid_linkedin_share_enable'] : 0);
1177
+ update_option( 'mo_openid_reddit_share_enable', isset( $_POST['mo_openid_reddit_share_enable']) ? $_POST['mo_openid_reddit_share_enable'] : 0);
1178
+ update_option( 'mo_openid_pinterest_share_enable', isset( $_POST['mo_openid_pinterest_share_enable']) ? $_POST['mo_openid_pinterest_share_enable'] : 0);
1179
+ update_option( 'mo_openid_twitter_share_enable', isset( $_POST['mo_openid_twitter_share_enable']) ? $_POST['mo_openid_twitter_share_enable'] : 0);
1180
+ update_option( 'mo_openid_tumblr_share_enable', isset( $_POST['mo_openid_tumblr_share_enable']) ? $_POST['mo_openid_tumblr_share_enable'] : 0);
1181
+ update_option( 'mo_openid_delicious_share_enable', isset( $_POST['mo_openid_delicious_share_enable']) ? $_POST['mo_openid_delicious_share_enable'] : 0);
1182
+ update_option( 'mo_openid_vkontakte_share_enable', isset( $_POST['mo_openid_vkontakte_share_enable']) ? $_POST['mo_openid_vkontakte_share_enable'] : 0);
1183
+ update_option( 'mo_openid_stumble_share_enable', isset( $_POST['mo_openid_stumble_share_enable']) ? $_POST['mo_openid_stumble_share_enable'] : 0);
1184
+ update_option( 'mo_openid_odnoklassniki_share_enable', isset( $_POST['mo_openid_odnoklassniki_share_enable']) ? $_POST['mo_openid_odnoklassniki_share_enable'] : 0);
1185
+ update_option( 'mo_openid_digg_share_enable', isset( $_POST['mo_openid_digg_share_enable']) ? $_POST['mo_openid_digg_share_enable'] : 0);
1186
+ update_option( 'mo_openid_pocket_share_enable', isset( $_POST['mo_openid_pocket_share_enable']) ? $_POST['mo_openid_pocket_share_enable'] : 0);
1187
+
1188
+ update_option( 'mo_openid_mail_share_enable', isset( $_POST['mo_openid_mail_share_enable']) ? $_POST['mo_openid_mail_share_enable'] : 0);
1189
+ update_option( 'mo_openid_print_share_enable', isset( $_POST['mo_openid_print_share_enable']) ? $_POST['mo_openid_print_share_enable'] : 0);
1190
+ update_option( 'mo_openid_whatsapp_share_enable', isset( $_POST['mo_openid_whatsapp_share_enable']) ? $_POST['mo_openid_whatsapp_share_enable'] : 0);
1191
+
1192
+ update_option('mo_share_options_enable_home_page',isset( $_POST['mo_share_options_home_page']) ? $_POST['mo_share_options_home_page'] : 0);
1193
+ update_option('mo_share_options_enable_post',isset( $_POST['mo_share_options_post']) ? $_POST['mo_share_options_post'] : 0);
1194
+ update_option('mo_share_options_enable_static_pages',isset( $_POST['mo_share_options_static_pages']) ? $_POST['mo_share_options_static_pages'] : 0);
1195
+ update_option('mo_share_options_wc_sp_summary',isset( $_POST['mo_share_options_wc_sp_summary']) ? $_POST['mo_share_options_wc_sp_summary'] : 0);
1196
+ update_option('mo_share_options_wc_sp_summary_top',isset( $_POST['mo_share_options_wc_sp_summary_top']) ? $_POST['mo_share_options_wc_sp_summary_top'] : 0);
1197
+ update_option('mo_share_options_enable_post_position',$_POST['mo_share_options_enable_post_position'] );
1198
+ update_option('mo_share_options_home_page_position',$_POST['mo_share_options_home_page_position'] );
1199
+ update_option('mo_share_options_static_pages_position',$_POST['mo_share_options_static_pages_position'] );
1200
+ update_option('mo_share_options_bb_forum_position',$_POST['mo_share_options_bb_forum_position'] );
1201
+ update_option('mo_share_options_bb_topic_position',$_POST['mo_share_options_bb_topic_position'] );
1202
+ update_option('mo_share_options_bb_reply_position',$_POST['mo_share_options_bb_reply_position'] );
1203
+ update_option('mo_openid_share_theme',$_POST['mo_openid_share_theme'] );
1204
+ update_option('mo_share_vertical_hide_mobile',isset( $_POST['mo_share_vertical_hide_mobile']) ? $_POST['mo_share_vertical_hide_mobile'] : 0);
1205
+ update_option('mo_share_options_bb_forum',isset( $_POST['mo_share_options_bb_forum']) ? $_POST['mo_share_options_bb_forum'] : 0);
1206
+ update_option('mo_share_options_bb_topic',isset( $_POST['mo_share_options_bb_topic']) ? $_POST['mo_share_options_bb_topic'] : 0);
1207
+ update_option('mo_share_options_bb_reply',isset( $_POST['mo_share_options_bb_reply']) ? $_POST['mo_share_options_bb_reply'] : 0);
1208
+ update_option('mo_openid_share_widget_customize_text',$_POST['mo_openid_share_widget_customize_text'] );
1209
+ update_option('mo_openid_share_widget_customize_text_color',$_POST['mo_openid_share_widget_customize_text_color'] );
1210
+ update_option('mo_openid_share_twitter_username', sanitize_text_field($_POST['mo_openid_share_twitter_username'])) ;
1211
+ update_option('mo_openid_share_email_subject', sanitize_text_field($_POST['mo_openid_share_email_subject'])) ;
1212
+ update_option('mo_openid_share_email_body', sanitize_text_field($_POST['mo_openid_share_email_body'])) ;
1213
+
1214
+ update_option('mo_openid_share_widget_customize_direction_horizontal',isset( $_POST['mo_openid_share_widget_customize_direction_horizontal']) ? $_POST['mo_openid_share_widget_customize_direction_horizontal'] : 0);
1215
+ update_option('mo_openid_share_widget_customize_direction_vertical',isset( $_POST['mo_openid_share_widget_customize_direction_vertical']) ? $_POST['mo_openid_share_widget_customize_direction_vertical'] : 0);
1216
+ update_option('mo_sharing_icon_custom_size',isset( $_POST['mo_sharing_icon_custom_size']) ? $_POST['mo_sharing_icon_custom_size'] : 35);
1217
+ update_option('mo_sharing_icon_custom_color',$_POST['mo_sharing_icon_custom_color'] );
1218
+ update_option('mo_openid_share_custom_theme',$_POST['mo_openid_share_custom_theme'] );
1219
+ update_option('mo_sharing_icon_custom_font',$_POST['mo_sharing_icon_custom_font'] );
1220
+ update_option('mo_sharing_icon_space',$_POST['mo_sharing_icon_space'] );
1221
+ update_option( 'mo_openid_message', 'Your settings are saved successfully.' );
1222
+ $this->mo_openid_show_success_message();
1223
+ if(!mo_openid_is_customer_registered()) {
1224
+ $redirect = add_query_arg( array('tab' => 'register'), $_SERVER['REQUEST_URI'] );
1225
+ update_option('mo_openid_message', 'Your settings are successfully saved. Please <a href=\" '. $redirect .'\">Register or Login with miniOrange</a> to enable Social Login and Social Sharing.');
1226
+ $this->mo_openid_show_error_message();
1227
+ }
1228
+ }
1229
+ else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_add_custom_app" ) {
1230
+ if($this->mo_oauth_check_empty_or_null($_POST['mo_oauth_client_id']) || $this->mo_oauth_check_empty_or_null($_POST['mo_oauth_client_secret'])) {
1231
+ update_option( 'message', 'Please enter valid Client ID and Client Secret.');
1232
+ $this->mo_openid_show_error_message();
1233
+ return;
1234
+ } else{
1235
+ $scope = stripslashes(sanitize_text_field( $_POST['mo_oauth_scope'] ));
1236
+ $clientid = stripslashes(sanitize_text_field( $_POST['mo_oauth_client_id'] ));
1237
+ $clientsecret = stripslashes(sanitize_text_field( $_POST['mo_oauth_client_secret'] ));
1238
+ $appname = stripslashes(sanitize_text_field( $_POST['mo_oauth_app_name'] ));
1239
+
1240
+ if(get_option('mo_openid_apps_list'))
1241
+ $appslist = get_option('mo_openid_apps_list');
1242
+ else
1243
+ $appslist = array();
1244
+
1245
+ $newapp = array();
1246
+
1247
+ foreach($appslist as $key => $currentapp){
1248
+ if($appname == $key){
1249
+ $newapp = $currentapp;
1250
+ break;
1251
+ }
1252
+ }
1253
 
1254
+ $newapp['clientid'] = $clientid;
1255
+ $newapp['clientsecret'] = $clientsecret;
1256
+ $newapp['scope'] = $scope;
1257
+ $newapp['redirecturi'] = site_url().'/openidcallback';
1258
+ if($appname=="facebook"){
1259
+ $authorizeurl = 'https://www.facebook.com/dialog/oauth';
1260
+ $accesstokenurl = 'https://graph.facebook.com/v2.8/oauth/access_token';
1261
+ $resourceownerdetailsurl = 'https://graph.facebook.com/me/?fields=id,name,email,age_range,first_name,gender,last_name,link&access_token=';
1262
+ } else if($appname=="google"){
1263
+ $authorizeurl = "https://accounts.google.com/o/oauth2/auth";
1264
+ $accesstokenurl = "https://www.googleapis.com/oauth2/v3/token";
1265
+ //private static final String VERIFY_TOKEN_ENDPOINT = "https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=";
1266
+ //private static final String GET_USER_INFO_ENDPOINT = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=";
1267
+ $resourceownerdetailsurl = "https://www.googleapis.com/plus/v1/people/me";
1268
+ } else if($appname=="twitter"){
1269
+ $authorizeurl = "https://api.twitter.com/oauth/authorize";
1270
+ $accesstokenurl = "https://api.twitter.com/oauth/access_token";
1271
+ $resourceownerdetailsurl = "https://dev.twitter.com/docs/api/1.1/get/account/verify_credentials?include_email=true";
1272
+ }else {
1273
+ $authorizeurl = stripslashes(sanitize_text_field($_POST['mo_oauth_authorizeurl']));
1274
+ $accesstokenurl = stripslashes(sanitize_text_field($_POST['mo_oauth_accesstokenurl']));
1275
+ $resourceownerdetailsurl = stripslashes(sanitize_text_field($_POST['mo_oauth_resourceownerdetailsurl']));
1276
+ $appname = stripslashes(sanitize_text_field( $_POST['mo_oauth_custom_app_name'] ));
1277
+ }
1278
 
1279
+ $newapp['authorizeurl'] = $authorizeurl;
1280
+ $newapp['accesstokenurl'] = $accesstokenurl;
1281
+ $newapp['resourceownerdetailsurl'] = $resourceownerdetailsurl;
1282
+ $appslist[$appname] = $newapp;
1283
+ update_option('mo_openid_apps_list', $appslist);
1284
+ wp_redirect('admin.php?page=mo_openid_settings&tab=custom_app');
1285
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1286
  }
1287
+ else if( isset( $_POST['option'] ) and $_POST['option'] == "mo_openid_custom_app_attribute_mapping" ) {
1288
+ $appname = stripslashes(sanitize_text_field( $_POST['mo_oauth_app_name'] ));
1289
+ $email_attr = stripslashes(sanitize_text_field( $_POST['mo_oauth_email_attr'] ));
1290
+ $name_attr = stripslashes(sanitize_text_field( $_POST['mo_oauth_name_attr'] ));
1291
+
1292
+ $appslist = get_option('mo_openid_apps_list');
1293
+ foreach($appslist as $key => $currentapp){
1294
+ if($appname == $key){
1295
+ $currentapp['email_attr'] = $email_attr;
1296
+ $currentapp['name_attr'] = $name_attr;
1297
+ $appslist[$key] = $currentapp;
1298
+ break;
1299
+ }
1300
+ }
1301
+ update_option('mo_openid_apps_list', $appslist);
1302
+ update_option( 'message', 'Your settings are saved successfully.' );
1303
+ $this->mo_openid_show_success_message();
1304
+ wp_redirect('admin.php?page=mo_openid_settings&tab=custom_app&action=update&app='.urlencode($appname));
1305
+ }
1306
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1307
 
1308
 
1309
  if(isset($_POST['mo_openid_option']) and $_POST['mo_openid_option']=='mo_openid_skip_feedback'){
1339
  if ( json_last_error() == JSON_ERROR_NONE ) {
1340
  if ( is_array( $submited ) && array_key_exists( 'status', $submited ) && $submited['status'] == 'ERROR' )
1341
  {
1342
+ if( isset($submited['message']))
1343
+ {
1344
+ update_option('mo_openid_message',$submited['message']);
1345
+ $this->mo_openid_show_error_message();
1346
+ }
1347
 
1348
 
1349
  } else
1368
  }
1369
  }
1370
 
1371
+ }
 
1372
  function create_customer(){
1373
  delete_option('mo_openid_sms_otp_count');
1374
  delete_option('mo_openid_email_otp_count');
1411
  update_option('mo_openid_verify_customer', 'true');
1412
  delete_option('mo_openid_new_registration');
1413
  $this->mo_openid_show_error_message();
1414
+ if(get_option('regi_pop_up') =="yes"){
1415
+ update_option("pop_login_msg",get_option("mo_openid_message"));
1416
+ mo_pop_show_verify_password_page();
1417
+
1418
+ }
1419
  }
1420
 
1421
  }
1569
  return false;
1570
  }
1571
  }
 
1572
  new Miniorange_OpenID_SSO;
1573
  ?>
miniorange_openid_sso_settings_page.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  function mo_register_openid() {
3
 
4
 
@@ -21,24 +24,22 @@ function mo_register_openid() {
21
  <table>
22
  <tr><td>
23
 
24
- <img style="margin-top: 25px" src="<?php echo plugin_dir_url(__FILE__);?>includes/images/logo.png">
25
  </td> <td>&nbsp;<a style="text-decoration:none" href="https://www.miniorange.com/social-login-social-sharing/" target="_blank"><h1 style="color: #c9302c">miniOrange Social Login</h1></a></td>
26
-
27
- <td> &nbsp;&nbsp;&nbsp;&nbsp; <a style="margin-top: 23px" class="button"<?php echo $active_tab == 'pricing' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'pricing'), $_SERVER['REQUEST_URI'] ); ?>">Licensing Plans</a>
28
- </td> <td>&nbsp; <a style="margin-top: 23px" class="button" <?php echo $active_tab == 'help' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'privacy_policy'), $_SERVER['REQUEST_URI'] ); ?>">Privacy Policy</a>
29
- </td> <td> &nbsp; <a style="margin-top: 23px" class="button" <?php echo $active_tab == 'help' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'help'), $_SERVER['REQUEST_URI'] ); ?>">FAQ</a>
30
- </td> </tr> </table>
31
-
32
  </div>
33
  <div id="tab">
34
  <h2 class="nav-tab-wrapper">
35
- <a class="nav-tab <?php echo $active_tab == 'login' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'login'), $_SERVER['REQUEST_URI'] ); ?>">Social Login</a>
36
- <a class="nav-tab <?php echo $active_tab == 'custom_app' ? 'nav-tab-active' : ''; ?>" href="admin.php?page=mo_openid_settings&tab=custom_app">Custom App</a>
37
- <a class="nav-tab <?php echo $active_tab == 'email_notif' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'email_notif'), $_SERVER['REQUEST_URI'] ); ?>">Email Notification</a>
38
- <a class="nav-tab <?php echo $active_tab == 'integrations' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'integrations'), $_SERVER['REQUEST_URI'] ); ?>">Advanced Settings</a>
39
- <a class="nav-tab <?php echo $active_tab == 'share' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'share'), $_SERVER['REQUEST_URI'] ); ?>">Social Sharing</a>
40
- <a class="nav-tab <?php echo $active_tab == 'comment' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'comment'), $_SERVER['REQUEST_URI'] ); ?>">Social Comments</a>
41
- <a class="nav-tab <?php echo $active_tab == 'shortcode' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'shortcode'), $_SERVER['REQUEST_URI'] ); ?>">Shortcode</a>
42
  <?php if(!mo_openid_is_customer_registered()) { ?>
43
  <a class="nav-tab <?php echo $active_tab == 'register' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'register'), $_SERVER['REQUEST_URI'] ); ?>">Account Setup</a>
44
  <?php } ?>
@@ -46,15 +47,124 @@ function mo_register_openid() {
46
  </div>
47
 
48
  <script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  function popup_delete_app(selected_app){
50
 
51
  if (confirm("Are you sure you want to delete the app.")) {
52
  location.href='admin.php?page=mo_openid_settings&tab=custom_app&action=delete&app=' + selected_app ;
 
53
  }
54
  }
55
  </script>
56
 
57
-
58
  <div id="mo_openid_settings">
59
 
60
  <div class="mo_container">
@@ -62,7 +172,7 @@ function mo_register_openid() {
62
  <table style="width:100%;">
63
  <tr>
64
  <!--td style="vertical-align:top;width:65%;"-->
65
- <?php
66
  if( $active_tab == 'share' ) {
67
  mo_openid_other_settings();
68
  } else if ( $active_tab == 'register') {
@@ -98,35 +208,35 @@ function mo_register_openid() {
98
  }
99
  else if($active_tab == 'custom_app') {
100
  ?>
101
- <td style="vertical-align:top;width:65%;">
102
- <?php mo_openid_custom_app_config();?>
103
  </td>
104
 
105
  <td style="vertical-align:top;padding-left:1%;">
106
- <?php echo miniorange_openid_support(); ?>
107
  </td></tr></table></div></div>
108
- <?php
109
  }
110
 
111
 
112
 
113
  ?>
114
- <!--/td>
115
  <td style="vertical-align:top;padding-left:1%;">
116
- <?php if($active_tab!='custom_app')
117
  echo miniorange_openid_support(); ?>
118
  </td-->
119
  </table>
120
- <?php
121
-
122
  }
123
 
124
  function mo_openid_show_new_registration_page() {
 
125
  update_option ( 'mo_openid_new_registration', 'true' );
126
  global $current_user;
127
  $current_user = wp_get_current_user();
128
  ?>
129
- <td style="vertical-align:top;width:65%;">
130
  <!--Register with miniOrange-->
131
  <form name="f" method="post" action="" id="register-form">
132
  <input type="hidden" name="option" value="mo_openid_connect_register_customer" />
@@ -186,14 +296,15 @@ function mo_openid_show_new_registration_page() {
186
  </script>
187
  </td>
188
  <td style="vertical-align:top;padding-left:1%;">
189
- <?php echo miniorange_openid_support(); ?>
190
- </td>
191
- <?php
192
  }
193
 
194
  function mo_openid_show_verify_password_page() {
195
- ?>
196
- <td style="vertical-align:top;width:65%;">
 
197
  <!--Verify password with miniOrange-->
198
  <form name="f" method="post" action="">
199
  <input type="hidden" name="option" value="mo_openid_connect_verify_customer" />
@@ -262,23 +373,22 @@ function mo_openid_apps_config() {
262
  <tr>
263
  <td colspan="2">
264
  <h3>Social Login
265
- <input type="submit" name="submit" value="Save" style="float:right; margin-right:2%; margin-top: -3px;width:100px;" class="button button-primary button-large" />
266
  </h3>
267
-
268
  <b>Select applications to enable login for your users. Customize your login icons using a range of shapes, themes and sizes. You can choose different places to display these icons and also customize redirect URL after login.</b>
269
  </td>
270
-
271
  </tr>
272
  </table>
273
-
274
  <table>
275
- <h3>Select Apps</h3>
276
  <p>Select applications to enable social login</p>
277
-
278
- <tr>
279
  <td>
280
  <table style="width:100%">
281
- <tr>
282
  <td>
283
  <div class="tooltip">
284
 
@@ -327,13 +437,12 @@ function mo_openid_apps_config() {
327
  </tr>
328
  </table>
329
  </td>
330
- </tr>
331
-
332
  <tr>
333
  <td>
334
  <br>
335
  <hr>
336
- <h3>Customize Login Icons</h3>
337
  <p>Customize shape, theme and size of social login icons</p>
338
  </td>
339
  </tr>
@@ -345,30 +454,30 @@ function mo_openid_apps_config() {
345
  <b style="margin-left:70px;">Size of Icons</b>
346
  </td>
347
  </tr>
348
- <tr>
349
-
350
  <td class="mo_openid_table_td_checkbox">
351
  <input type="radio" name="mo_openid_login_theme" value="circle" onclick="checkLoginButton();moLoginPreview(document.getElementById('mo_login_icon_size').value ,'circle',setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)"
352
  <?php checked( get_option('mo_openid_login_theme') == 'circle' );?> />Round
353
-
354
  <span style="margin-left:106px;">
355
  <input type="radio" id="mo_openid_login_default_radio" name="mo_openid_login_custom_theme" value="default" onclick="checkLoginButton();moLoginPreview(setSizeOfIcons(), setLoginTheme(),'default',document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)"
356
  <?php checked( get_option('mo_openid_login_custom_theme') == 'default' );?>/>Default
357
-
358
  </span>
359
-
360
  <span style="margin-left:111px;">
361
  <input style="width:50px" onkeyup="moLoginSpaceValidate(this)" id="mo_login_icon_space" name="mo_login_icon_space" type="text" value="<?php echo get_option('mo_login_icon_space')?>" />
362
  <input id="mo_login_space_plus" type="button" value="+" onmouseup="moLoginPreview(setSizeOfIcons() ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
363
  <input id="mo_login_space_minus" type="button" value="-" onmouseup="moLoginPreview(setSizeOfIcons() ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
364
  </span>
365
-
366
-
367
  <span id="commontheme" style="margin-left:115px">
368
  <input style="width:50px" id="mo_login_icon_size" onkeyup="moLoginSizeValidate(this)" name="mo_login_icon_custom_size" type="text" value="<?php echo get_option('mo_login_icon_custom_size')?>" >
369
  <input id="mo_login_size_plus" type="button" value="+" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_size').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
370
  <input id="mo_login_size_minus" type="button" value="-" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_size').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
371
-
372
  </span>
373
  <span style="margin-left:91px" class="longbuttontheme">Width:&nbsp;
374
  <input style="width:50px" id="mo_login_icon_width" onkeyup="moLoginWidthValidate(this)" name="mo_login_icon_custom_width" type="text" value="<?php echo get_option('mo_login_icon_custom_width')?>" >
@@ -376,27 +485,27 @@ function mo_openid_apps_config() {
376
 
377
  <input id="mo_login_width_plus" type="button" value="+" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
378
  <input id="mo_login_width_minus" type="button" value="-" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
379
-
380
  </span>
381
  </span>
382
-
383
-
384
- </td>
385
  </tr>
386
-
387
  <tr>
388
  <td class="mo_openid_table_td_checkbox">
389
  <input type="radio" name="mo_openid_login_theme" value="oval" onclick="checkLoginButton();moLoginPreview(document.getElementById('mo_login_icon_size').value,'oval',setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_size').value,document.getElementById('mo_login_icon_custom_boundary').value )"
390
- <?php checked( get_option('mo_openid_login_theme') == 'oval' );?> />Rounded Edges
391
 
392
  <span style="margin-left:50px;">
393
  <input type="radio" id="mo_openid_login_custom_radio" name="mo_openid_login_custom_theme" value="custom" onclick="checkLoginButton();moLoginPreview(setSizeOfIcons(), setLoginTheme(),'custom',document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)"
394
  <?php checked( get_option('mo_openid_login_custom_theme') == 'custom' );?> />Custom Background*
395
-
396
- </span>
397
-
398
-
399
-
400
  <span style="margin-left:235px" class="longbuttontheme" >Height:
401
  <input style="width:50px" id="mo_login_icon_height" onkeyup="moLoginHeightValidate(this)" name="mo_login_icon_custom_height" type="text" value="<?php echo get_option('mo_login_icon_custom_height')?>" >
402
  <span style="margin-left:1px;">
@@ -407,17 +516,17 @@ function mo_openid_apps_config() {
407
  </span>
408
  </td>
409
  </tr>
410
-
411
  <tr>
412
  <td class="mo_openid_table_td_checkbox">
413
  <input type="radio" name="mo_openid_login_theme" value="square" onclick="checkLoginButton();moLoginPreview(document.getElementById('mo_login_icon_size').value ,'square',setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_size').value,document.getElementById('mo_login_icon_custom_boundary').value )"
414
  <?php checked( get_option('mo_openid_login_theme') == 'square' );?> />Square
415
-
416
  <span style="margin-left:113px;">
417
  <input id="mo_login_icon_custom_color" style="width:135px;" name="mo_login_icon_custom_color" class="color" value="<?php echo get_option('mo_login_icon_custom_color')?>" onchange="moLoginPreview(setSizeOfIcons(), setLoginTheme(),'custom',document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
418
  </span>
419
-
420
-
421
  <span style="margin-left:228px" class="longbuttontheme">Curve:&nbsp;
422
  <input style="width:50px" id="mo_login_icon_custom_boundary" onkeyup="moLoginBoundaryValidate(this)" name="mo_login_icon_custom_boundary" type="text" value=
423
  "<?php echo get_option('mo_login_icon_custom_boundary')?>" />
@@ -425,7 +534,7 @@ function mo_openid_apps_config() {
425
 
426
  <input id="mo_login_boundary_plus" type="button" value="+" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
427
  <input id="mo_login_boundary_minus" type="button" value="-" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
428
- </span>
429
  </span>
430
  </td>
431
  </tr>
@@ -447,7 +556,7 @@ function mo_openid_apps_config() {
447
  <img class="mo_login_icon_preview" id="mo_login_icon_preview_salesforce" src="<?php echo plugins_url( 'includes/images/icons/salesforce.png', __FILE__ )?>" />
448
  <img class="mo_login_icon_preview" id="mo_login_icon_preview_windowslive" src="<?php echo plugins_url( 'includes/images/icons/windowslive.png', __FILE__ )?>" />
449
  </div>
450
-
451
  <div>
452
  <a id="mo_login_button_preview_facebook" class="btn btn-block btn-defaulttheme btn-social btn-facebook btn-custom-size"> <i class="fa fa-facebook"></i><?php
453
  echo get_option('mo_openid_login_button_customize_text'); ?> Facebook</a>
@@ -468,7 +577,7 @@ function mo_openid_apps_config() {
468
  <a id="mo_login_button_preview_windowslive" class="btn btn-block btn-defaulttheme btn-social btn-microsoft btn-custom-size"> <i class="fa fa-windows"></i><?php
469
  echo get_option('mo_openid_login_button_customize_text'); ?> Windows</a>
470
  </div>
471
-
472
  <div>
473
  <i class="mo_custom_login_icon_preview fa fa-facebook" id="mo_custom_login_icon_preview_facebook" style="color:#ffffff;text-align:center;margin-top:5px;"></i>
474
  <i class="mo_custom_login_icon_preview fa fa-google-plus" id="mo_custom_login_icon_preview_google" style="color:#ffffff;text-align:center;margin-top:5px;"></i>
@@ -480,7 +589,7 @@ function mo_openid_apps_config() {
480
  <i class="mo_custom_login_icon_preview fa fa-cloud" id="salesforcecustom" style="margin-bottom:-10px;color:#ffffff;text-align:center;margin-top:5px;" ></i>
481
  <i class="mo_custom_login_icon_preview fa fa-windows" id="mo_custom_login_icon_preview_windows" style="color:#ffffff;text-align:center;margin-top:5px;" ></i>
482
  </div>
483
-
484
  <div>
485
  <a id="mo_custom_login_button_preview_facebook" class="btn btn-block btn-customtheme btn-social btn-custom-size"> <i class="fa fa-facebook"></i><?php
486
  echo get_option('mo_openid_login_button_customize_text'); ?> Facebook</a>
@@ -507,7 +616,7 @@ function mo_openid_apps_config() {
507
  <td><br>
508
  <strong>*NOTE:</strong><br/>Custom background: This will change the background color of login icons.
509
  </td>
510
- </tr>
511
  <tr>
512
  <tr>
513
  <td>
@@ -516,8 +625,8 @@ function mo_openid_apps_config() {
516
  <h3>Customize Text For Social Login Buttons / Icons</h3>
517
  </td>
518
  </tr>
519
-
520
-
521
  <tr>
522
  <td>
523
  <b>Select color for customize text:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -526,10 +635,10 @@ function mo_openid_apps_config() {
526
  </span>
527
  </td>
528
  </tr>
529
-
530
  <tr>
531
  <td><b>Enter text to show above login widget:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
532
-
533
  <input class="mo_openid_table_textbox" style="margin-left:12px;width:50%" type="text" name="mo_openid_login_widget_customize_text" value="<?php echo get_option('mo_openid_login_widget_customize_text'); ?>" /></td>
534
  </tr>
535
  <tr>
@@ -554,16 +663,16 @@ function mo_openid_apps_config() {
554
  </tr>
555
  <tr>
556
  <td><b>Enter text to show as logout link:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
557
- <input class="mo_openid_table_textbox" style="width:50%" type="text" name="mo_openid_login_widget_customize_logout_text"
558
  value="<?php echo get_option('mo_openid_login_widget_customize_logout_text'); ?>" /></td>
559
  </tr>
560
  <?php }?>
561
- <td>
562
- <br>
563
  <hr>
 
564
  <h3>Display Options</h3>
565
  <b>Select the options where you want to display the social login icons</b>
566
- </td>
567
 
568
  <tr>
569
  <td class="mo_openid_table_td_checkbox">
@@ -579,11 +688,39 @@ function mo_openid_apps_config() {
579
  <td class="mo_openid_table_td_checkbox">
580
  <input type="checkbox" id="default_comment_enable" name="mo_openid_default_comment_enable" value="1"
581
  <?php checked( get_option('mo_openid_default_comment_enable') == 1 );?> />Comment Form</td>
582
- </tr>
583
-
 
 
584
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
585
 
 
 
586
 
 
587
  <tr><td>
588
  <br>
589
  <?php echo"NOTE: BuddyPress and Woocomerce display options are available in <a href=" . site_url() ."/wp-admin/admin.php?page=mo_openid_settings&tab=integrations>Advanced Settings</a>.";?>
@@ -591,7 +728,7 @@ function mo_openid_apps_config() {
591
  </td>
592
  </tr>
593
 
594
- <tr>
595
  <td>
596
  <h3>Redirection Options</h3>
597
  <b>Redirect URL after login:</b>
@@ -627,7 +764,7 @@ function mo_openid_apps_config() {
627
  <td>
628
  <input type="radio" id="login_redirect_relativeurl" name="mo_openid_login_redirect" value="relative" <?php checked( get_option('mo_openid_login_redirect') == 'relative' );?> />Relative URL
629
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo site_url();?>
630
- <input type="text" id="login_redirect_url" style="width:50%" name="mo_openid_relative_login_redirect_url" value="<?php echo get_option('mo_openid_relative_login_redirect_url')?>" <?php if(!mo_openid_is_customer_registered()) echo 'disabled'?>/>
631
  </td>
632
  </tr>
633
 
@@ -666,6 +803,7 @@ function mo_openid_apps_config() {
666
  <input type="text" id="logout_redirect_url" style="width:50%" name="mo_openid_logout_redirect_url" value="<?php echo get_option('mo_openid_logout_redirect_url')?>" />
667
  </td>
668
  </tr>
 
669
  <tr>
670
  <td>
671
  <br>
@@ -885,16 +1023,7 @@ function customize_email_verify_img(){
885
  custom_email_verify_img=1;
886
  }
887
  }
888
-
889
-
890
-
891
-
892
  </script>
893
-
894
-
895
-
896
-
897
-
898
  <script>
899
  var tempHorSize = '<?php echo get_option('mo_login_icon_custom_size') ?>';
900
  var tempHorTheme = '<?php echo get_option('mo_openid_login_theme') ?>';
@@ -906,61 +1035,61 @@ function customize_email_verify_img(){
906
  function moLoginIncrement(e,t,r,a,i){
907
  var h,s,c=!1,_=a;s=function(){
908
  "add"==t&&r.value<60?r.value++:"subtract"==t&&r.value>20&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
909
-
910
  function moLoginSpaceIncrement(e,t,r,a,i){
911
  var h,s,c=!1,_=a;s=function(){
912
  "add"==t&&r.value<60?r.value++:"subtract"==t&&r.value>0&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
913
-
914
  function moLoginWidthIncrement(e,t,r,a,i){
915
  var h,s,c=!1,_=a;s=function(){
916
  "add"==t&&r.value<1000?r.value++:"subtract"==t&&r.value>140&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
917
-
918
  function moLoginHeightIncrement(e,t,r,a,i){
919
  var h,s,c=!1,_=a;s=function(){
920
  "add"==t&&r.value<50?r.value++:"subtract"==t&&r.value>35&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
921
-
922
  function moLoginBoundaryIncrement(e,t,r,a,i){
923
  var h,s,c=!1,_=a;s=function(){
924
  "add"==t&&r.value<25?r.value++:"subtract"==t&&r.value>0&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
925
-
926
-
927
  moLoginIncrement(document.getElementById('mo_login_size_plus'), "add", document.getElementById('mo_login_icon_size'), 300, 0.7);
928
  moLoginIncrement(document.getElementById('mo_login_size_minus'), "subtract", document.getElementById('mo_login_icon_size'), 300, 0.7);
929
-
930
  moLoginIncrement(document.getElementById('mo_login_size_plus'), "add", document.getElementById('mo_login_icon_size'), 300, 0.7);
931
  moLoginIncrement(document.getElementById('mo_login_size_minus'), "subtract", document.getElementById('mo_login_icon_size'), 300, 0.7);
932
-
933
  moLoginSpaceIncrement(document.getElementById('mo_login_space_plus'), "add", document.getElementById('mo_login_icon_space'), 300, 0.7);
934
  moLoginSpaceIncrement(document.getElementById('mo_login_space_minus'), "subtract", document.getElementById('mo_login_icon_space'), 300, 0.7);
935
-
936
  moLoginWidthIncrement(document.getElementById('mo_login_width_plus'), "add", document.getElementById('mo_login_icon_width'), 300, 0.7);
937
  moLoginWidthIncrement(document.getElementById('mo_login_width_minus'), "subtract", document.getElementById('mo_login_icon_width'), 300, 0.7);
938
-
939
  moLoginHeightIncrement(document.getElementById('mo_login_height_plus'), "add", document.getElementById('mo_login_icon_height'), 300, 0.7);
940
  moLoginHeightIncrement(document.getElementById('mo_login_height_minus'), "subtract", document.getElementById('mo_login_icon_height'), 300, 0.7);
941
-
942
  moLoginBoundaryIncrement(document.getElementById('mo_login_boundary_plus'), "add", document.getElementById('mo_login_icon_custom_boundary'), 300, 0.7);
943
  moLoginBoundaryIncrement(document.getElementById('mo_login_boundary_minus'), "subtract", document.getElementById('mo_login_icon_custom_boundary'), 300, 0.7);
944
-
945
  function setLoginTheme(){return jQuery('input[name=mo_openid_login_theme]:checked', '#form-apps').val();}
946
  function setLoginCustomTheme(){return jQuery('input[name=mo_openid_login_custom_theme]:checked', '#form-apps').val();}
947
  function setSizeOfIcons(){
948
-
949
  if((jQuery('input[name=mo_openid_login_theme]:checked', '#form-apps').val()) == 'longbutton'){
950
  return document.getElementById('mo_login_icon_width').value;
951
  }else{
952
  return document.getElementById('mo_login_icon_size').value;
953
  }
954
  }
955
- moLoginPreview(setSizeOfIcons(),tempHorTheme,tempHorCustomTheme,tempHorCustomColor,tempHorSpace,tempHorHeight,tempHorBoundary);
956
-
957
-
958
-
959
  function moLoginPreview(t,r,l,p,n,h,k){
960
-
961
  if(l == 'default'){
962
  if(r == 'longbutton'){
963
-
964
  var a = "btn-defaulttheme";
965
  jQuery("."+a).css("width",t+"px");
966
  jQuery("."+a).css("padding-top",(h-29)+"px");
@@ -971,7 +1100,7 @@ function customize_email_verify_img(){
971
  }else{
972
  var a="mo_login_icon_preview";
973
  jQuery("."+a).css("margin-left",(n-4)+"px");
974
-
975
  if(r=="circle"){
976
  jQuery("."+a).css({height:t,width:t});
977
  jQuery("."+a).css("borderRadius","999px");
@@ -986,7 +1115,7 @@ function customize_email_verify_img(){
986
  }
987
  else if(l == 'custom'){
988
  if(r == 'longbutton'){
989
-
990
  var a = "btn-customtheme";
991
  jQuery("."+a).css("width",(t)+"px");
992
  jQuery("."+a).css("padding-top",(h-29)+"px");
@@ -1000,7 +1129,7 @@ function customize_email_verify_img(){
1000
  jQuery("."+a).css({height:t-8,width:t});
1001
  jQuery("."+a).css("padding-top","8px");
1002
  jQuery("."+a).css("margin-left",(n-4)+"px");
1003
-
1004
  if(r=="circle"){
1005
  jQuery("."+a).css("borderRadius","999px");
1006
  }else if(r=="oval"){
@@ -1012,12 +1141,12 @@ function customize_email_verify_img(){
1012
  jQuery("."+a).css("font-size",(t-16)+"px");
1013
  }
1014
  }
1015
-
1016
-
1017
  previewLoginIcons();
1018
-
1019
  }
1020
-
1021
  function checkLoginButton(){
1022
  if(document.getElementById('iconwithtext').checked) {
1023
  if(setLoginCustomTheme() == 'default'){
@@ -1034,7 +1163,7 @@ function customize_email_verify_img(){
1034
  jQuery("#commontheme").hide();
1035
  jQuery(".longbuttontheme").show();
1036
  }else {
1037
-
1038
  if(setLoginCustomTheme() == 'default'){
1039
  jQuery(".mo_login_icon_preview").show();
1040
  jQuery(".btn-defaulttheme").hide();
@@ -1050,8 +1179,8 @@ function customize_email_verify_img(){
1050
  jQuery(".longbuttontheme").hide();
1051
  }
1052
  previewLoginIcons();
1053
- }
1054
-
1055
  function previewLoginIcons() {
1056
  var flag = 0;
1057
  if (document.getElementById('google_enable').checked) {
@@ -1069,9 +1198,9 @@ function customize_email_verify_img(){
1069
  jQuery("#mo_custom_login_icon_preview_google").hide();
1070
  jQuery("#mo_login_button_preview_google").hide();
1071
  jQuery("#mo_custom_login_button_preview_google").hide();
1072
-
1073
  }
1074
-
1075
  if (document.getElementById('facebook_enable').checked) {
1076
  flag = 1;
1077
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
@@ -1105,16 +1234,16 @@ function customize_email_verify_img(){
1105
  jQuery("#mo_login_button_preview_vkontakte").hide();
1106
  jQuery("#mo_custom_login_button_preview_vkontakte").hide();
1107
  }
1108
-
1109
  if (document.getElementById('linkedin_enable').checked) {
1110
  flag = 1;
1111
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1112
  jQuery("#mo_login_icon_preview_linkedin").show();
1113
  if(document.getElementById('mo_openid_login_custom_radio').checked && !document.getElementById('iconwithtext').checked)
1114
  jQuery("#mo_custom_login_icon_preview_linkedin").show();
1115
- if(document.getElementById('mo_openid_login_default_radio').checked && document.getElementById('iconwithtext').checked)
1116
  jQuery("#mo_login_button_preview_linkedin").show();
1117
- if(document.getElementById('mo_openid_login_custom_radio').checked && document.getElementById('iconwithtext').checked)
1118
  jQuery("#mo_custom_login_button_preview_linkedin").show();
1119
  } else if(!document.getElementById('linkedin_enable').checked){
1120
  jQuery("#mo_login_icon_preview_linkedin").hide();
@@ -1122,7 +1251,7 @@ function customize_email_verify_img(){
1122
  jQuery("#mo_login_button_preview_linkedin").hide();
1123
  jQuery("#mo_custom_login_button_preview_linkedin").hide();
1124
  }
1125
-
1126
  if (document.getElementById('instagram_enable').checked) {
1127
  flag = 1;
1128
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
@@ -1139,7 +1268,7 @@ function customize_email_verify_img(){
1139
  jQuery("#mo_login_button_preview_instagram").hide();
1140
  jQuery("#mo_custom_login_button_preview_instagram").hide();
1141
  }
1142
-
1143
  if (document.getElementById('amazon_enable').checked) {
1144
  flag = 1;
1145
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checkedd)
@@ -1158,7 +1287,7 @@ function customize_email_verify_img(){
1158
  jQuery("#mo_login_button_preview_amazon").hide();
1159
  jQuery("#mo_custom_login_button_preview_amazon").hide();
1160
  }
1161
-
1162
  if (document.getElementById('salesforce_enable').checked) {
1163
  flag = 1;
1164
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
@@ -1175,7 +1304,7 @@ function customize_email_verify_img(){
1175
  jQuery("#mo_login_button_preview_salesforce").hide();
1176
  jQuery("#mo_custom_login_button_preview_salesforce").hide();
1177
  }
1178
-
1179
  if (document.getElementById('windowslive_enable').checked) {
1180
  flag = 1;
1181
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
@@ -1192,15 +1321,15 @@ function customize_email_verify_img(){
1192
  jQuery("#mo_login_button_preview_windowslive").hide();
1193
  jQuery("#mo_custom_login_button_preview_windows").hide();
1194
  }
1195
-
1196
-
1197
  if (document.getElementById('twitter_enable').checked) {
1198
  if(flag) {
1199
  jQuery("#no_apps_text").hide();
1200
  } else {
1201
  jQuery("#no_apps_text").show();
1202
  }
1203
-
1204
  flag = 1;
1205
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1206
  jQuery("#mo_login_icon_preview_twitter").show();
@@ -1219,6 +1348,70 @@ function customize_email_verify_img(){
1219
  }
1220
  checkLoginButton();
1221
  </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1222
  <tr>
1223
  <td>
1224
  <hr>
@@ -1273,7 +1466,7 @@ function customize_email_verify_img(){
1273
 
1274
  <h3><table>
1275
  <tr><td><img src="<?php echo plugin_dir_url(__FILE__);?>includes/images/lock1.png"></td>
1276
- <td>&nbsp;&nbsp;&nbsp;&nbsp;Get Standard or Premium plugin to unlock following features</h3> <br> <a style="margin-top: 25px;margin-left: 140px" class="button button-primary button-large" href="https://plugins.miniorange.com/knowledgebase/social-login-social-sharing/" target="_blank">Upgrade Now</a></td>
1277
  </tr>
1278
  </table>
1279
  </div>
@@ -1313,45 +1506,21 @@ function customize_email_verify_img(){
1313
  <b>Enter Privacy Policy URL: </b><br>
1314
  <input type="text" style="width:90%" disabled="disabled" />
1315
  </td>
1316
- </tr> <?php ;} ?>
 
1317
  </table>
1318
- <table class="mo_openid_display_table">
1319
-
1320
- <tr>
1321
- <td colspan="2">
1322
- <hr>
1323
- <p>
1324
- <h3>Add Login Icons</h3>
1325
- You can add login icons in the following areas from <strong>Display Options</strong>. For other areas(widget areas), use Login Widget.
1326
- <ol>
1327
- <li>Default Login Form: This option places login icons below the default login form on wp-login.</li>
1328
- <li>Default Registration Form: This option places login icons below the default registration form.</li>
1329
- <li>Comment Form: This option places login icons above the comment section of all your posts.</li>
1330
- </ol>
1331
-
1332
- <h3>Add Login Icons as Widget</h3>
1333
 
1334
- <ol>
1335
- <li>Go to Appearance->Widgets. Among the available widgets you
1336
- will find miniOrange Social Login Widget, drag it to the widget area where
1337
- you want it to appear.</li>
1338
- <li>Now logout and go to your site. You will see app icon for which you enabled login.</li>
1339
- <li>Click that app icon and login with your existing app account to wordpress.</li>
1340
- </ol>
1341
- </p>
1342
- </td>
1343
- </tr>
1344
- </table>
1345
  </div>
1346
  </form>
 
1347
  <script>
1348
  jQuery(function() {
1349
  jQuery('#tab2').removeClass('disabledTab');
1350
  });
1351
  </script>
1352
  </td>
1353
- <td style="vertical-align:top;padding-left:1%;">
1354
- <?php echo miniorange_openid_support(); ?>
1355
  </td>
1356
  <?php
1357
  }
@@ -1637,9 +1806,6 @@ function mo_openid_email_notification(){
1637
  <td><br /><input disabled type="submit" name="submit" value="Save" style="width:100px;" <?php if(!mo_openid_is_customer_registered()) echo 'disabled'?> class="button button-primary button-large" />
1638
  </td>
1639
  </tr>
1640
-
1641
-
1642
-
1643
  </table>
1644
 
1645
  <br><b>*NOTE: These features require SMTP to be setup.</b>
@@ -1670,18 +1836,17 @@ function mo_openid_app_comment() {
1670
  <tr>
1671
  <td colspan="2">
1672
  <h3>Social Comments
1673
- <input type="submit" name="submit" value="Save" style="width:100px;float:right;margin-right:2%"
1674
- class="button button-primary button-large" />
1675
  </h3>
1676
  <b>Select applications to add Social Comments. These commenting applications will be added to your blog post pages at the location of your comments.</b>
1677
  </td>
1678
  </tr>
1679
- </table>
1680
- <table class="mo_openid_display_table">
 
1681
  <tr>
1682
  <td colspan="2">
1683
- <br/>
1684
- <hr>
1685
  <h3>Select Applications</h3>
1686
  If none of the below are selected, default WordPress comments will only be visible. Only selecting Default WordPress Comments will not result in any changes.
1687
  </td>
@@ -1699,12 +1864,12 @@ function mo_openid_app_comment() {
1699
  <td><input type="checkbox" id="mo_openid_social_comment_google" name="mo_openid_social_comment_google" value="1" <?php checked( get_option('mo_openid_social_comment_google') == 1 );?> /><b>Google+ Comments</b>
1700
  </td>
1701
  <tr>
1702
- </table>
1703
- <table class="mo_openid_display_table">
 
1704
  <tr>
1705
  <td colspan="2">
1706
- <br>
1707
- <hr>
1708
  <h3>Display Options</h3>
1709
  Select the options where you want to add social comments.
1710
  </td>
@@ -1718,12 +1883,12 @@ function mo_openid_app_comment() {
1718
  <td><input type="checkbox" id="mo_openid_social_comment_static" name="mo_openid_social_comment_static" value="1" <?php checked( get_option('mo_openid_social_comment_static') == 1 );?> /><b>Static Pages</b>
1719
  </td>
1720
  <tr>
1721
- </table>
1722
- <table class="mo_openid_display_table">
1723
- <tr>
 
1724
  <td colspan="2">
1725
- <br>
1726
- <hr>
1727
  <h3>Customize Text For Social Comment Labels</h3>
1728
  </td>
1729
  </tr>
@@ -1742,7 +1907,7 @@ function mo_openid_app_comment() {
1742
  <tr>
1743
  <td><b>Comments - Google Label:</b></td>
1744
  <td><input class="mo_openid_table_textbox" type="text" name="mo_openid_social_comment_google_label" value="<?php echo get_option('mo_openid_social_comment_google_label'); ?>" /></td>
1745
- </tr>
1746
 
1747
  <tr>
1748
  <td><br /><input type="submit" name="submit" value="Save" style="width:100px;" class="button button-primary button-large" />
@@ -1768,8 +1933,63 @@ function mo_openid_app_comment() {
1768
  </form>
1769
  </td>
1770
  <td style="vertical-align:top;padding-left:1%;">
1771
- <?php echo miniorange_openid_support(); ?>
1772
  </td>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1773
  <?php
1774
  }
1775
 
@@ -1830,7 +2050,7 @@ function mo_openid_show_otp_verification(){
1830
  </tr>
1831
  </table>
1832
  <br><input type="submit" value="Send OTP" class="button button-primary button-large" />
1833
-
1834
  </form>
1835
  <br>
1836
  <h3>What is an OTP ?</h3>
@@ -1838,9 +2058,8 @@ function mo_openid_show_otp_verification(){
1838
  </div>
1839
  <script>
1840
  jQuery("#phone").intlTelInput();
1841
-
1842
-
1843
  </script>
 
1844
  </td>
1845
  <td style="vertical-align:top;padding-left:1%;">
1846
  <?php echo miniorange_openid_support(); ?>
@@ -1860,9 +2079,7 @@ function mo_openid_other_settings(){
1860
  <table>
1861
  <tr>
1862
  <td colspan="2">
1863
- <h3>Social Sharing
1864
- <input type="submit" name="submit" value="Save" style="width:100px;float:right;margin-right:2%"
1865
- class="button button-primary button-large" />
1866
  </h3>
1867
  <b>Select applications to add share icons. Customize sharing icons by using a range of shapes, themes and sizes to suit to your website. You can also choose different places to display these icons. Additionally, place vertical floating icons on your pages.</b>
1868
  </td>
@@ -1871,11 +2088,11 @@ function mo_openid_other_settings(){
1871
  </table>
1872
 
1873
  <table class="mo_openid_settings_table">
1874
- <h3>Select Social Apps</h3>
1875
  <p>Select applications to enable social sharing</p>
1876
  <tr>
1877
  <td class="mo_openid_table_td_checkbox">
1878
- <table style="width:100%">
1879
  <tr>
1880
  <td style="width:20%">
1881
  <input type="checkbox" id="facebook_share_enable" class="app_enable" name="mo_openid_facebook_share_enable" value="1"
@@ -1966,15 +2183,17 @@ function mo_openid_other_settings(){
1966
  <strong>Whatsapp</strong>
1967
  </td>
1968
  </tr>
1969
- </table>
1970
  </td>
1971
  </tr>
1972
-
 
 
1973
 
1974
 
1975
 
1976
 
1977
- <tr>
1978
  <td>
1979
  <br>
1980
  <hr>
@@ -2131,7 +2350,7 @@ function mo_openid_other_settings(){
2131
  </div>
2132
 
2133
  </td>
2134
- </tr>
2135
 
2136
  <script>
2137
  var tempHorSize = '<?php echo get_option('mo_sharing_icon_custom_size') ?>';
@@ -2475,6 +2694,63 @@ function mo_openid_other_settings(){
2475
  addSelectedApps();
2476
  });
2477
  </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2478
  <tr>
2479
  <td>
2480
  <br/>
@@ -2527,7 +2803,7 @@ function mo_openid_other_settings(){
2527
  value="<?php echo get_option('mo_openid_share_email_body'); ?>" />
2528
  </td>
2529
  </tr>
2530
- <tr>
2531
  <td>
2532
  <br>
2533
  <hr>
@@ -2551,6 +2827,7 @@ function mo_openid_other_settings(){
2551
  Both before and after content
2552
  </td>
2553
  </tr>
 
2554
  <tr>
2555
  <td>
2556
  <input type="checkbox" id="mo_apps_posts" name="mo_share_options_post" value="1" <?php checked( get_option('mo_share_options_enable_post') == '1' );?>>
@@ -2637,7 +2914,7 @@ function mo_openid_other_settings(){
2637
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" id="mo_apps_posts_options" name="mo_share_options_bb_reply_position" value="both" <?php checked( get_option('mo_share_options_bb_reply_position') == 'both' );?>>
2638
  Both before and after content
2639
  </td>
2640
- </tr>
2641
  <tr>
2642
  <td>
2643
  <br/>
@@ -2705,7 +2982,7 @@ jQuery(function() {
2705
  </script>
2706
  </td>
2707
  <td style="vertical-align:top;padding-left:1%;">
2708
- <?php echo miniorange_openid_support(); ?>
2709
  </td>
2710
  <?php
2711
  }
@@ -2831,6 +3108,9 @@ function mo_openid_shortcode_info(){
2831
  }
2832
 
2833
  function mo_openid_pricing_info(){
 
 
 
2834
  ?>
2835
  <td style="vertical-align:top;width:100%;">
2836
  <div class="mo_openid_table_layout">
@@ -3585,11 +3865,15 @@ function mo_openid_custom_app_config(){?>
3585
 
3586
  }elseif (get_option('mo_openid_apps_list')==null){
3587
  echo "<div style='text-align: center'><p>You have not configured any custom apps yet. Please click on <b>Add Application</b> to configure your own app.</p>";
3588
- echo "<br><input type='button' onclick='window.location.href=\"admin.php?page=mo_openid_settings&tab=custom_app&action=add\"' class='button button-primary button-large' style='text-align:center;' value='Add Application'>";
3589
- echo "<br><br><br><br><br><br><br>";
 
3590
 
 
3591
  }?>
3592
  </div>
 
 
3593
  </td>
3594
  <script>
3595
  //ajax call for custom app over default app
@@ -3609,6 +3893,7 @@ function mo_openid_custom_app_config(){?>
3609
  });
3610
  }
3611
  </script>
 
3612
  <?php
3613
  }
3614
 
@@ -3620,11 +3905,14 @@ function add_custom_app(){
3620
  var appname = document.getElementById("mo_oauth_app").value;
3621
  document.getElementById("instructions").innerHTML = "";
3622
  if(appname=="google"){
 
3623
  document.getElementById("instructions").innerHTML = '<br><strong>Instructions to configure Google :</strong><ol><li>Visit the Google website for developers <a href="https://console.developers.google.com/project"target="_blank">console.developers.google.com</a>.</li><li>Open the Google API Console Credentials page and go to API Manager -> Credentials</li><li>From the project drop-down, click on + to Create a new project, enter a name for the project, and optionally, edit the provided Project ID. Click Create.</li><li>On the Credentials menu, select Create credentials, then select OAuth client ID.</li><li>You may be prompted to set a product name on the Consent screen. If so, click Configure consent screen, supply the requested information, and click Save to return to the Credentials screen.</li><li>Select Web Application for the Application Type. Enter <b><?php if(get_option('mo_openid_malform_error')){ echo site_url()."/openidcallback/google";} else {echo site_url()."/openidcallback";}?></b> in Authorized redirect URIs.</li><li>Click Create.</li><li>On the page that appears, copy the client ID and client secret to your clipboard, as you will need them to configure above.</li><li>Enable the Google+ API.<ul><li>In the Dashboard menu, click on ENABLE APIS AND SERVICES.</li><li>Type Google+ in search box, select Google+ API and click on Enable.</li></ul></li><li>Input scope as <b>https://www.googleapis.com/auth/userinfo.profile+ https://www.googleapis.com/auth/user.birthday.read+ https://www.googleapis.com/auth/plus.login+ https://www.googleapis.com/auth/plus.profile.emails.read+ https://www.googleapis.com/auth/userinfo.email+ https://www.googleapis.com/auth/plus.me </b></li><li>Go to Social Login tab to configure the display as well as other login settings.</li></ol>';
3624
  } else if(appname=="facebook"){
 
3625
  document.getElementById("instructions").innerHTML = '<br><strong>Instructions to configure Facebook : </strong><ol><li>Go to Facebook developers console <a href="https://developers.facebook.com/apps/" target="_blank">https://developers.facebook.com/apps/</a>. Login with your facebook developer account</li><li>Click on Create a New App/Add new App button</li><li>Enter <b>Display Name</b> and click on Create App ID</li><li>In Add Product select Facebook Login and click on Setup</li><li>Click on Web. Enter your Site URL. From the left pane, select <b>Facebook Login -> Settings</b>.</li><li>Under <b>Client OAuth Settings</b>, enter <b><?php if(get_option('mo_openid_malform_error')){echo site_url()."/openidcallback/facebook";} else{echo site_url()."/openidcallback";}?></b> in Valid OAuth redirect URIs and click <b>Save Changes</b>.</li><li>Go to <b>Settings -> Basic</b>. Enter <b><?php $str=str_replace('https://','',site_url()); echo $str; ?></b> in <b>App Domain</b>, <b><?php echo site_url(); ?></b> in <b>Website URL </b>, your privacy policy URL in <b>Privacy Policy URL</b> and select <b>Category</b> of your website .</li><li>Go to <b>App Review </b>make your app public. After making app public you will see on right top corner your app status changes from <b>In Development</b> to <b>Live</b>.</li><li>Go to Settings > Basic. Paste your App ID and App Secret provided by Facebook into the fields above.</li><li>Input <b> email, public_profile </b>as scope.</li><li> If you want to access the <b>user_birthday, user_hometown, user_location</b> of a Facebook user, you need to send your app for review to Facebook. For submitting an app for review, click <a target="_blank" href="https://developers.facebook.com/docs/facebook-login/review/how-to-submit ">here</a>. After your app is reviewed, you can add the scopes you have sent for review in the scope above. If your app is not approved or is in the process of getting approved, let the scope be <b>email, public_profile, user_friends</b> </li><li>Click on the Save settings button.</li><li>Go to Social Login tab to configure the display as well as other login settings.</li></ol>';
3626
  } else if(appname=="twitter"){
3627
- document.getElementById("instructions").innerHTML = '<br><strong>Instructions to configure Twitter : </strong><ol><li>Go to <a href="https://apps.twitter.com/" target="_blank">https://apps.twitter.com/</a> and sign in with your twitter account.</li><li>Click on <b>Create New App</b>.</li> <li>Enter Name, description, website name and callback URL.</li><li><b>Callback URL</b> <br><u>Example of public website, </u><br>if your website URL is =><?php echo site_url();?><br> then your callback URL should be => <?php echo site_url();?>/openidcallback<br><u>Example of localhost,</u><br> Twitter may not accept local IPs so try using 127.0.0.1 instead of localhost.<br> Also make sure your Callback URL is prefixed with the website. <br> Go to Settings-> General and replace "localhost" with "127.0.0.1" in <b>WordPress Address (URL)</b> and <b>Site Address (URL)</b> <br>if your website URL is => http://127.0.0.1/wordpress <br> then your callback URL should be => http://127.0.0.1/wordpress/openidcallback</li><li>Twitter might ask you to add your phone number to your profile while creating the app.</li><li>Check the developer agreement checkbox and click on <b>Create your Twitter Application</b>.Under <b>Keys and Access Token</b> Tab, you will find your <b>API Key/Secret</b>.Paste them into the fields above.</li><li>Leave the scope field blank.</li><li><u>Instructions to request email address of a user</u>: The “Request email addresses from users” checkbox is available under the app permissions on apps.twitter.com. Privacy Policy URL and Terms of Service URL fields must be completed in the app settings in order for email address access to function. If enabled, users will be informed via the oauth/authorize dialog that your app can access their email address.If the user does not have an email address on their account, or if the email address is not verified, email will not be returned.</li><li>Go to Permissions tab -> Access. Select <b>Read Only</b> type of access.</li><li>Click on the Update settings button.</li><li>Go to Social Login tab to configure the display as well as other login settings.</li></ol>';
 
3628
  }
3629
 
3630
  }
@@ -3656,9 +3944,9 @@ function add_custom_app(){
3656
  <td><input class="mo_table_textbox" required="" style="height: 27px; width:500px" type="text" name="mo_oauth_client_secret" value=""></td>
3657
  </tr>
3658
  <tr>
3659
- <td><strong>Scope:</strong></td>
3660
- <td><input class="mo_table_textbox" style="height: 27px; width:500px" type="text" name="mo_oauth_scope" value=""></td>
3661
- </tr>
3662
  <tr>
3663
  <td>&nbsp;</td>
3664
  <td><input type="submit" name="submit" value="Save settings" class="button button-primary button-large" />
@@ -3792,6 +4080,7 @@ function miniorange_openid_support(){
3792
  <div class="mo_openid_support_layout">
3793
 
3794
  <h3>Support</h3>
 
3795
  <p>Need any help? Couldn't find an answer in <a href="<?php echo add_query_arg( array('tab' => 'help'), $_SERVER['REQUEST_URI'] ); ?>">FAQ</a>?<br>Just send us a query so we can help you.</p>
3796
  <form method="post" action="">
3797
  <input type="hidden" name="option" value="mo_openid_contact_us_query_option" />
@@ -3807,10 +4096,12 @@ function miniorange_openid_support(){
3807
  </tr>
3808
  </table>
3809
  <br>
3810
- <input type="submit" name="submit" value="Submit Query" style="width:110px;" class="button button-primary button-large" />
 
3811
 
 
3812
  </form>
3813
- <p>If you want custom features in the plugin, just drop an email at <a href="mailto:info@miniorange.com">info@miniorange.com</a>.</p>
3814
  </div>
3815
  </div>
3816
  </div>
@@ -3840,7 +4131,10 @@ function miniorange_openid_support(){
3840
  function moLoginHeightValidate(e){
3841
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
3842
  }
3843
-
 
 
 
3844
  </script>
3845
  <?php
3846
  }
@@ -3880,6 +4174,7 @@ function mo_openid_is_curl_installed() {
3880
  } else
3881
  return 0;
3882
  }
 
3883
  function mo_openid_restrict_user() {
3884
  if((get_option('mo_openid_admin_customer_key')>151617) || (get_option('mo_openid_new_user')==1)|| !mo_openid_is_customer_registered()) {
3885
  return true;
@@ -3888,4 +4183,243 @@ function mo_openid_restrict_user() {
3888
  }
3889
  }
3890
 
3891
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+ ob_start();
3
+
4
+
5
  function mo_register_openid() {
6
 
7
 
24
  <table>
25
  <tr><td>
26
 
27
+ <img id="logo" style="margin-top: 25px" src="<?php echo plugin_dir_url(__FILE__);?>includes/images/logo.png">
28
  </td> <td>&nbsp;<a style="text-decoration:none" href="https://www.miniorange.com/social-login-social-sharing/" target="_blank"><h1 style="color: #c9302c">miniOrange Social Login</h1></a></td>
29
+ <td> &nbsp;&nbsp;&nbsp;&nbsp; <a id="pricing" style="margin-top: 23px" class="button"<?php echo $active_tab == 'pricing' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'pricing'), $_SERVER['REQUEST_URI'] ); ?>">Licensing Plans</a>
30
+ </td> <td>&nbsp; <a id="privacy" style="margin-top: 23px" class="button" <?php echo $active_tab == 'help' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'privacy_policy'), $_SERVER['REQUEST_URI'] ); ?>">Privacy Policy</a>
31
+ </td> <td> &nbsp; <a id="faq" style="margin-top: 23px" class="button" <?php echo $active_tab == 'help' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'help'), $_SERVER['REQUEST_URI'] ); ?>">FAQ</a>
32
+ </td></tr> </table>
 
 
33
  </div>
34
  <div id="tab">
35
  <h2 class="nav-tab-wrapper">
36
+ <a id="social_login" class="nav-tab <?php echo $active_tab == 'login' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'login'), $_SERVER['REQUEST_URI'] ); ?>">Social Login</a>
37
+ <a id="custom_app" class="nav-tab <?php echo $active_tab == 'custom_app' ? 'nav-tab-active' : ''; ?>" href="admin.php?page=mo_openid_settings&tab=custom_app">Custom App</a>
38
+ <a id="email_notif" class="nav-tab <?php echo $active_tab == 'email_notif' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'email_notif'), $_SERVER['REQUEST_URI'] ); ?>">Email Notification</a>
39
+ <a id="integration" class="nav-tab <?php echo $active_tab == 'integrations' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'integrations'), $_SERVER['REQUEST_URI'] ); ?>">Advanced Settings</a>
40
+ <a id="sharing" class="nav-tab <?php echo $active_tab == 'share' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'share'), $_SERVER['REQUEST_URI'] ); ?>">Social Sharing</a>
41
+ <a id="commenting" class="nav-tab <?php echo $active_tab == 'comment' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'comment'), $_SERVER['REQUEST_URI'] ); ?>">Social Comments</a>
42
+ <a id="shortcode" class="nav-tab <?php echo $active_tab == 'shortcode' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'shortcode'), $_SERVER['REQUEST_URI'] ); ?>">Shortcode</a>
43
  <?php if(!mo_openid_is_customer_registered()) { ?>
44
  <a class="nav-tab <?php echo $active_tab == 'register' ? 'nav-tab-active' : ''; ?>" href="<?php echo add_query_arg( array('tab' => 'register'), $_SERVER['REQUEST_URI'] ); ?>">Account Setup</a>
45
  <?php } ?>
47
  </div>
48
 
49
  <script>
50
+ var base_url = '<?php echo site_url();?>';
51
+
52
+ var tour1 = new Tour({
53
+ name: "tour1",
54
+ steps: [
55
+ {
56
+ element: "#social_login",
57
+ title: "Social Login",
58
+ content: "Enable one click login to your website using various Social Login applications.",
59
+ backdrop:'body',
60
+ backdropPadding:'6',
61
+ onNext: function() {
62
+ window.location = base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=custom_app'
63
+ }
64
+ },{
65
+ element: "#custom_app",
66
+ title: "Custom App",
67
+ content: "Configure your own custom apps for social login applications.",
68
+ backdrop:'body',
69
+ backdropPadding:'6',
70
+ onNext: function() {
71
+ window.location = base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=share'
72
+ }
73
+
74
+ },{
75
+ element: "#sharing",
76
+ title: "Social Sharing",
77
+ content: "Increase your popularity by letting users share your posts and pages on their preferred Social platform.",
78
+ backdrop:'body',
79
+ backdropPadding:'6',
80
+ onNext: function() {
81
+ window.location = base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=comment'
82
+ }
83
+
84
+ }, {
85
+ element: "#commenting",
86
+ title: "Social Commenting",
87
+ content: "Allow users to comment without login on your website using Facebook and Google comment boxes.",
88
+ backdrop:'body',
89
+ backdropPadding:'6',
90
+ onNext: function() {
91
+ window.location = base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=shortcode'
92
+ }
93
+ },
94
+ {
95
+ element: "#shortcode",
96
+ title: "Shortcodes",
97
+ content: "Add login, sharing and comments anywhere on your website using Shortcodes.",
98
+ backdrop:'body',
99
+ backdropPadding:'6',
100
+ onNext: function() {
101
+ window.location = base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=integrations'
102
+ }
103
+ }
104
+ ,
105
+ {
106
+ element: "#integration",
107
+ title: "Premium Features",
108
+ content: "Use our BuddyPress and WooCommerce integrations for map user information. Add users to MailChimp lists as they login.",
109
+ backdrop:'body',
110
+ backdropPadding:'6',
111
+ onNext: function() {
112
+ window.location = base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=pricing'
113
+ }
114
+ },
115
+ {
116
+ element: "#pricing",
117
+ title: "Licensing Plans",
118
+ content: "Check out more features to choose the best plan for you.",
119
+ backdrop:'body',
120
+ backdropPadding:'6',
121
+
122
+ }
123
+ ],
124
+ template: function () {
125
+ return (
126
+ tour1.getCurrentStep()===6 // Is this the last step?
127
+ ? "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:10%;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\"><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:left;margin-top:30%;margin-left:30%;\">"+ (tour1.getCurrentStep()+1)+"/7</h4></div></div>&nbsp;&nbsp; <button class=\"button button-primary button-large\" data-role=\"end\" onclick=\"end_tour1();\">Done</button> </div> </div>"
128
+ : "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:0px;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\" style=\"width: 100%;\"> <button class=\"mo2f_tour_btn mo2f_tour_btn-sm mo2f_tour_btn-secondary mo2f_tour_btn_next-success\" style=\"width: 32%;height: 0%;\" data-role=\"next\">Next &raquo;</button><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:right;margin-left: 53%;\">"+ (tour1.getCurrentStep()+1)+"/7</h4></div></div></div></div>"
129
+ );
130
+ }
131
+ });
132
+
133
+ var temp = "<?php echo get_option('mo_openid_tour'); ?>";
134
+ if(temp=="0") { // Initialize the tour
135
+ tour1.init();
136
+ // Start the tour
137
+ tour1.start();
138
+ }
139
+
140
+ function end_tour() {
141
+ tour.end();
142
+ tour1.end();
143
+ }
144
+ function end_tour1() {
145
+ var aassd = "plugin_tour";
146
+ jQuery.ajax({
147
+ url:base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=pricing', //the page containing php script
148
+ method: "POST", //request type,
149
+ data: {update_tour_status: aassd},
150
+ dataType: 'text',
151
+ success:function(result){
152
+
153
+ }
154
+ });
155
+ window.location = base_url+'/wp-admin/admin.php?page=mo_openid_settings&tab=pricing'
156
+
157
+ }
158
+
159
  function popup_delete_app(selected_app){
160
 
161
  if (confirm("Are you sure you want to delete the app.")) {
162
  location.href='admin.php?page=mo_openid_settings&tab=custom_app&action=delete&app=' + selected_app ;
163
+
164
  }
165
  }
166
  </script>
167
 
 
168
  <div id="mo_openid_settings">
169
 
170
  <div class="mo_container">
172
  <table style="width:100%;">
173
  <tr>
174
  <!--td style="vertical-align:top;width:65%;"-->
175
+ <?php
176
  if( $active_tab == 'share' ) {
177
  mo_openid_other_settings();
178
  } else if ( $active_tab == 'register') {
208
  }
209
  else if($active_tab == 'custom_app') {
210
  ?>
211
+ <td style="vertical-align:top;width:65%;">
212
+ <?php mo_openid_custom_app_config();?>
213
  </td>
214
 
215
  <td style="vertical-align:top;padding-left:1%;">
216
+ <?php echo miniorange_openid_support(); ?>
217
  </td></tr></table></div></div>
218
+ <?php
219
  }
220
 
221
 
222
 
223
  ?>
224
+ <!--/td>
225
  <td style="vertical-align:top;padding-left:1%;">
226
+ <?php if($active_tab!='custom_app')
227
  echo miniorange_openid_support(); ?>
228
  </td-->
229
  </table>
230
+ <?php
 
231
  }
232
 
233
  function mo_openid_show_new_registration_page() {
234
+ update_option('regi_pop_up','no');
235
  update_option ( 'mo_openid_new_registration', 'true' );
236
  global $current_user;
237
  $current_user = wp_get_current_user();
238
  ?>
239
+ <td style="vertical-align:top;width:65%;">
240
  <!--Register with miniOrange-->
241
  <form name="f" method="post" action="" id="register-form">
242
  <input type="hidden" name="option" value="mo_openid_connect_register_customer" />
296
  </script>
297
  </td>
298
  <td style="vertical-align:top;padding-left:1%;">
299
+ <?php echo miniorange_openid_support(); ?>
300
+ </td>
301
+ <?php
302
  }
303
 
304
  function mo_openid_show_verify_password_page() {
305
+ update_option('regi_pop_up','no');
306
+ ?>
307
+ <td style="vertical-align:top;width:65%;">
308
  <!--Verify password with miniOrange-->
309
  <form name="f" method="post" action="">
310
  <input type="hidden" name="option" value="mo_openid_connect_verify_customer" />
373
  <tr>
374
  <td colspan="2">
375
  <h3>Social Login
376
+ <input type="submit" name="submit" id="save_opt" value="Save" style="float:right; margin-right:2%; margin-top: -3px;width:100px;" class="button button-primary button-large" onclick="end_tour();" /> <button type="button" id="mo_openid_restart_tour" class="button button-primary button-large" style="float:right; margin-right:2%; margin-top: -3px;width:20%" onclick="restart_tour();"><i class="fa fa-refresh"></i> Social Login Tour</button>
377
  </h3>
 
378
  <b>Select applications to enable login for your users. Customize your login icons using a range of shapes, themes and sizes. You can choose different places to display these icons and also customize redirect URL after login.</b>
379
  </td>
380
+
381
  </tr>
382
  </table>
383
+
384
  <table>
385
+ <tr id="select_app"><td><table style="width: 100%"> <h3>Select Apps</h3>
386
  <p>Select applications to enable social login</p>
387
+
388
+ <tr >
389
  <td>
390
  <table style="width:100%">
391
+ <tr >
392
  <td>
393
  <div class="tooltip">
394
 
437
  </tr>
438
  </table>
439
  </td>
440
+ </tr></table></td></tr>
 
441
  <tr>
442
  <td>
443
  <br>
444
  <hr>
445
+ <tr id="custom_icon"><td><table style="width:100%"> <h3>Customize Login Icons</h3>
446
  <p>Customize shape, theme and size of social login icons</p>
447
  </td>
448
  </tr>
454
  <b style="margin-left:70px;">Size of Icons</b>
455
  </td>
456
  </tr>
457
+ <tr >
458
+
459
  <td class="mo_openid_table_td_checkbox">
460
  <input type="radio" name="mo_openid_login_theme" value="circle" onclick="checkLoginButton();moLoginPreview(document.getElementById('mo_login_icon_size').value ,'circle',setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)"
461
  <?php checked( get_option('mo_openid_login_theme') == 'circle' );?> />Round
462
+
463
  <span style="margin-left:106px;">
464
  <input type="radio" id="mo_openid_login_default_radio" name="mo_openid_login_custom_theme" value="default" onclick="checkLoginButton();moLoginPreview(setSizeOfIcons(), setLoginTheme(),'default',document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)"
465
  <?php checked( get_option('mo_openid_login_custom_theme') == 'default' );?>/>Default
466
+
467
  </span>
468
+
469
  <span style="margin-left:111px;">
470
  <input style="width:50px" onkeyup="moLoginSpaceValidate(this)" id="mo_login_icon_space" name="mo_login_icon_space" type="text" value="<?php echo get_option('mo_login_icon_space')?>" />
471
  <input id="mo_login_space_plus" type="button" value="+" onmouseup="moLoginPreview(setSizeOfIcons() ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
472
  <input id="mo_login_space_minus" type="button" value="-" onmouseup="moLoginPreview(setSizeOfIcons() ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
473
  </span>
474
+
475
+
476
  <span id="commontheme" style="margin-left:115px">
477
  <input style="width:50px" id="mo_login_icon_size" onkeyup="moLoginSizeValidate(this)" name="mo_login_icon_custom_size" type="text" value="<?php echo get_option('mo_login_icon_custom_size')?>" >
478
  <input id="mo_login_size_plus" type="button" value="+" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_size').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
479
  <input id="mo_login_size_minus" type="button" value="-" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_size').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
480
+
481
  </span>
482
  <span style="margin-left:91px" class="longbuttontheme">Width:&nbsp;
483
  <input style="width:50px" id="mo_login_icon_width" onkeyup="moLoginWidthValidate(this)" name="mo_login_icon_custom_width" type="text" value="<?php echo get_option('mo_login_icon_custom_width')?>" >
485
 
486
  <input id="mo_login_width_plus" type="button" value="+" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
487
  <input id="mo_login_width_minus" type="button" value="-" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value ,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
488
+
489
  </span>
490
  </span>
491
+
492
+
493
+ </td>
494
  </tr>
495
+
496
  <tr>
497
  <td class="mo_openid_table_td_checkbox">
498
  <input type="radio" name="mo_openid_login_theme" value="oval" onclick="checkLoginButton();moLoginPreview(document.getElementById('mo_login_icon_size').value,'oval',setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_size').value,document.getElementById('mo_login_icon_custom_boundary').value )"
499
+ <?php checked( get_option('mo_openid_login_theme') == 'oval' );?> />Rounded Edges
500
 
501
  <span style="margin-left:50px;">
502
  <input type="radio" id="mo_openid_login_custom_radio" name="mo_openid_login_custom_theme" value="custom" onclick="checkLoginButton();moLoginPreview(setSizeOfIcons(), setLoginTheme(),'custom',document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)"
503
  <?php checked( get_option('mo_openid_login_custom_theme') == 'custom' );?> />Custom Background*
504
+
505
+ </span>
506
+
507
+
508
+
509
  <span style="margin-left:235px" class="longbuttontheme" >Height:
510
  <input style="width:50px" id="mo_login_icon_height" onkeyup="moLoginHeightValidate(this)" name="mo_login_icon_custom_height" type="text" value="<?php echo get_option('mo_login_icon_custom_height')?>" >
511
  <span style="margin-left:1px;">
516
  </span>
517
  </td>
518
  </tr>
519
+
520
  <tr>
521
  <td class="mo_openid_table_td_checkbox">
522
  <input type="radio" name="mo_openid_login_theme" value="square" onclick="checkLoginButton();moLoginPreview(document.getElementById('mo_login_icon_size').value ,'square',setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_size').value,document.getElementById('mo_login_icon_custom_boundary').value )"
523
  <?php checked( get_option('mo_openid_login_theme') == 'square' );?> />Square
524
+
525
  <span style="margin-left:113px;">
526
  <input id="mo_login_icon_custom_color" style="width:135px;" name="mo_login_icon_custom_color" class="color" value="<?php echo get_option('mo_login_icon_custom_color')?>" onchange="moLoginPreview(setSizeOfIcons(), setLoginTheme(),'custom',document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_custom_boundary').value)" >
527
  </span>
528
+
529
+
530
  <span style="margin-left:228px" class="longbuttontheme">Curve:&nbsp;
531
  <input style="width:50px" id="mo_login_icon_custom_boundary" onkeyup="moLoginBoundaryValidate(this)" name="mo_login_icon_custom_boundary" type="text" value=
532
  "<?php echo get_option('mo_login_icon_custom_boundary')?>" />
534
 
535
  <input id="mo_login_boundary_plus" type="button" value="+" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
536
  <input id="mo_login_boundary_minus" type="button" value="-" onmouseup="moLoginPreview(document.getElementById('mo_login_icon_width').value,setLoginTheme(),setLoginCustomTheme(),document.getElementById('mo_login_icon_custom_color').value,document.getElementById('mo_login_icon_space').value,document.getElementById('mo_login_icon_height').value,document.getElementById('mo_login_icon_custom_boundary').value)" />
537
+ </span>
538
  </span>
539
  </td>
540
  </tr>
556
  <img class="mo_login_icon_preview" id="mo_login_icon_preview_salesforce" src="<?php echo plugins_url( 'includes/images/icons/salesforce.png', __FILE__ )?>" />
557
  <img class="mo_login_icon_preview" id="mo_login_icon_preview_windowslive" src="<?php echo plugins_url( 'includes/images/icons/windowslive.png', __FILE__ )?>" />
558
  </div>
559
+
560
  <div>
561
  <a id="mo_login_button_preview_facebook" class="btn btn-block btn-defaulttheme btn-social btn-facebook btn-custom-size"> <i class="fa fa-facebook"></i><?php
562
  echo get_option('mo_openid_login_button_customize_text'); ?> Facebook</a>
577
  <a id="mo_login_button_preview_windowslive" class="btn btn-block btn-defaulttheme btn-social btn-microsoft btn-custom-size"> <i class="fa fa-windows"></i><?php
578
  echo get_option('mo_openid_login_button_customize_text'); ?> Windows</a>
579
  </div>
580
+
581
  <div>
582
  <i class="mo_custom_login_icon_preview fa fa-facebook" id="mo_custom_login_icon_preview_facebook" style="color:#ffffff;text-align:center;margin-top:5px;"></i>
583
  <i class="mo_custom_login_icon_preview fa fa-google-plus" id="mo_custom_login_icon_preview_google" style="color:#ffffff;text-align:center;margin-top:5px;"></i>
589
  <i class="mo_custom_login_icon_preview fa fa-cloud" id="salesforcecustom" style="margin-bottom:-10px;color:#ffffff;text-align:center;margin-top:5px;" ></i>
590
  <i class="mo_custom_login_icon_preview fa fa-windows" id="mo_custom_login_icon_preview_windows" style="color:#ffffff;text-align:center;margin-top:5px;" ></i>
591
  </div>
592
+
593
  <div>
594
  <a id="mo_custom_login_button_preview_facebook" class="btn btn-block btn-customtheme btn-social btn-custom-size"> <i class="fa fa-facebook"></i><?php
595
  echo get_option('mo_openid_login_button_customize_text'); ?> Facebook</a>
616
  <td><br>
617
  <strong>*NOTE:</strong><br/>Custom background: This will change the background color of login icons.
618
  </td>
619
+ </tr></table></td></tr>
620
  <tr>
621
  <tr>
622
  <td>
625
  <h3>Customize Text For Social Login Buttons / Icons</h3>
626
  </td>
627
  </tr>
628
+
629
+
630
  <tr>
631
  <td>
632
  <b>Select color for customize text:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
635
  </span>
636
  </td>
637
  </tr>
638
+
639
  <tr>
640
  <td><b>Enter text to show above login widget:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
641
+
642
  <input class="mo_openid_table_textbox" style="margin-left:12px;width:50%" type="text" name="mo_openid_login_widget_customize_text" value="<?php echo get_option('mo_openid_login_widget_customize_text'); ?>" /></td>
643
  </tr>
644
  <tr>
663
  </tr>
664
  <tr>
665
  <td><b>Enter text to show as logout link:</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
666
+ <input class="mo_openid_table_textbox" style="width:50%" type="text" name="mo_openid_login_widget_customize_logout_text"
667
  value="<?php echo get_option('mo_openid_login_widget_customize_logout_text'); ?>" /></td>
668
  </tr>
669
  <?php }?>
670
+ <tr><td>
 
671
  <hr>
672
+ <tr id="display_opt"><td><table style="width:100%">
673
  <h3>Display Options</h3>
674
  <b>Select the options where you want to display the social login icons</b>
675
+ </td></tr>
676
 
677
  <tr>
678
  <td class="mo_openid_table_td_checkbox">
688
  <td class="mo_openid_table_td_checkbox">
689
  <input type="checkbox" id="default_comment_enable" name="mo_openid_default_comment_enable" value="1"
690
  <?php checked( get_option('mo_openid_default_comment_enable') == 1 );?> />Comment Form</td>
691
+ </tr>
692
+ <tr><td>
693
+ <h3><a id="openid_login_shortcode_title" aria-expanded="false" >Add Login Icons</a></h3>
694
+ <div hidden="" id="openid_login_shortcode" style="font-size:13px !important">
695
 
696
+ You can add login icons in the following areas from <strong>Display Options</strong>. For other areas(widget areas), use Login Widget.
697
+ <ol>
698
+ <li>Default Login Form: This option places login icons below the default login form on wp-login.</li>
699
+ <li>Default Registration Form: This option places login icons below the default registration form.</li>
700
+ <li>Comment Form: This option places login icons above the comment section of all your posts.</li>
701
+ </ol>
702
+ </div>
703
+ </td></tr>
704
+ <tr><td>
705
+ <h3><a id="openid_sharing_shortcode_title" >Add Login Icons as Widget</a></h3>
706
+ <div hidden="" id="openid_sharing_shortcode" style="font-size:13px !important">
707
+ <ol>
708
+ <li>Go to Appearance->Widgets. Among the available widgets you
709
+ will find miniOrange Social Login Widget, drag it to the widget area where
710
+ you want it to appear.</li>
711
+ <li>Now logout and go to your site. You will see app icon for which you enabled login.</li>
712
+ <li>Click that app icon and login with your existing app account to wordpress.</li>
713
+ </ol>
714
+ </div>
715
+ </td></tr>
716
+ <tr><td>
717
+ <h3><a id="openid_comments_shortcode_title" >Using Shortcode</a></h3>
718
+ <div hidden="" id="openid_comments_shortcode" style="font-size:13px !important">
719
 
720
+ <?php echo"* Detailed information about how to use shortcode is given in <a href=" . site_url() ."/wp-admin/admin.php?page=mo_openid_settings&tab=shortcode>Shortcode</a> tab";?>
721
+ </div>
722
 
723
+ </td></tr> </table></td></tr>
724
  <tr><td>
725
  <br>
726
  <?php echo"NOTE: BuddyPress and Woocomerce display options are available in <a href=" . site_url() ."/wp-admin/admin.php?page=mo_openid_settings&tab=integrations>Advanced Settings</a>.";?>
728
  </td>
729
  </tr>
730
 
731
+ <tr id="redirect_opt"><td><table style="width: 100%"><tr>
732
  <td>
733
  <h3>Redirection Options</h3>
734
  <b>Redirect URL after login:</b>
764
  <td>
765
  <input type="radio" id="login_redirect_relativeurl" name="mo_openid_login_redirect" value="relative" <?php checked( get_option('mo_openid_login_redirect') == 'relative' );?> />Relative URL
766
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo site_url();?>
767
+ <input type="text" id="login_redirect_url" style="width:50%" name="mo_openid_relative_login_redirect_url" value="<?php echo get_option('mo_openid_relative_login_redirect_url')?>" />
768
  </td>
769
  </tr>
770
 
803
  <input type="text" id="logout_redirect_url" style="width:50%" name="mo_openid_logout_redirect_url" value="<?php echo get_option('mo_openid_logout_redirect_url')?>" />
804
  </td>
805
  </tr>
806
+ </table></td></tr>
807
  <tr>
808
  <td>
809
  <br>
1023
  custom_email_verify_img=1;
1024
  }
1025
  }
 
 
 
 
1026
  </script>
 
 
 
 
 
1027
  <script>
1028
  var tempHorSize = '<?php echo get_option('mo_login_icon_custom_size') ?>';
1029
  var tempHorTheme = '<?php echo get_option('mo_openid_login_theme') ?>';
1035
  function moLoginIncrement(e,t,r,a,i){
1036
  var h,s,c=!1,_=a;s=function(){
1037
  "add"==t&&r.value<60?r.value++:"subtract"==t&&r.value>20&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
1038
+
1039
  function moLoginSpaceIncrement(e,t,r,a,i){
1040
  var h,s,c=!1,_=a;s=function(){
1041
  "add"==t&&r.value<60?r.value++:"subtract"==t&&r.value>0&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
1042
+
1043
  function moLoginWidthIncrement(e,t,r,a,i){
1044
  var h,s,c=!1,_=a;s=function(){
1045
  "add"==t&&r.value<1000?r.value++:"subtract"==t&&r.value>140&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
1046
+
1047
  function moLoginHeightIncrement(e,t,r,a,i){
1048
  var h,s,c=!1,_=a;s=function(){
1049
  "add"==t&&r.value<50?r.value++:"subtract"==t&&r.value>35&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
1050
+
1051
  function moLoginBoundaryIncrement(e,t,r,a,i){
1052
  var h,s,c=!1,_=a;s=function(){
1053
  "add"==t&&r.value<25?r.value++:"subtract"==t&&r.value>0&&r.value--,h=setTimeout(s,_),_>20&&(_*=i),c||(document.onmouseup=function(){clearTimeout(h),document.onmouseup=null,c=!1,_=a},c=!0)},e.onmousedown=s}
1054
+
1055
+
1056
  moLoginIncrement(document.getElementById('mo_login_size_plus'), "add", document.getElementById('mo_login_icon_size'), 300, 0.7);
1057
  moLoginIncrement(document.getElementById('mo_login_size_minus'), "subtract", document.getElementById('mo_login_icon_size'), 300, 0.7);
1058
+
1059
  moLoginIncrement(document.getElementById('mo_login_size_plus'), "add", document.getElementById('mo_login_icon_size'), 300, 0.7);
1060
  moLoginIncrement(document.getElementById('mo_login_size_minus'), "subtract", document.getElementById('mo_login_icon_size'), 300, 0.7);
1061
+
1062
  moLoginSpaceIncrement(document.getElementById('mo_login_space_plus'), "add", document.getElementById('mo_login_icon_space'), 300, 0.7);
1063
  moLoginSpaceIncrement(document.getElementById('mo_login_space_minus'), "subtract", document.getElementById('mo_login_icon_space'), 300, 0.7);
1064
+
1065
  moLoginWidthIncrement(document.getElementById('mo_login_width_plus'), "add", document.getElementById('mo_login_icon_width'), 300, 0.7);
1066
  moLoginWidthIncrement(document.getElementById('mo_login_width_minus'), "subtract", document.getElementById('mo_login_icon_width'), 300, 0.7);
1067
+
1068
  moLoginHeightIncrement(document.getElementById('mo_login_height_plus'), "add", document.getElementById('mo_login_icon_height'), 300, 0.7);
1069
  moLoginHeightIncrement(document.getElementById('mo_login_height_minus'), "subtract", document.getElementById('mo_login_icon_height'), 300, 0.7);
1070
+
1071
  moLoginBoundaryIncrement(document.getElementById('mo_login_boundary_plus'), "add", document.getElementById('mo_login_icon_custom_boundary'), 300, 0.7);
1072
  moLoginBoundaryIncrement(document.getElementById('mo_login_boundary_minus'), "subtract", document.getElementById('mo_login_icon_custom_boundary'), 300, 0.7);
1073
+
1074
  function setLoginTheme(){return jQuery('input[name=mo_openid_login_theme]:checked', '#form-apps').val();}
1075
  function setLoginCustomTheme(){return jQuery('input[name=mo_openid_login_custom_theme]:checked', '#form-apps').val();}
1076
  function setSizeOfIcons(){
1077
+
1078
  if((jQuery('input[name=mo_openid_login_theme]:checked', '#form-apps').val()) == 'longbutton'){
1079
  return document.getElementById('mo_login_icon_width').value;
1080
  }else{
1081
  return document.getElementById('mo_login_icon_size').value;
1082
  }
1083
  }
1084
+ moLoginPreview(setSizeOfIcons(),tempHorTheme,tempHorCustomTheme,tempHorCustomColor,tempHorSpace,tempHorHeight,tempHorBoundary);
1085
+
1086
+
1087
+
1088
  function moLoginPreview(t,r,l,p,n,h,k){
1089
+
1090
  if(l == 'default'){
1091
  if(r == 'longbutton'){
1092
+
1093
  var a = "btn-defaulttheme";
1094
  jQuery("."+a).css("width",t+"px");
1095
  jQuery("."+a).css("padding-top",(h-29)+"px");
1100
  }else{
1101
  var a="mo_login_icon_preview";
1102
  jQuery("."+a).css("margin-left",(n-4)+"px");
1103
+
1104
  if(r=="circle"){
1105
  jQuery("."+a).css({height:t,width:t});
1106
  jQuery("."+a).css("borderRadius","999px");
1115
  }
1116
  else if(l == 'custom'){
1117
  if(r == 'longbutton'){
1118
+
1119
  var a = "btn-customtheme";
1120
  jQuery("."+a).css("width",(t)+"px");
1121
  jQuery("."+a).css("padding-top",(h-29)+"px");
1129
  jQuery("."+a).css({height:t-8,width:t});
1130
  jQuery("."+a).css("padding-top","8px");
1131
  jQuery("."+a).css("margin-left",(n-4)+"px");
1132
+
1133
  if(r=="circle"){
1134
  jQuery("."+a).css("borderRadius","999px");
1135
  }else if(r=="oval"){
1141
  jQuery("."+a).css("font-size",(t-16)+"px");
1142
  }
1143
  }
1144
+
1145
+
1146
  previewLoginIcons();
1147
+
1148
  }
1149
+
1150
  function checkLoginButton(){
1151
  if(document.getElementById('iconwithtext').checked) {
1152
  if(setLoginCustomTheme() == 'default'){
1163
  jQuery("#commontheme").hide();
1164
  jQuery(".longbuttontheme").show();
1165
  }else {
1166
+
1167
  if(setLoginCustomTheme() == 'default'){
1168
  jQuery(".mo_login_icon_preview").show();
1169
  jQuery(".btn-defaulttheme").hide();
1179
  jQuery(".longbuttontheme").hide();
1180
  }
1181
  previewLoginIcons();
1182
+ }
1183
+
1184
  function previewLoginIcons() {
1185
  var flag = 0;
1186
  if (document.getElementById('google_enable').checked) {
1198
  jQuery("#mo_custom_login_icon_preview_google").hide();
1199
  jQuery("#mo_login_button_preview_google").hide();
1200
  jQuery("#mo_custom_login_button_preview_google").hide();
1201
+
1202
  }
1203
+
1204
  if (document.getElementById('facebook_enable').checked) {
1205
  flag = 1;
1206
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1234
  jQuery("#mo_login_button_preview_vkontakte").hide();
1235
  jQuery("#mo_custom_login_button_preview_vkontakte").hide();
1236
  }
1237
+
1238
  if (document.getElementById('linkedin_enable').checked) {
1239
  flag = 1;
1240
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1241
  jQuery("#mo_login_icon_preview_linkedin").show();
1242
  if(document.getElementById('mo_openid_login_custom_radio').checked && !document.getElementById('iconwithtext').checked)
1243
  jQuery("#mo_custom_login_icon_preview_linkedin").show();
1244
+ if(document.getElementById('mo_openid_login_default_radio').checked && document.getElementById('iconwithtext').checked)
1245
  jQuery("#mo_login_button_preview_linkedin").show();
1246
+ if(document.getElementById('mo_openid_login_custom_radio').checked && document.getElementById('iconwithtext').checked)
1247
  jQuery("#mo_custom_login_button_preview_linkedin").show();
1248
  } else if(!document.getElementById('linkedin_enable').checked){
1249
  jQuery("#mo_login_icon_preview_linkedin").hide();
1251
  jQuery("#mo_login_button_preview_linkedin").hide();
1252
  jQuery("#mo_custom_login_button_preview_linkedin").hide();
1253
  }
1254
+
1255
  if (document.getElementById('instagram_enable').checked) {
1256
  flag = 1;
1257
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1268
  jQuery("#mo_login_button_preview_instagram").hide();
1269
  jQuery("#mo_custom_login_button_preview_instagram").hide();
1270
  }
1271
+
1272
  if (document.getElementById('amazon_enable').checked) {
1273
  flag = 1;
1274
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checkedd)
1287
  jQuery("#mo_login_button_preview_amazon").hide();
1288
  jQuery("#mo_custom_login_button_preview_amazon").hide();
1289
  }
1290
+
1291
  if (document.getElementById('salesforce_enable').checked) {
1292
  flag = 1;
1293
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1304
  jQuery("#mo_login_button_preview_salesforce").hide();
1305
  jQuery("#mo_custom_login_button_preview_salesforce").hide();
1306
  }
1307
+
1308
  if (document.getElementById('windowslive_enable').checked) {
1309
  flag = 1;
1310
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1321
  jQuery("#mo_login_button_preview_windowslive").hide();
1322
  jQuery("#mo_custom_login_button_preview_windows").hide();
1323
  }
1324
+
1325
+
1326
  if (document.getElementById('twitter_enable').checked) {
1327
  if(flag) {
1328
  jQuery("#no_apps_text").hide();
1329
  } else {
1330
  jQuery("#no_apps_text").show();
1331
  }
1332
+
1333
  flag = 1;
1334
  if(document.getElementById('mo_openid_login_default_radio').checked && !document.getElementById('iconwithtext').checked)
1335
  jQuery("#mo_login_icon_preview_twitter").show();
1348
  }
1349
  checkLoginButton();
1350
  </script>
1351
+ <script>
1352
+
1353
+ function restart_tour() {
1354
+ tour.restart();
1355
+ }
1356
+
1357
+ var tour = new Tour({
1358
+ name: "tour",
1359
+ steps: [
1360
+ {
1361
+ element: "#select_app",
1362
+ title: "Select Apps",
1363
+ content: "Select multiple apps to enable Social Login.",
1364
+ backdrop:'body',
1365
+ backdropPadding:'6'
1366
+ }, {
1367
+ element: "#custom_icon",
1368
+ title: "Customize Icon",
1369
+ content: "Customize the look and feel of app icons to suit your website's theme. Live preview included.",
1370
+ backdrop:'body',
1371
+ backdropPadding:'6'
1372
+ }, {
1373
+ element: "#display_opt",
1374
+ title: "Display Options",
1375
+ content: "Select the pages where you want to show the social login icons.",
1376
+
1377
+ backdrop:'body',
1378
+ backdropPadding:'6'
1379
+ }
1380
+ ,{
1381
+ element: "#redirect_opt",
1382
+ title: "Redirection Option",
1383
+ content: "Redirect user after login and logout on your website. ",
1384
+ backdrop:'body',
1385
+ backdropPadding:'6',
1386
+
1387
+
1388
+ }, {
1389
+ element: "#support",
1390
+ title: "miniOrange Support",
1391
+ content: "Feel free to reach out to us in case of any assistance.",
1392
+ backdrop:'body',
1393
+ backdropPadding:'6',
1394
+
1395
+
1396
+ },{
1397
+ element: "#save_opt",
1398
+ title: "Save",
1399
+ content: "Save the updated changes.",
1400
+ backdrop:'body',
1401
+ backdropPadding:'6',
1402
+ }
1403
+
1404
+ ],
1405
+ template: function () {
1406
+ return (
1407
+ tour.getCurrentStep()===5 // Is this the last step?
1408
+ ? "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:0px;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\"><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:left;margin-top:30%;margin-left:30%;\">"+ (tour.getCurrentStep()+1)+"/6</h4></div></div>&nbsp;&nbsp; <button class=\"button button-primary button-large\" data-role=\"end\">Done</button> </div> </div>"
1409
+ : "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:0px;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\" style=\"width: 100%;\"> <button class=\"mo2f_tour_btn mo2f_tour_btn-sm mo2f_tour_btn-secondary mo2f_tour_btn_next-success\" style=\"width: 32%;height: 0%;\" data-role=\"next\">Next &raquo;</button><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:right;margin-left: 53%;\">"+ (tour.getCurrentStep()+1)+"/6</h4></div></div></div></div>"
1410
+ );
1411
+ }
1412
+ });
1413
+ </script>
1414
+
1415
  <tr>
1416
  <td>
1417
  <hr>
1466
 
1467
  <h3><table>
1468
  <tr><td><img src="<?php echo plugin_dir_url(__FILE__);?>includes/images/lock1.png"></td>
1469
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;Get Standard or Premium plugin to unlock following features</h3> <br> <a style="margin-top: 25px;margin-left: 140px" class="button button-primary button-large" href="https://www.miniorange.com/social-login-social-sharing/" target="_blank">Upgrade Now</a></td>
1470
  </tr>
1471
  </table>
1472
  </div>
1506
  <b>Enter Privacy Policy URL: </b><br>
1507
  <input type="text" style="width:90%" disabled="disabled" />
1508
  </td>
1509
+ </tr>
1510
+ <br><hr><br><?php ;} ?>
1511
  </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1512
 
 
 
 
 
 
 
 
 
 
 
 
1513
  </div>
1514
  </form>
1515
+
1516
  <script>
1517
  jQuery(function() {
1518
  jQuery('#tab2').removeClass('disabledTab');
1519
  });
1520
  </script>
1521
  </td>
1522
+ <td style="vertical-align:top;padding-left:1%;" >
1523
+ <div id="support"><?php echo miniorange_openid_support(); ?></div>
1524
  </td>
1525
  <?php
1526
  }
1806
  <td><br /><input disabled type="submit" name="submit" value="Save" style="width:100px;" <?php if(!mo_openid_is_customer_registered()) echo 'disabled'?> class="button button-primary button-large" />
1807
  </td>
1808
  </tr>
 
 
 
1809
  </table>
1810
 
1811
  <br><b>*NOTE: These features require SMTP to be setup.</b>
1836
  <tr>
1837
  <td colspan="2">
1838
  <h3>Social Comments
1839
+ <input type="submit" id="comment_save" name="submit" value="Save" style="width:100px;float:right;margin-right:2%" class="button button-primary button-large" onclick="end_tour();"/> <button type="button" id="mo_openid_restart_tour" class="button button-primary button-large"style="float:right; margin-right:2%;width:25%" onclick="restart_tour();"><i class="fa fa-refresh"></i> Social Commenting Tour</button>
 
1840
  </h3>
1841
  <b>Select applications to add Social Comments. These commenting applications will be added to your blog post pages at the location of your comments.</b>
1842
  </td>
1843
  </tr>
1844
+ </table><br/>
1845
+ <hr>
1846
+ <table id="sel_app" class="mo_openid_display_table">
1847
  <tr>
1848
  <td colspan="2">
1849
+
 
1850
  <h3>Select Applications</h3>
1851
  If none of the below are selected, default WordPress comments will only be visible. Only selecting Default WordPress Comments will not result in any changes.
1852
  </td>
1864
  <td><input type="checkbox" id="mo_openid_social_comment_google" name="mo_openid_social_comment_google" value="1" <?php checked( get_option('mo_openid_social_comment_google') == 1 );?> /><b>Google+ Comments</b>
1865
  </td>
1866
  <tr>
1867
+ </table><br>
1868
+ <hr>
1869
+ <table id="disp_opt" class="mo_openid_display_table">
1870
  <tr>
1871
  <td colspan="2">
1872
+
 
1873
  <h3>Display Options</h3>
1874
  Select the options where you want to add social comments.
1875
  </td>
1883
  <td><input type="checkbox" id="mo_openid_social_comment_static" name="mo_openid_social_comment_static" value="1" <?php checked( get_option('mo_openid_social_comment_static') == 1 );?> /><b>Static Pages</b>
1884
  </td>
1885
  <tr>
1886
+ </table><br>
1887
+ <hr>
1888
+ <table class="mo_openid_display_table">
1889
+ <tr><td><table id="cust_text"><tr>
1890
  <td colspan="2">
1891
+
 
1892
  <h3>Customize Text For Social Comment Labels</h3>
1893
  </td>
1894
  </tr>
1907
  <tr>
1908
  <td><b>Comments - Google Label:</b></td>
1909
  <td><input class="mo_openid_table_textbox" type="text" name="mo_openid_social_comment_google_label" value="<?php echo get_option('mo_openid_social_comment_google_label'); ?>" /></td>
1910
+ </tr></table></td></tr>
1911
 
1912
  <tr>
1913
  <td><br /><input type="submit" name="submit" value="Save" style="width:100px;" class="button button-primary button-large" />
1933
  </form>
1934
  </td>
1935
  <td style="vertical-align:top;padding-left:1%;">
1936
+ <div id="support"><?php echo miniorange_openid_support(); ?></div>
1937
  </td>
1938
+ <script>
1939
+ function restart_tour() {
1940
+
1941
+ tour.restart();
1942
+ }
1943
+
1944
+ var tour = new Tour({
1945
+ name: "tour",
1946
+ steps: [
1947
+ {
1948
+ element: "#sel_app",
1949
+ title: "Select Apps",
1950
+ content: "Select multiple apps to enable Social commenting.",
1951
+ backdrop:'body',
1952
+ backdropPadding:'6'
1953
+ }, {
1954
+ element: "#disp_opt",
1955
+ title: "Display Options",
1956
+ content: "Select the options where you want to add social comments.",
1957
+ backdrop:'body',
1958
+ backdropPadding:'6'
1959
+ }, {
1960
+ element: "#cust_text",
1961
+ title: "Customize Text",
1962
+ content: "Customize the text of social commenting labels.",
1963
+ backdrop:'body',
1964
+ backdropPadding:'6'
1965
+ }
1966
+ ,{
1967
+ element: "#support",
1968
+ title: "miniOrange Support",
1969
+ content: "Feel free to reach out to us in case of any assistance.",
1970
+ backdrop:'body',
1971
+ backdropPadding:'6',
1972
+
1973
+
1974
+ },{
1975
+ element: "#comment_save",
1976
+ title: "Save",
1977
+ content: "Save the updated changes.",
1978
+ backdrop:'body',
1979
+ backdropPadding:'6'
1980
+ }
1981
+ ],
1982
+ template: function () {
1983
+ return (
1984
+ tour.getCurrentStep()===4// Is this the last step?
1985
+ ? "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:0px;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\"><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:left;margin-top:30%;margin-left:30%;\">"+ (tour.getCurrentStep()+1)+"/5</h4></div></div>&nbsp;&nbsp; <button class=\"button button-primary button-large\" data-role=\"end\">Done</button> </div> </div>"
1986
+ : "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:0px;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\" style=\"width: 100%;\"> <button class=\"mo2f_tour_btn mo2f_tour_btn-sm mo2f_tour_btn-secondary mo2f_tour_btn_next-success\" style=\"width: 32%;height: 0%;\" data-role=\"next\">Next &raquo;</button><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:right;margin-left: 53%;\">"+ (tour.getCurrentStep()+1)+"/5</h4></div></div></div></div>"
1987
+ );
1988
+ }
1989
+ });
1990
+
1991
+
1992
+ </script>
1993
  <?php
1994
  }
1995
 
2050
  </tr>
2051
  </table>
2052
  <br><input type="submit" value="Send OTP" class="button button-primary button-large" />
2053
+
2054
  </form>
2055
  <br>
2056
  <h3>What is an OTP ?</h3>
2058
  </div>
2059
  <script>
2060
  jQuery("#phone").intlTelInput();
 
 
2061
  </script>
2062
+
2063
  </td>
2064
  <td style="vertical-align:top;padding-left:1%;">
2065
  <?php echo miniorange_openid_support(); ?>
2079
  <table>
2080
  <tr>
2081
  <td colspan="2">
2082
+ <h3>Social Sharing <input type="submit" id="share_save" name="submit" value="Save" style="width:100px;float:right;margin-right:2%" class="button button-primary button-large" onclick="end_tour();"/><button type="button" id="mo_openid_restart_tour" class="button button-primary button-large"style="float:right; margin-right:2%;width:20%" onclick="restart_tour();"><i class="fa fa-refresh"></i> Social Sharing Tour</button>
 
 
2083
  </h3>
2084
  <b>Select applications to add share icons. Customize sharing icons by using a range of shapes, themes and sizes to suit to your website. You can also choose different places to display these icons. Additionally, place vertical floating icons on your pages.</b>
2085
  </td>
2088
  </table>
2089
 
2090
  <table class="mo_openid_settings_table">
2091
+ <tr id="sel_apps"><td><table><h3>Select Social Apps</h3>
2092
  <p>Select applications to enable social sharing</p>
2093
  <tr>
2094
  <td class="mo_openid_table_td_checkbox">
2095
+
2096
  <tr>
2097
  <td style="width:20%">
2098
  <input type="checkbox" id="facebook_share_enable" class="app_enable" name="mo_openid_facebook_share_enable" value="1"
2183
  <strong>Whatsapp</strong>
2184
  </td>
2185
  </tr>
2186
+
2187
  </td>
2188
  </tr>
2189
+ </table>
2190
+ </td>
2191
+ </tr>
2192
 
2193
 
2194
 
2195
 
2196
+ <tr id="cust_icon"><td><table><tr>
2197
  <td>
2198
  <br>
2199
  <hr>
2350
  </div>
2351
 
2352
  </td>
2353
+ </tr></table></td></tr>
2354
 
2355
  <script>
2356
  var tempHorSize = '<?php echo get_option('mo_sharing_icon_custom_size') ?>';
2694
  addSelectedApps();
2695
  });
2696
  </script>
2697
+ <script>
2698
+ function restart_tour() {
2699
+
2700
+ tour.restart();
2701
+ }
2702
+
2703
+ var tour = new Tour({
2704
+ name: "tour",
2705
+ steps: [
2706
+ {
2707
+ element: "#sel_apps",
2708
+ title: "Select Apps",
2709
+ content: "Select multiple apps to enable Social Sharing.",
2710
+ backdrop:'body',
2711
+ backdropPadding:'6'
2712
+ }, {
2713
+ element: "#cust_icon",
2714
+ title: "Customize Icons",
2715
+ content: "Customize the look and feel of app icons to suit your website's theme. Live preview included.",
2716
+ backdrop:'body',
2717
+ backdropPadding:'6'
2718
+ }, {
2719
+ element: "#disp_options",
2720
+ title: "Display Option",
2721
+ content: "Select the pages where you want to show the social sharing icons.",
2722
+ backdrop:'body',
2723
+ backdropPadding:'6'
2724
+ }
2725
+ ,{
2726
+ element: "#support",
2727
+ title: "miniOrange Support",
2728
+ content: "Feel free to reach out to us in case of any assistance.",
2729
+ backdrop:'body',
2730
+ backdropPadding:'6',
2731
+
2732
+
2733
+ },{
2734
+ element: "#share_save",
2735
+ title: "Save",
2736
+ content: "Save the updated changes.",
2737
+ backdrop:'body',
2738
+ backdropPadding:'6'
2739
+ }
2740
+
2741
+ ],
2742
+ template: function () {
2743
+ return (
2744
+ tour.getCurrentStep()===4 // Is this the last step?
2745
+ ? "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:0px;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\"><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:left;margin-top:30%;margin-left:30%;\">"+ (tour.getCurrentStep()+1)+"/5</h4></div></div>&nbsp;&nbsp; <button class=\"button button-primary button-large\" data-role=\"end\">Done</button> </div> </div>"
2746
+ : "<div class=\"mo2f_popover\" role=\"tooltip\"> <div class=\"mo2f_arrow\" ></div> <h3 class=\"mo2f_popover-header\" style=\"margin-top:0px;\"></h3> <div class=\"mo2f_popover-body\"></div> <div class=\"mo2f_popover-navigation\"> <div class=\"mo2f_tour_btn-group\" style=\"width: 100%;\"> <button class=\"mo2f_tour_btn mo2f_tour_btn-sm mo2f_tour_btn-secondary mo2f_tour_btn_next-success\" style=\"width: 32%;height: 0%;\" data-role=\"next\">Next &raquo;</button><div style=\"width:47%;margin-top: -7%;\"><h4 style=\"float:right;margin-left: 53%;\">"+ (tour.getCurrentStep()+1)+"/5</h4></div></div></div></div>"
2747
+ );
2748
+ }
2749
+ });
2750
+
2751
+
2752
+
2753
+ </script>
2754
  <tr>
2755
  <td>
2756
  <br/>
2803
  value="<?php echo get_option('mo_openid_share_email_body'); ?>" />
2804
  </td>
2805
  </tr>
2806
+ <tr id="disp_options"><td><table><tr>
2807
  <td>
2808
  <br>
2809
  <hr>
2827
  Both before and after content
2828
  </td>
2829
  </tr>
2830
+
2831
  <tr>
2832
  <td>
2833
  <input type="checkbox" id="mo_apps_posts" name="mo_share_options_post" value="1" <?php checked( get_option('mo_share_options_enable_post') == '1' );?>>
2914
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" id="mo_apps_posts_options" name="mo_share_options_bb_reply_position" value="both" <?php checked( get_option('mo_share_options_bb_reply_position') == 'both' );?>>
2915
  Both before and after content
2916
  </td>
2917
+ </tr></table></td></tr>
2918
  <tr>
2919
  <td>
2920
  <br/>
2982
  </script>
2983
  </td>
2984
  <td style="vertical-align:top;padding-left:1%;">
2985
+ <div id="support"><?php echo miniorange_openid_support(); ?></div>
2986
  </td>
2987
  <?php
2988
  }
3108
  }
3109
 
3110
  function mo_openid_pricing_info(){
3111
+ if (isset($_POST['update_tour_status'])){
3112
+ update_option('mo_openid_tour','1');
3113
+ }
3114
  ?>
3115
  <td style="vertical-align:top;width:100%;">
3116
  <div class="mo_openid_table_layout">
3865
 
3866
  }elseif (get_option('mo_openid_apps_list')==null){
3867
  echo "<div style='text-align: center'><p>You have not configured any custom apps yet. Please click on <b>Add Application</b> to configure your own app.</p>";
3868
+ echo "<br><input type='button' onclick='window.location.href=\"admin.php?page=mo_openid_settings&tab=custom_app&action=add\"' class='button button-primary button-large' style='text-align:center;' value='Add Application'>";
3869
+ echo "<br><br><br><br><br>";?>
3870
+ <img style="margin-top: -3%" src="<?php echo plugin_dir_url(__FILE__);?>includes/images/custom_app.png">
3871
 
3872
+ <?php
3873
  }?>
3874
  </div>
3875
+
3876
+
3877
  </td>
3878
  <script>
3879
  //ajax call for custom app over default app
3893
  });
3894
  }
3895
  </script>
3896
+
3897
  <?php
3898
  }
3899
 
3905
  var appname = document.getElementById("mo_oauth_app").value;
3906
  document.getElementById("instructions").innerHTML = "";
3907
  if(appname=="google"){
3908
+ document.getElementById("mo_oauth_scope").value = "";
3909
  document.getElementById("instructions").innerHTML = '<br><strong>Instructions to configure Google :</strong><ol><li>Visit the Google website for developers <a href="https://console.developers.google.com/project"target="_blank">console.developers.google.com</a>.</li><li>Open the Google API Console Credentials page and go to API Manager -> Credentials</li><li>From the project drop-down, click on + to Create a new project, enter a name for the project, and optionally, edit the provided Project ID. Click Create.</li><li>On the Credentials menu, select Create credentials, then select OAuth client ID.</li><li>You may be prompted to set a product name on the Consent screen. If so, click Configure consent screen, supply the requested information, and click Save to return to the Credentials screen.</li><li>Select Web Application for the Application Type. Enter <b><?php if(get_option('mo_openid_malform_error')){ echo site_url()."/openidcallback/google";} else {echo site_url()."/openidcallback";}?></b> in Authorized redirect URIs.</li><li>Click Create.</li><li>On the page that appears, copy the client ID and client secret to your clipboard, as you will need them to configure above.</li><li>Enable the Google+ API.<ul><li>In the Dashboard menu, click on ENABLE APIS AND SERVICES.</li><li>Type Google+ in search box, select Google+ API and click on Enable.</li></ul></li><li>Input scope as <b>https://www.googleapis.com/auth/userinfo.profile+ https://www.googleapis.com/auth/user.birthday.read+ https://www.googleapis.com/auth/plus.login+ https://www.googleapis.com/auth/plus.profile.emails.read+ https://www.googleapis.com/auth/userinfo.email+ https://www.googleapis.com/auth/plus.me </b></li><li>Go to Social Login tab to configure the display as well as other login settings.</li></ol>';
3910
  } else if(appname=="facebook"){
3911
+ document.getElementById("mo_oauth_scope").value = "email, public_profile";
3912
  document.getElementById("instructions").innerHTML = '<br><strong>Instructions to configure Facebook : </strong><ol><li>Go to Facebook developers console <a href="https://developers.facebook.com/apps/" target="_blank">https://developers.facebook.com/apps/</a>. Login with your facebook developer account</li><li>Click on Create a New App/Add new App button</li><li>Enter <b>Display Name</b> and click on Create App ID</li><li>In Add Product select Facebook Login and click on Setup</li><li>Click on Web. Enter your Site URL. From the left pane, select <b>Facebook Login -> Settings</b>.</li><li>Under <b>Client OAuth Settings</b>, enter <b><?php if(get_option('mo_openid_malform_error')){echo site_url()."/openidcallback/facebook";} else{echo site_url()."/openidcallback";}?></b> in Valid OAuth redirect URIs and click <b>Save Changes</b>.</li><li>Go to <b>Settings -> Basic</b>. Enter <b><?php $str=str_replace('https://','',site_url()); echo $str; ?></b> in <b>App Domain</b>, <b><?php echo site_url(); ?></b> in <b>Website URL </b>, your privacy policy URL in <b>Privacy Policy URL</b> and select <b>Category</b> of your website .</li><li>Go to <b>App Review </b>make your app public. After making app public you will see on right top corner your app status changes from <b>In Development</b> to <b>Live</b>.</li><li>Go to Settings > Basic. Paste your App ID and App Secret provided by Facebook into the fields above.</li><li>Input <b> email, public_profile </b>as scope.</li><li> If you want to access the <b>user_birthday, user_hometown, user_location</b> of a Facebook user, you need to send your app for review to Facebook. For submitting an app for review, click <a target="_blank" href="https://developers.facebook.com/docs/facebook-login/review/how-to-submit ">here</a>. After your app is reviewed, you can add the scopes you have sent for review in the scope above. If your app is not approved or is in the process of getting approved, let the scope be <b>email, public_profile, user_friends</b> </li><li>Click on the Save settings button.</li><li>Go to Social Login tab to configure the display as well as other login settings.</li></ol>';
3913
  } else if(appname=="twitter"){
3914
+ document.getElementById("mo_oauth_scope").value = "";
3915
+ document.getElementById("instructions").innerHTML = '<br><strong>Instructions to configure Twitter : </strong><ol><li>Go to <a href="https://apps.twitter.com/" target="_blank">https://apps.twitter.com/</a> and sign in with your twitter account.</li><li>Click on <b>Create New App</b>.</li> <li>Enter Name, description, website name and callback URL.</li><li><b>Callback URL</b> <br><u>Example of public website, </u><br>if your website URL is =><?php echo site_url();?><br> then your callback URL should be => <?php echo site_url();?>/openidcallback<br><u>Example of localhost,</u><br> Twitter may not accept local IPs so try using 127.0.0.1 instead of localhost.<br> Also make sure your Callback URL is prefixed with the website. <br> Go to Settings-> General and replace "localhost" with "127.0.0.1" in <b>WordPress Address (URL)</b> and <b>Site Address (URL)</b> <br>if your website URL is => http://127.0.0.1/wordpress <br> then your callback URL should be => http://127.0.0.1/wordpress/openidcallback</li><li>Twitter might ask you to add your phone number to your profile while creating the app.</li><li>Check the developer agreement checkbox and click on <b>Create your Twitter Application</b>.Under <b>Keys and Access Token</b> Tab, you will find your <b>API Key/Secret</b>.Paste them into the fields above.</li><li>Leave the scope field blank.</li><li><u>Instructions to request email address of a user</u>: The “Request email addresses from users” checkbox is available under the app permissions on apps.twitter.com. Privacy Policy URL and Terms of Service URL fields must be completed in the app settings in order for email address access to function. If enabled, users will be informed via the oauth/authorize dialog that your app can access their email address.If the user does not have an email address on their account, or if the email address is not verified, email will not be returned.</li><li>Go to Permissions tab -> Access. Select <b>Read Only</b> type of access.</li><li>Click on the Update settings button.</li><li>Go to Social Login tab to configure the display as well as other login settings.</li></ol>';
3916
  }
3917
 
3918
  }
3944
  <td><input class="mo_table_textbox" required="" style="height: 27px; width:500px" type="text" name="mo_oauth_client_secret" value=""></td>
3945
  </tr>
3946
  <tr>
3947
+ <td><strong>Scope:</strong></td>
3948
+ <td><input class="mo_table_textbox" style="height: 27px; width:500px" type="text" id="mo_oauth_scope" name="mo_oauth_scope" value="" ></td>
3949
+ </tr>
3950
  <tr>
3951
  <td>&nbsp;</td>
3952
  <td><input type="submit" name="submit" value="Save settings" class="button button-primary button-large" />
4080
  <div class="mo_openid_support_layout">
4081
 
4082
  <h3>Support</h3>
4083
+
4084
  <p>Need any help? Couldn't find an answer in <a href="<?php echo add_query_arg( array('tab' => 'help'), $_SERVER['REQUEST_URI'] ); ?>">FAQ</a>?<br>Just send us a query so we can help you.</p>
4085
  <form method="post" action="">
4086
  <input type="hidden" name="option" value="mo_openid_contact_us_query_option" />
4096
  </tr>
4097
  </table>
4098
  <br>
4099
+ <input type="submit" name="submit" value="Submit Query" style="width:110px;margin-left: 30%;margin-top: -2%;" class="button button-primary button-large" />
4100
+ <br><h2 style="text-align: center;margin-left: -10%;">OR</h2><br>
4101
 
4102
+ <button type="button" class="button button-primary button-large"style=" margin-top: -4%;margin-left: 23%;" onclick="wordpress_support();"> WordPress Support Forum</button>
4103
  </form>
4104
+ <p style="margin-top: 7%;">If you want custom features in the plugin, just drop an email at <a href="mailto:info@miniorange.com">info@miniorange.com</a>.</p>
4105
  </div>
4106
  </div>
4107
  </div>
4131
  function moLoginHeightValidate(e){
4132
  var t=parseInt(e.value.trim());t>50?e.value=50:35>t&&(e.value=35)
4133
  }
4134
+ function wordpress_support() {
4135
+ window.open("https://wordpress.org/support/plugin/miniorange-login-openid");
4136
+
4137
+ }
4138
  </script>
4139
  <?php
4140
  }
4174
  } else
4175
  return 0;
4176
  }
4177
+
4178
  function mo_openid_restrict_user() {
4179
  if((get_option('mo_openid_admin_customer_key')>151617) || (get_option('mo_openid_new_user')==1)|| !mo_openid_is_customer_registered()) {
4180
  return true;
4183
  }
4184
  }
4185
 
4186
+ function mo_openid_registeration_modal(){
4187
+ update_option('regi_pop_up','yes');
4188
+ update_option ( 'mo_openid_new_registration', 'true' );
4189
+ global $current_user;
4190
+
4191
+
4192
+ $current_user = wp_get_current_user();
4193
+ ?><div id="request_registeration" class="mo_openid_modal" style="height:100%">
4194
+ <!-- Modal content -->
4195
+ <div class="mo_openid_modal-content" style="text-align:center;margin-left: 32%;margin-top: 4%;width: 37%;">
4196
+ <div class="modal-head">
4197
+ <!-- <span class="mo_close">&times;</span>-->
4198
+ <a href="" class="mo_close" id="mo_close" style="text-decoration:none;margin-top: 3%;">&times;</a>
4199
+ <h1>Save As</h1>
4200
+ </div>
4201
+ <br>
4202
+ <span id="msg1" style="text-align: center;color: #56b11e"><?php echo get_option("pop_regi_msg"); update_option('pop_regi_msg','Your settings are saved successfully. Please enter your valid email address to enable social login.');?></span>
4203
+ <br>
4204
+ <br>
4205
+ <br>
4206
+ <div id="mo_saml_show_registeration_modal" >
4207
+
4208
+ <!--Register with miniOrange-->
4209
+
4210
+ <form name="f" method="post" action="" id="pop-register-form">
4211
+ <input type="hidden" name="option" value="mo_openid_connect_register_customer" />
4212
+
4213
+ <div>
4214
+
4215
+
4216
+ <table style="text-align: left;width: 100%">
4217
+
4218
+
4219
+ <tr>
4220
+ <td><b><font color="#FF0000">*</font>Email:</b></td>
4221
+ <td><input class="mo_openid_table_textbox" type="email" name="email"
4222
+ style="width: 100%" required placeholder="person@example.com"
4223
+ value="<?php echo $current_user->user_email;?>" />
4224
+ </td>
4225
+ </tr>
4226
+
4227
+ <tr id="pop_register" style="display: none">
4228
+ <td><b><font color="#FF0000">*</font>Website/Company Name:</b></td>
4229
+ <td><input class="mo_openid_table_textbox" type="text" name="company"
4230
+ style="width: 100%" required placeholder="Enter website or company name"
4231
+ value="<?php echo $_SERVER['SERVER_NAME']; ?>"/></td>
4232
+ </tr>
4233
+
4234
+ <tr id="pop_register" style="display: none">
4235
+ <td><b><font color="#FF0000">*</font>Password:</b></td>
4236
+ <td><input class="mo_openid_table_textbox" required type="password"
4237
+ name="password" style="width: 100%" placeholder="Choose your password (Min. length 6)" /></td>
4238
+ </tr>
4239
+ <tr id="pop_register" style="display: none">
4240
+ <td><b><font color="#FF0000">*</font>Confirm Password:</b></td>
4241
+ <td><input class="mo_openid_table_textbox" required type="password"
4242
+ name="confirmPassword" style="width: 100%" placeholder="Confirm your password" /></td>
4243
+ </tr>
4244
+ <tr style="text-align: center">
4245
+ <td>
4246
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4247
+
4248
+ </td>
4249
+
4250
+ </tr>
4251
+ <tr><td><input type="button" id="pop_next" class="button button-primary button-large" style="margin-left: 104%;" value=" Next Step" onclick="show_pass()" />
4252
+ </td></tr>
4253
+
4254
+ </table>
4255
+ <input type="submit" value="Submit" id="register_submit" style="display:none;margin-right: 21%;"class="button button-primary button-large">
4256
+ </form>
4257
+ <form method="post"> &nbsp &nbsp &nbsp <input type="submit" id="pop_next" name="show_login" value="Existing Account" class="button button-primary button-large" style="margin-left: 31%;margin-top: -6.5%;"> <input type="submit" id="pop_register" name="show_login" value="Existing Account" class="button button-primary button-large" style="display: none;margin-top: -6.0%; float: right; margin-right:22%; ">
4258
+ </form>
4259
+ </div>
4260
+ </div>
4261
+
4262
+ </div>
4263
+
4264
+ </div>
4265
+
4266
+ </div>
4267
+ <script>
4268
+ function show_pass(){
4269
+ var regi_button = document.getElementById('register_submit').style;
4270
+ regi_button.display = '';
4271
+
4272
+ jQuery("[id*=pop_next]").css('display','none');
4273
+ document.getElementById("msg1").innerHTML = "Please enter and confirm the password";
4274
+ jQuery("[id*=pop_register]").css('display',''); //and $('#Id').css('padding-left','20%');
4275
+ }
4276
+ </script>
4277
+ <?php
4278
+ }
4279
+
4280
+ function mo_pop_show_otp_verification($msg){
4281
+ global $current_user;
4282
+ $current_user = wp_get_current_user();
4283
+ update_option('regi_pop_up','yes');
4284
+
4285
+ ?>
4286
+ <div id="request_registeration" class="mo_openid_modal" style="height:100%">
4287
+ <!-- Modal content -->
4288
+ <div class="mo_openid_modal-content" style="text-align:center;margin-left: 32%;margin-top: 2%;width: 37%;">
4289
+ <div class="modal-head">
4290
+ <!-- <span class="mo_close">&times;</span>-->
4291
+ <a href="" class="mo_close" id="mo_close" style="text-decoration:none;margin-top: 3%;">&times;</a>
4292
+ <h1>Verify Your Email </h1>
4293
+ </div>
4294
+ <br>
4295
+ <span style="text-align: center;color: #56b11e"><?php echo $msg;?></span>
4296
+ <br>
4297
+ <br>
4298
+ <div id="mo_saml_show_registeration_modal" >
4299
+
4300
+ <!--Register with miniOrange-->
4301
+
4302
+
4303
+ <form name="f" method="post" action="" id="pop-otp-form" style="margin-left: 28%;">
4304
+ <input type="hidden" name="option" value="mo_openid_validate_otp" />
4305
+ <div>
4306
+
4307
+ <table style="text-align: left;width: 100%">
4308
+ <tr>
4309
+ <td><b><font color="#FF0000">*</font>Enter OTP:</b></td>
4310
+
4311
+ <td><input class="mo_openid_table_textbox" autofocus="true" type="text" name="otp_token" required placeholder="Enter OTP" style="margin-left: -10%;width:45%;" />
4312
+
4313
+ </td>
4314
+
4315
+ </tr>
4316
+ <tr style="text-align: center">
4317
+ <td>
4318
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4319
+ </td>
4320
+
4321
+ </tr>
4322
+ </table>
4323
+ <input type="submit" value="Submit" id="otp_submit" style="margin-left: -71%;"class="button button-primary button-large" onclick="subotp()"/>
4324
+
4325
+ </form>
4326
+
4327
+ </form>
4328
+ <form method="post">
4329
+ &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp <input type="submit" id="go_to_register" name="go_to_register" value="Register" class="button button-primary button-large" style="margin-left: -29%;margin-top: -8.2%;">
4330
+ </form>
4331
+
4332
+ </div>
4333
+ <div style="margin-left: 14%;"><form name="f" id="pop_resend_otp_form" method="post" action="">
4334
+ <input type="hidden" name="option" value="mo_openid_resend_otp"/>
4335
+ &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp <input type="submit" value="Click Here To Get A New OTP?" id="resend_otp" style="cursor:pointer ;background: none!important;border:none;padding:0!important;margin-left: -29%;margin-top: -8.2%;color: darkblue;""/>
4336
+ </form></div>
4337
+ </div>
4338
+
4339
+ </div>
4340
+
4341
+ </div>
4342
+ <script>
4343
+ function subotp() {
4344
+ jQuery('#otp_submit').click(function() {
4345
+ jQuery('#pop-otp-form').submit();
4346
+ })
4347
+ }
4348
+
4349
+ </script>
4350
+ <?php
4351
+ }
4352
+
4353
+ function mo_pop_show_verify_password_page() {
4354
+ update_option('regi_pop_up','yes');
4355
+ //add_option('pop_login_msg','');
4356
+ ?>
4357
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
4358
+ <div id="request_registeration" class="mo_openid_modal" style="height:100%">
4359
+
4360
+ <!-- Modal content -->
4361
+ <div class="mo_openid_modal-content" style="text-align:center;margin-left: 32%;margin-top: 2%;width: 37%;">
4362
+ <div class="modal-head">
4363
+ <!-- <span class="mo_close">&times;</span>-->
4364
+ <a href="" class="mo_close" id="mo_close" style="text-decoration:none;margin-top: 3%;">&times;</a>
4365
+ <h1>Login</h1>
4366
+ </div>
4367
+ <br>
4368
+ <span style="text-align: center;color: #56b11e"><?php echo get_option("pop_login_msg"); update_option('pop_login_msg','Enter Your Login Credentials.');?></span>
4369
+ <br><br>
4370
+ <div id="mo_saml_show_registeration_modal" >
4371
+
4372
+ <!--Register with miniOrange-->
4373
+ <form name="f" method="post" action="" id="pop-register-form">
4374
+ <input type="hidden" name="option" value="mo_openid_connect_verify_customer" />
4375
+ <div>
4376
+ <table style="text-align: left;width: 100%">
4377
+
4378
+ <tr>
4379
+ <td><b><font color="#FF0000">*</font>Email:</b></td>
4380
+ <td><input class="mo_openid_table_textbox" id="email" type="email" name="email"
4381
+ required placeholder="person@example.com"
4382
+ value="<?php echo get_option('mo_openid_admin_email');?>" />
4383
+ </td>
4384
+ </tr>
4385
+
4386
+ <tr>
4387
+ <td><b><font color="#FF0000">*</font>Password:</b></td>
4388
+ <td><input class="mo_openid_table_textbox" required type="password"
4389
+ name="password" placeholder="Choose your password" /></td>
4390
+ </tr>
4391
+ <tr style="text-align: center">
4392
+ <td>
4393
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4394
+ </td>
4395
+
4396
+ </tr>
4397
+ </table>
4398
+ <input type="submit" value="Login" id="login_submit" style="margin-left: -21%;margin-top: -1%;" class="button button-primary button-large" "/>
4399
+ </div>
4400
+ </form>
4401
+ &nbsp &nbsp &nbsp <form method="post" style="margin-top: -16.3%;margin-left: 46%;">
4402
+ <input type="submit" id="go_to_register" name="go_to_register" value="Register" class="button button-primary button-large" style="margin-left: -67%;margin-top: 7.8%;">
4403
+ </form>
4404
+ <p><b><a href="#forgot_password">Click here if you forgot your password?</a></b></p>
4405
+ <form name="forgotpassword" method="post" action="" id="openidforgotpasswordform">
4406
+ <input type="hidden" name="option" value="mo_openid_forgot_password"/>
4407
+ <input type="hidden" id="forgot_pass_email" name="email" value=""/>
4408
+ </form>
4409
+ </div>
4410
+
4411
+ </div>
4412
+
4413
+ </div>
4414
+
4415
+ <script>
4416
+ jQuery('a[href="#forgot_password"]').click(function(){
4417
+ jQuery('#forgot_pass_email').val(jQuery('#email').val());
4418
+ jQuery('#openidforgotpasswordform').submit();
4419
+ });
4420
+ </script>
4421
+ <?php
4422
+ }
4423
+ ?>
4424
+
4425
+
mo_openid_feedback_form.php CHANGED
@@ -12,10 +12,10 @@
12
  <body>
13
 
14
  <!-- The Modal -->
15
- <div id="myModal" class="mo_openid_modal">
16
 
17
  <!-- Modal content -->
18
- <div class="mo_openid_modal-content">
19
  <span class="mo_openid_close">&times;</span>
20
  <h3>What Happened? </h3>
21
  <form name="f" method="post" action="" id="mo_openid_feedback">
12
  <body>
13
 
14
  <!-- The Modal -->
15
+ <div id="myModal" class="mo_openid_modal1">
16
 
17
  <!-- Modal content -->
18
+ <div class="mo_openid_modal1-content">
19
  <span class="mo_openid_close">&times;</span>
20
  <h3>What Happened? </h3>
21
  <form name="f" method="post" action="" id="mo_openid_feedback">
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === WordPress Social Login (Facebook, Google, Twitter) ===
2
- Contributors: miniOrange, vkontakte
3
  Donate link: https://www.miniorange.com
4
- Tags: social login, social, facebook, twitter, google, login, facebook login, google login, google, twitter login, social connect, social network login, social plugin, Vkontakte, LinkedIn
5
  Requires at least: 2.0.2
6
  Tested up to: 4.9.8
7
- Stable tag: 7.0.3
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -16,17 +16,13 @@ Social Login enables social login, social sharing, social comments using social
16
 
17
  = Free Social Login Features =
18
 
19
- * GDPR compliant Social Login.
20
  * Social Login with Facebook, Google, Twitter, Vkontakte, LinkedIn, Instagram, Amazon, Windows Live & Salesforce
21
  * **NO SETUP required for default social login apps.**
22
- * Setup your own social login application with APP ID and APP Secret for Facebook, Google, Twitter.
23
  * **Preview is available for Social Login icons**
24
  * **Icon Customizations** - customize shape, theme, space & size of social login icons.
25
- * **Account Linking** - Link social account to WordPress account
26
  * **Profile completion** (username, email) - Prompt user for email & username if social login app doesn't return it. Email is verified with verification code.
27
  * **Assign Roles to users** - Assign WordPress roles to users logging in with social login application.
28
- * **Woocommerce display options** - Enable social login icons on the Woocommerce Checkout, Login, Registration pages.
29
- * **BuddyPress display options** - Enable Social login icons on BuddyPress Registartion & Account pagess.
30
  * Add the Social Login Icons on: login page, registration page, comment form or anywhere on your site using our Social Login widget/ shortcode.
31
  * Sync Social Profile Picture with WordPress.
32
  * Enable Email Notification to admin when user registers with social login application.
@@ -50,6 +46,10 @@ Social Login enables social login, social sharing, social comments using social
50
 
51
  = Premium Social Login Features =
52
 
 
 
 
 
53
  * All social login free version features
54
  * **Enable your own social login application with APP ID and APP Secret for Facebook, Google, Twitter, Vkontakte, LinkedIn, Instagram, Amazon, Windows Live & Salesforce **[Premium]**
55
  * **Woocommerce Integration [Premium]** - Auto-fill first name, last name and email in billing details of a user logging in with social login application.
@@ -69,7 +69,7 @@ Social Login enables social login, social sharing, social comments using social
69
 
70
  = How is this plugin better than other plugins available =
71
  * **Support for 9 apps in free plan** - Social Login with Facebook, Google, Twitter, LinkedIn, Instagram, Vkontakte, Windows Live, Amazon, Salesforce all available in the free plan.
72
- * **Setup in seconds** - miniOrange Social Login removes the hassle of creating your own application in all the social media. In any other social login plugin, if you are providing login with a social login application, facebook for example, you will need an App ID for which you will need to create an entire application in facebook. So if you want to provide login with 10 different social applications then you need to go and create 10 applications in those social platforms. Using our plugin, Social Login, Social Sharing by miniOrange, you do not need to do that. Just by creating one registration with us, you get Social login plus other features.
73
  * **Icon Customizations** - Beautiful icon customisations for Social Login and Social Sharing are available in our free plan where you can use a range of UI options like shape, size and theme. You get to choose from the following shapes - square, circle, rounded and long. You get to choose from the following themes - default, filled background, without background. Additionally you can customize the curve of the long buttons.
74
  * **Free Support** - Social Login, Social Sharing plugin has in-plugin support available. Sending us a query is just a button-lick away.
75
 
@@ -129,6 +129,16 @@ For more support or info email us at info@miniorange.com or <a href="https://www
129
 
130
  == Frequently Asked Questions ==
131
 
 
 
 
 
 
 
 
 
 
 
132
  = I need login with other Social Login apps like Pinterest, Yahoo, Paypal etc. ? =
133
  Please email us at info@miniorange.com. You can also submit your app request from plugin's configuration page.
134
 
@@ -166,6 +176,18 @@ Please email us at info@miniorange.com. You can also submit your query from the
166
 
167
 
168
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
169
  = 7.0.3 =
170
  * "Malformed URL" issue fixed for custom apps
171
  * Added Customizable text for account linking, profile completion and OTP verification form.
@@ -566,6 +588,18 @@ Please email us at info@miniorange.com. You can also submit your query from the
566
  * First version of Social Login, Social Sharing plugin.
567
 
568
  == Upgrade Notice ==
 
 
 
 
 
 
 
 
 
 
 
 
569
  = 7.0.3 =
570
  * "Malformed URL" issue fixed for custom apps
571
  * Added Customizable text for account linking, profile completion and OTP verification form.
1
  === WordPress Social Login (Facebook, Google, Twitter) ===
2
+ Contributors: vkontakte, sociallogin, cyberlord92
3
  Donate link: https://www.miniorange.com
4
+ Tags: social login, facebook login, google login, twitter login, Vkontakte login, social, facebook, twitter, google, login, google, social connect, social network login, social plugin, Vkontakte, LinkedIn
5
  Requires at least: 2.0.2
6
  Tested up to: 4.9.8
7
+ Stable tag: 7.1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
16
 
17
  = Free Social Login Features =
18
 
 
19
  * Social Login with Facebook, Google, Twitter, Vkontakte, LinkedIn, Instagram, Amazon, Windows Live & Salesforce
20
  * **NO SETUP required for default social login apps.**
21
+ * Setup your own social login application with APP ID and APP Secret for Facebook, Twitter.
22
  * **Preview is available for Social Login icons**
23
  * **Icon Customizations** - customize shape, theme, space & size of social login icons.
 
24
  * **Profile completion** (username, email) - Prompt user for email & username if social login app doesn't return it. Email is verified with verification code.
25
  * **Assign Roles to users** - Assign WordPress roles to users logging in with social login application.
 
 
26
  * Add the Social Login Icons on: login page, registration page, comment form or anywhere on your site using our Social Login widget/ shortcode.
27
  * Sync Social Profile Picture with WordPress.
28
  * Enable Email Notification to admin when user registers with social login application.
46
 
47
  = Premium Social Login Features =
48
 
49
+ * GDPR compliant Social Login.
50
+ * **Account Linking** - Link social account to WordPress account
51
+ * **Woocommerce display options** - Enable social login icons on the Woocommerce Checkout, Login, Registration pages.
52
+ * **BuddyPress display options** - Enable Social login icons on BuddyPress Registration & Account pages.
53
  * All social login free version features
54
  * **Enable your own social login application with APP ID and APP Secret for Facebook, Google, Twitter, Vkontakte, LinkedIn, Instagram, Amazon, Windows Live & Salesforce **[Premium]**
55
  * **Woocommerce Integration [Premium]** - Auto-fill first name, last name and email in billing details of a user logging in with social login application.
69
 
70
  = How is this plugin better than other plugins available =
71
  * **Support for 9 apps in free plan** - Social Login with Facebook, Google, Twitter, LinkedIn, Instagram, Vkontakte, Windows Live, Amazon, Salesforce all available in the free plan.
72
+ * **Setup in seconds** - miniOrange Social Login removes the hassle of creating your own application in all the social media. In any other social login plugin, if you are providing login with a social login application, google for example, you will need an App ID for which you will need to create an entire application in google. So if you want to provide login with 10 different social applications then you need to go and create 10 applications in those social platforms. Using our plugin, Social Login, Social Sharing by miniOrange, you do not need to do that. Just by creating one registration with us, you get Social login plus other features.
73
  * **Icon Customizations** - Beautiful icon customisations for Social Login and Social Sharing are available in our free plan where you can use a range of UI options like shape, size and theme. You get to choose from the following shapes - square, circle, rounded and long. You get to choose from the following themes - default, filled background, without background. Additionally you can customize the curve of the long buttons.
74
  * **Free Support** - Social Login, Social Sharing plugin has in-plugin support available. Sending us a query is just a button-lick away.
75
 
129
 
130
  == Frequently Asked Questions ==
131
 
132
+ = What are the steps to download and activate the social login premium plugin? =
133
+ Please follow the steps given below to download and activate the social login premium plugin:
134
+ 1. Login to miniOrange dashboard here.
135
+ 2. Click on License option on the left-hand menu.
136
+ 3. You will see the download the social login premium plugin link Click on Download Plugin and extract the zip.
137
+ 4. Do not delete the older files just replace the old plugin files with the new plugin.
138
+ 5. To activate the newly installed plugin you need a license key. Click on View License Key button in the License option on the left-hand menu of the miniOrange dashboard.
139
+ 6. Copy the Licence key.
140
+ 7. Go to miniOrange Social Login Plugin on the WordPress dashboard and after login in the plugin, it will ask for the license key paste the license key which you copied from the miniOrange dashboard.
141
+
142
  = I need login with other Social Login apps like Pinterest, Yahoo, Paypal etc. ? =
143
  Please email us at info@miniorange.com. You can also submit your app request from plugin's configuration page.
144
 
176
 
177
 
178
  == Changelog ==
179
+ = 7.1.0 =
180
+ * Added plugin tour buttons to give an overview of features
181
+ * Updated registration flow for better visibility
182
+ * Updated custom apps to prefill scopes with default values to reduce confusion
183
+ * Fixed auto user creation issue for Facebook
184
+
185
+ = 7.0.5 =
186
+ * Social Login plugin Description Update.
187
+
188
+ = 7.0.4 =
189
+ * Social login redirect issue fixed.
190
+
191
  = 7.0.3 =
192
  * "Malformed URL" issue fixed for custom apps
193
  * Added Customizable text for account linking, profile completion and OTP verification form.
588
  * First version of Social Login, Social Sharing plugin.
589
 
590
  == Upgrade Notice ==
591
+ = 7.1.0 =
592
+ * Added plugin tour buttons to give an overview of features
593
+ * Updated registration flow for better visibility
594
+ * Updated custom apps to prefill scopes with default values to reduce confusion
595
+ * Fixed auto user creation issue for Facebook
596
+
597
+ = 7.0.5 =
598
+ * Social Login plugin Description Update.
599
+
600
+ = 7.0.4 =
601
+ * Social login redirect issue fixed.
602
+
603
  = 7.0.3 =
604
  * "Malformed URL" issue fixed for custom apps
605
  * Added Customizable text for account linking, profile completion and OTP verification form.
uninstall.php CHANGED
@@ -183,6 +183,9 @@ delete_option( 'mo_account_linking_new_user_instruction');
183
  delete_option( 'mo_account_linking_existing_user_instruction');
184
  delete_option( 'mo_account_linking_extra_instruction');
185
 
186
-
 
 
 
187
  delete_option( 'mo_openid_feedback_form' );
188
  ?>
183
  delete_option( 'mo_account_linking_existing_user_instruction');
184
  delete_option( 'mo_account_linking_extra_instruction');
185
 
186
+ delete_option( 'regi_pop_up' );
187
+ delete_option( 'pop_regi_msg' );
188
+ delete_option( 'pop_login_msg' );
189
+ delete_option('mo_openid_tour');
190
  delete_option( 'mo_openid_feedback_form' );
191
  ?>