1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <title>Login</title> 5 <link rel="apple-touch-icon" href="../php/images.php"> 6<meta name="mobile-web-app-capable" content="yes"> 7<meta name="apple-mobile-web-app-capable" content="yes"> 8<meta name="robots" content="noindex, nofollow"> 9<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no"> 10<meta http-equiv="X-UA-Compatible" content="IE=edge"> 11<link rel="shortcut icon" href="../php/images.php" /> 12<meta charset="utf-8"> 13 14<meta name="description" content=""> 15<link type="text/css" rel="stylesheet" href="../css/libs/bootstrap.min.css"> 16<link rel="stylesheet" type="text/css" href="../css/libs/daterangepicker.min.css"/> 17<link rel="stylesheet" href="../css/libs/bootstrap-select.min.css"> 18<link rel="stylesheet" href="../css/libs/magicsuggest.min.css"/> 19<link type="text/css" rel="stylesheet" href="../css/libs/jquery.tag-editor.css"/> 20 21<link rel="stylesheet" href="../css/libs/element-ui.css"> 22<link type="text/css" rel="stylesheet" href="../css/libs/fontawesome/css/all.css"/> 23 24<link type="text/css" rel="stylesheet" href="../css/main1.css?v=68"/> 25<link type="text/css" rel="stylesheet" href="../css/nav1.css?v=8"/> 26<link type="text/css" rel="stylesheet" href="../css/main1-dark.css?v=10"> 27 28
29<script src="../js/libs/vue.min.js"></script>
vendor: 1 bytes, line 29
29
30<script src="../js/libs/vue-i18n.min.js"></script>
vendor: 1 bytes, line 30
30
31<script src="../js/libs/element-ui.js?v=1"></script>
vendor: 1 bytes, line 31
31
32<script> 33 var mainLangs = {en:{},de:{},es:{},fr:{},he:{},it:{},pt:{},sq:{},vi:{},zh:{}}; 34 var moreLangs = {en:{},de:{},es:{},fr:{},he:{},it:{},pt:{},sq:{},vi:{},zh:{}}; 35</script>
35 36 37 38 39 <link href="../css/libs/tailwind.min.css"rel="stylesheet"/> 40 <meta property="og:description" content="Log in into your account"/> 41 <style> 42 43 button.btn.tgme_widget_login_button{ 44 width: 400px !important; 45 min-width: 100% !important; 46 display: block !important; 47 48 } 49 </style> 50 </head> 51<body class="bg-blue-50"> 52 <div class="vueapp"> 53 <div v-if="loading.stauts" id="pb_loading" style="pointer-events: none;"> 54 <div style="z-index: 1000; top: 0px; left: 0px; position: fixed; width: 100%; height: 100%;" class="bg-white"> 55 <div style="text-align: center; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%)"> 56 <div class="spinner-border text-primary" role="status" style="width: 3rem; height: 3rem;"> 57 <span class="sr-only" v-t="'loading'"></span> 58 </div> 59 <p id="p_pb_info" style="margin-top: 10px" v-t="'loading'"></p> 60 </div> 61 </div> 62</div> 63 64 65<div id="mainForm" class="modal fade" data-backdrop="static"> 66 <div class="modal-dialog" :class="form.formWide ? 'modal-lg' : ''"> 67 <div class="modal-content"> 68 <div v-if="form.title" class="modal-header"> 69 <div class="invisible"></div> 70 <h5 class="modal-title">{{form.title}}</h5> 71 <div class="modal-dismiss" data-dismiss="modal" aria-label="Close"> 72 <i class="fal fa-times"></i> 73 </div> 74 </div> 75 <div class="modal-body"> 76 <div v-if="form.loading" class="text-center p-5"> 77 <div class="spinner-grow" role="status"> 78 <span class="sr-only" data-v-t="'loading'"></span> 79 </div> 80 </div> 81 <div v-else class="form-group_c"> 82 <div v-for="(item, index) in form.rows"> 83 <div class="form-group" v-if="item"> 84 <div v-if="item.type == 'saveTocustomField'" class="d-flex justify-content-between align-items-center"> 85 <label class="mb-0">{{$t('f.msg127')}}</label> 86 <div class="d-flex align-items-center"> 87 <button type="button" class="btn btn-link" v-t="'add_new'" @click="addNewCF()"></button> 88 </div> 89 </div> 90 <div v-else-if="item.type == 'textToText'" class="d-flex justify-content-between align-items-center"> 91 <label class="mb-0">{{item.label}}</label> 92 <label class="mb-0 pr-5">{{item.labelValue}}</label> 93 </div> 94 <div v-else-if="item.addNew" class="d-flex justify-content-between align-items-center"> 95 <label>{{item.label}} <span class="ml-1 op" v-if="!item.required">({{$t('optional')}})</span></label> 96 <button type="button" class="btn btn-link" v-t="'add_new'" @click="addNewItemSelect(item, index)"></button> 97 </div> 98 <label v-else>{{item.label}} <span class="ml-1 op" v-if="!item.required">({{$t('optional')}})</span></label> 99 100 <div v-if="item.type == 'text'"> 101 <input v-if="item.closeOnEnter" class="myimput w-100" v-model="item.value" :placeholder="item.placeholder" v-on:keyup.enter="$('#mainForm .positive').click();" size="medium"/> 102 <input v-else-if="item.maxlength" class="myimput w-100" v-model="item.value" :placeholder="item.placeholder" :maxlength="item.maxlength" size="medium"/> 103 <input v-else class="myimput w-100" v-model="item.value" :placeholder="item.placeholder" size="medium"/> 104 </div> 105 <div class="w-100" v-else-if="item.type == 'my-input'"> 106 <my-input v-model="item.value" :placeholder="item.placeholder" :maxlength="item.maxlength"></my-input> 107 </div> 108 <div class="w-100" v-else-if="item.type == 'textarea'"> 109 <el-input v-model="item.value" type="textarea" :rows="2" :placeholder="item.placeholder" v-model="textarea" :maxlength="item.maxlength" :maxrows="item.maxrows" size="medium"></el-input> 110 </div> 111 <div class="w-100" v-else-if="item.type == 'my-textarea'"> 112 <my-textarea v-model="item.value" :placeholder="item.placeholder" :maxlength="item.maxlength" :maxrows="item.maxrows"></my-textarea> 113 </div> 114 <div v-else-if="item.type == 'number'"> 115 <el-input-number class="w-100" size="medium" v-model="item.value" :max="item.max" :min="item.min" :step="item.step"></el-input-number> 116 </div> 117 <div v-else-if="item.type == 'select'"> 118 <div v-if="item.loading" class="text-center w-100"> 119 <div class="spinner-grow" role="status">
120 <span class="sr-only" data-v-t="'loading'"></span> 121 </div> 122 </div> 123 <el-select v-else filterable :placeholder="$t('select')" v-model="item.value" class="w-100" @change="formChanged(item)" :multiple="item.multiple" :disabled="!form.allowEdit" size="medium"> 124 <el-option v-for="i in item.options" :key="i[item.keyId]" :label="i[item.keyLabel]" :value="i[item.keyId]"></el-option> 125 </el-select> 126 </div> 127 <div v-else-if="item.type == 'saveTocustomField'"> 128 <div v-for="(map, index) in item.mapping" class="d-flex justify-content-between align-items-center mb-2"> 129 <el-input if="map.LabelType ==='text'" size="medium" v-model.trim="map.input" :disabled="map.disabled" :placeholder="map.placeholder"></el-input> 130 <div class="px-4"> 131 <i class="fal fa-arrow-right"></i> 132 </div> 133 <el-select v-model="map.saveTo" filterable :placeholder="$t('c_field')" class="w-100" size="medium"> 134 <el-option v-for="cf in customFields" :key="cf.id" :label="cf.name" :value="cf.id" v-if="item.fieldType === undefined || item.fieldType === null || item.fieldType.includes(parseInt(cf.type))"></el-option> 135 </el-select> 136 <div v-if="item.mapping.length > item.mininum" class="p-2 btt_delete_item" @click="arrayRemoveItem(item.mapping, null, null, index)"> 137 <i class="fa-light fa-xmark"></i> 138 </div> 139 </div> 140 <button v-if="item.mapping.length < item.maximum" type="button" v-on:click="item.mapping.push(cloneObj(item.mappingSample))" class="btn btn-light text-dark btn-sm rounded w-100 mt-3 py-2" v-t="'add_new'">Add Question</button> 141 </div> 142 <div v-else-if="item.type == 'textToText'"> 143 <div v-for="(map, index) in item.mapping" class="d-flex justify-content-between align-items-center mb-2"> 144 <el-input if="map.LabelType ==='text'" size="medium" v-model.trim="map.name" :placeholder="map.namePlaceholder" :disabled="map.disabled" :placeholder="map.placeholder"></el-input> 145 <div class="px-4"> 146 <i class="fal fa-arrow-right"></i> 147 </div> 148 <el-input size="medium" v-model.trim="map.value" :placeholder="map.valuePlaceholder"></el-input> 149 <div v-if="item.mapping.length > item.mininum" class="p-2 btt_delete_item" @click="arrayRemoveItem(item.mapping, null, null, index)"> 150 <i class="fa-light fa-xmark"></i> 151 </div> 152 </div> 153 <button v-if="item.mapping.length < item.maximum" type="button" v-on:click="item.mapping.push(cloneObj(item.mappingSample))" class="btn btn-light text-dark btn-sm rounded w-100 mt-3 py-2" v-t="'add_new'">Add Question</button> 154 </div> 155 <div v-else-if="item.type == 'customFieldTo'"> 156 <div v-for="(map, index) in item.mapping" class="d-flex justify-content-between align-items-center mb-2"> 157 <el-input v-if="map.LabelType ==='text'" size="medium" v-model.trim="map.input" :placeholder="map.placeholder"></el-input> 158 <el-select v-else-if v-model="map.input" filterable :placeholder="$t('c_field')" class="w-100" size="medium"> 159 <el-option v-for="cf in customFields" :key="cf.id" :label="cf.
159name" :value="cf.id" v-if="map.fieldType === undefined || map.fieldType === null || map.fieldType.includes(parseInt(cf.type))"></el-option> 160 </el-select> 161 <div class="px-4"> 162 <i class="fal fa-arrow-right"></i> 163 </div> 164 <el-input size="medium" v-model="map.saveTo.name" disabled></el-input> 165 </div> 166 </div> 167 <div v-else-if="item.type == 'createOptions'"> 168 <div v-for="(option, index) in item.value" class="d-flex justify-content-between align-items-center mb-2"> 169 <input class="myimput w-100" v-model="option.value" :placeholder="item.placeholder" :maxlength="item.maxlength"/> 170 <div v-if="item.value.length > item.mininum" class="p-2 btt_delete_item" @click="arrayRemoveItem(item.value, null, null, index)"> 171 <i class="fa-light fa-xmark"></i> 172 </div> 173 </div> 174 <button v-if="item.value.length < item.maximum" type="button" v-on:click="item.value.push({value:''})" class="btn btn-light text-dark btn-sm rounded w-100 mt-3 py-2" v-t="'add_new'">Add</button> 175 </div> 176 <div v-else-if="item.type == 'timePicker'"> 177 <el-time-picker 178 v-model="item.value" 179 :placeholder="item.placeholder" 180 :picker-options="item.pickerOptions" 181 size="medium" 182 class="w-100" 183 :format="item.format ?? 'HH:mm'" 184 :value-format="item.valueFormat ?? 'HH:mm'"> 185 </el-time-picker> 186 </div> 187 </div> 188 </div> 189 </div> 190 </div> 191 <div class="modal-footer"> 192 <div class="d-flex px-3 py-2 justify-content-between w-100"> 193 <button v-if="form.keepOnDone" type="button" class="btn btn-outline-secondary back" v-t="'back'" @click="mainData.form.callback(null)"></button> 194 <button data-dismiss="modal" type="button" class="btn btn-outline-secondary nagative" :class="form.keepOnDone ? 'invisible' : ''" v-t="'cancel'"></button> 195 <button type="button" class="btn btn-primary positive" v-t="'continue'"></button> 196 </div> 197 </div> 198 </div> 199 </div> 200</div> 201 202 203 204<div id="selectChannel" class="modal fade" data-backdrop="static" style="z-index: 1060 !important"> 205 <div class="modal-dialog"> 206 <div class="modal-content"> 207 <div class="modal-header"> 208 <div class="invisible"></div> 209 <h5 class="modal-title" v-t="'selectChannel'">{{form.title}}</h5> 210 <div class="modal-dismiss" data-dismiss="modal" aria-label="Close"> 211 <i class="fal fa-times"></i> 212 </div> 213 </div> 214 <div class="modal-body"> 215 <div class="pb-4"> 216 <div v-for="item in channelSelector.data" class="d-flex bg-white align-items-center py-3 px-2 px-3 px-md-4 justify-content-between z-depth-1 rounded-1 mt-3"> 217 <div class="d-flex align-items-center justify-content-start"> 218 <img width="40" :src="item.img"/> 219 <span class="ml-3 text-left pr-2">{{item.name}}</span> 220 </div> 221 <button data-dismiss="modal" type="button" class="btn btn-primary" data-v-t="'continue'" v-on:click="channelSelector.callback(item)"></button> 222 </div> 223 </div> 224 225 </div> 226 </div> 227 </div> 228</div> 229 230 231<div id="connectBotToAdmin" class="modal fade" style="z-index: 1060 !important"> 232 <div class="modal-dialog"> 233 <div class="modal-content" v-if="channelPreview.channelName"> 234 <div class="modal-header"> 235 <div class="invisible"></div> 236 <h5 class="modal-title" v-if="pageName == 'admins'" v-t="'continue'"></h5> 237 <h5 v-else-if="channelPreview.type == 'getLink'" class="modal-title" v-t="'getLink'"></h5> 238 <h5 v-else class="modal-title" v-t="'msg34'"></h5> 239 <div class="modal-dismiss" data-dismiss="modal" aria-label="Close"> 240 <i class="fal fa-times"></i> 241 </div> 242 </div> 243 <div class="modal-body text-center pb-5"> 244 245 <div v-if="channelPreview.android"> 246 <el-tabs value="iphone"> 247 <el-tab-pane label="iPhone" name="iphone"> 248 249 <div> 250 <p v-t="'msg35'"></p> 251 <img width="200" height="200" :sr
251c="channelPreview.ios.qr_code"/> 252 <div class="pt-3"> 253 <el-divider>{{$t('or')}}</el-divider> 254 </div> 255 </div> 256 <div class="mt-4"> 257 <button type="button" class="btn btn-primary btn-sm rounded w-100 mb-3" v-t="'openLink'" v-on:click="open_link(channelPreview.ios.url,1)"></button> 258 <el-divider content-position="center">{{'or'}}</el-divider> 259 <p>{{$tc('msg33', channelPreview.channelName)}}</p> 260 <p><b>{{channelPreview.message}}</b></p> 261 <button type="button" class="btn btn-light text-dark btn-sm rounded mt-1 px-3" v-t="'copy'" v-on:click="copyTextToClipboard(channelPreview.message)"></button> 262 </div> 263 </el-tab-pane> 264 <el-tab-pane label="Android" name="android"> 265 <div> 266 <p v-t="'msg35'"></p> 267 <img width="200" height="200" :src="channelPreview.android.qr_code"/> 268 <div class="pt-3"> 269 <el-divider>{{$t('or')}}</el-divider> 270 </div> 271 </div> 272 <div class="mt-4"> 273 <button type="button" class="btn btn-primary btn-sm rounded w-100 mb-3" v-t="'openLink'" v-on:click="open_link(channelPreview.android.url,1)"></button> 274 275 <el-divider content-position="center">{{'or'}}</el-divider> 276 <p>{{$tc('msg33', channelPreview.channelName)}}</p> 277 <p><b>{{channelPreview.message}}</b></p> 278 <button type="button" class="btn btn-light text-dark btn-sm rounded mt-1 px-3" v-t="'copy'" v-on:click="copyTextToClipboard(channelPreview.message)"></button> 279 </div> 280 </el-tab-pane> 281 </el-tabs> 282 </div> 283 <div v-else> 284 <div> 285 <p v-t="'msg35'"></p> 286 <img width="200" height="200" :src="channelPreview.qr_code"/> 287 <div class="pt-3"> 288 <el-divider>{{$t('or')}}</el-divider> 289 </div> 290 </div> 291 <div class="mt-4"> 292 <div v-if="channelPreview.type == 'getLink'" class="w-100"> 293 <a class="d-block text-truncate" :href="channelPreview.url" target="blank">{{channelPreview.url}}</a> 294 <button type="button" class="btn btn-light text-dark btn-sm rounded mt-2 px-3" v-t="'copy'" v-on:click="copyTextToClipboard(channelPreview.url)"></button> 295 </div> 296 <a v-else type="button" class="btn btn-primary btn-sm rounded w-100 mb-3" v-t="'openLink'" :href="channelPreview.url" target="blank"></a> 297 298 <div v-if="channelPreview.message"> 299 <el-divider content-position="center">{{'or'}}</el-divider> 300 <p>{{$tc('msg33', channelPreview.channelName)}}</p> 301 <p><b>{{channelPreview.message}}</b></p> 302 <button type="button" class="btn btn-light text-dark btn-sm rounded mt-1 px-3" v-t="'copy'" v-on:click="copyTextToClipboard(channelPreview.message)"></button> 303 </div> 304 305 </div> 306 </div> 307 308 </div> 309 </div> 310 </div> 311</div> 312 313 314<div id="mSendProduct" class="modal fade" data-backdrop="static" style="z-index: 1060 !important"> 315 <div class="modal-dialog"> 316 <div class="modal-content"> 317 <div class="modal-header"> 318 <div class="invisible"></div> 319 <h5 class="modal-title" data-v-t="'sendProducts'"></h5> 320 <div class="modal-dismiss" data-dismiss="modal" aria-label="Close"> 321 <i class="fal fa-times"></i> 322 </div> 323 </div> 324 <div class="modal-body" v-if="sendProduct"> 325 <div v-if="products !== null && products !== 0"> 326 <div v-if="sendProduct.channel == 5 && !sendProduct.easyMode"> 327 <div class="form-group"> 328 <label v-t="'f.headline'"></label> 329 <el-input v-model="sendProduct.header.text" maxlength="60" show-word-limit size="medium"></el-input> 330 </div> 331 <div class="form-group"> 332 <label v-t="'f.body'"></label> 333 <el-input type="textarea" :rows="1" v-model="sendProduct.body" maxlength="1024" show-word-limit></el-input> 334 </div> 335 <div class="form-group"> 336 <label>{{$t('f.footer')}}<span class="ml-1 op">({{$t('optional')}})</span></label> 337 <el-input type="textarea" :rows="1" v-model="sendProduct.footer" maxlength="64" show-word-limit></el-input> 338 </div> 339 </div> 340 <el-cascader v-if="sendProduct.easyMode" class="w-100" v-model="sendProduct.value" popper-class="hideDisabled" :options="sendProduct.options" :props="sendProduct.props" :show-all-levels="false" clearable filterable></el-cascader> 341 <div v-else> 342 <div v-for="(item, index) in sendProduct.sessions" class="my-3 py-3 px-3 border my_hr bdr_dashed rounded"> 343 <div v-if="sendProduct.channel == 5" class="form-group"> 344 <div class="d-flex justify-content-between align-items-center"> 345 <label>{{$t('f.title')}}<span class="ml-1 op" v-if="sendProduct.sessions.length == 1">({{$t('optional')}})</span></label> 346 <div v-if="sendProduct.sessions.length > 1" class="p-2 c_pointer" v-on:click="arrayRemoveItem(sendProduct.sessions, null, null, index)"> 347 <i class="fa-light fa-xmark"></i> 348 </div> 349 </div> 350 <el-input v-model="item.title" maxlength="24" show-word-limit size="medium"></el-input> 351 </div> 352 <el-cascader class="w-100" v-model="item.value" popper-class="hideDisabled" :options="sendProduct.options" :props="sendProduct.props" :show-all-levels="false" clearable filterable></el-cascader> 353 </div> 354 <p v-if="sendProduct.sessions.length < 10" class="btt_more py-1 text-center" v-on:click="sendProduct.sessions.push({title: '', value: []})" v-t="'addMore'"></p> 355 </div> 356 <div class="mt-3" v-if="sendProduct.channel == 5"> 357 <p class="btt_more" v-on:click="sendProduct.easyMode = !sendProduct.easyMode">{{sendProduct.easyMode ? $t('moreOption') : $t('lessOptions')}}</p> 358 </div> 359 </div> 360 <div v-else class="text-center p-5"> 361 <div class="spinner-grow" role="status">
362 <span class="sr-only" data-v-t="'loading'"></span> 363 </div> 364 </div> 365 366 </div> 367 <div class="modal-footer"> 368 <div v-pre class="d-flex px-3 py-2 justify-content-between w-100"> 369 <button data-dismiss="modal" type="button" class="btn btn-outline-secondary nagative" data-v-t="'cancel'"></button> 370 <button v-if="products" type="button" class="btn btn-primary positive" data-v-t="'continue'" ></button> 371 </div> 372 </div> 373 </div> 374 </div> 375 376</div> 377 378 379 380 381<div id="mSelectFolder" class="modal fade" data-backdrop="static" style="z-index: 1060 !important"> 382 <div class="modal-dialog"> 383 <div class="modal-content"> 384 <div class="modal-header"> 385 <div class="invisible"></div> 386 <h5 class="modal-title" data-v-t="'selectFolder'"></h5> 387 <div class="modal-dismiss" data-dismiss="modal" aria-label="Close"> 388 <i class="fal fa-times"></i> 389 </div> 390 </div> 391 <div class="modal-body"> 392 <div v-if="!selectFolder.loading"> 393 <div class="mb-3"> 394 <el-breadcrumb separator="/"> 395 <el-breadcrumb-item v-for="(item, index) in selectFolder.parents"> 396 <a v-if="index == selectFolder.parents.length - 1">{{item.name}}</a> 397 <a v-else v-on:click="preMoveFolder('list', item.id, null)">{{item.name}}</a> 398 </el-breadcrumb-item> 399 </el-breadcrumb> 400 </div> 401 402 <div v-if="selectFolder.currentFolders.length" class="folder-selector w-100"> 403 <div v-for="item in selectFolder.currentFolders"> 404 <div class="d-flex align-items-center mt-2"> 405 <div class="folder d-flex border rounded my-0" v-on:click="preMoveFolder('list', item.id, null)"> 406 <i class="fal fa-folder fIcon" style="pointer-events: all;"></i> 407 <span class="flex-fill text-left pl-3 text-truncate" style="pointer-events: all;">{{item.name}}</span> 408 </div> 409 <div class="pt-2 pl-3" :class="(!selectFolder.selectedFolder || selectFolder.selectedFolder.id == item.id) && activeFolder.id != item.id ? '' : 'invisible'"> 410 <el-checkbox v-model="item.selected" @change="preMoveFolder('selection', null, item)"></el-checkbox> 411 </div> 412 </div> 413 </div> 414 </div> 415 <div v-else class="p-5 text-center" v-t="'noResults'"> 416 </div> 417 418 </div> 419 <div v-else class="text-center p-5"> 420 <div class="spinner-grow" role="status"> 421 <span class="sr-only" data-v-t="'loading'"></span> 422 </div> 423 </div> 424 425 </div> 426 <div class="modal-footer"> 427 <div class="d-flex px-3 py-2 justify-content-between w-100"> 428 <button v-pre data-dismiss="modal" type="button" class="btn btn-outline-secondary nagative" data-v-t="'cancel'"></button> 429 <button type="button" class="btn btn-primary positive vueapp" v-t="'continue'" :disabled="!selectFolder.selectedFolder" v-on:click="preMoveFolder('done')"></button> 430 </div> 431 </div> 432 </div> 433 </div> 434 435</div> 436 437 438 439<div id="modalChangeImage" class="modal fade" data-backdrop="static"> 440 <div class="modal-dialog"> 441 <div class="modal-content"> 442 <div class="modal-header"> 443 <div class="invisible"></div> 444 <h5 class="modal-title vueapp" v-t="'uploadImage'"></h5> 445 <div class="modal-dismiss" data-dismiss="modal" aria-label="Close"> 446 <i class="fal fa-times"></i> 447 </div> 448 </div> 449 <div class="modal-body "> 450 <div class="vueapp text-center w-100" v-if="newLogo"> 451 <div v-if="newLogo.uploading" class="p-5"> 452 <div class="spinner-grow" role="status">
453 <span class="sr-only" data-v-t="'loading'"></span> 454 </div> 455 </div> 456 <div v-else> 457 <el-upload 458 ref="uploadLogo" 459 :on-change="inputLogoChanged" 460 :show-file-list="false" 461 :auto-upload="false" 462 action="#"> 463 <div slot="trigger"> 464 <img width="200" height="200" class="rounded" :src="newLogo.previewURL" alt=""> 465 </div> 466 </el-upload> 467 </div> 468 </div> 469 470 471 </div> 472 <div class="modal-footer"> 473 <div class="d-flex px-3 py-2 justify-content-between w-100"> 474 <button data-dismiss="modal" type="button" class="btn btn-outline-secondary nagative" data-v-t="'cancel'"></button> 475 <button type="button" class="btn btn-primary positive vueapp" data-v-t="'save'" v-if="newLogo" :disabled="!newLogo.file || newLogo.uploading" @click="changeLogo()"></button> 476 </div> 477 </div> 478 </div> 479 </div> 480</div> 481 482 483 </div> 484 485 <div class="flex py-3 pl-4 vueapp" v-cloak v-if="wt"> 486 <div class="flex flex-row items-center"> 487 <img src="../php/images?id=icon500" width="35px" style="margin-right: 10px"></img> 488 <p class="font-bold text-xl text-gray-500 break-words text-center">{{wt.name}}</p> 489 </div> 490 </div> 491 492 493 <div class="flex justify-center items-center mt-4 pt-4" v-if="wt"> 494 495 <div v-cloak class="grid grid-cols-1 mx-4 w-100 vueapp" style="max-width: 32rem;"> 496 497 <!--<div class="flex flex-col justify-center items-center"> 498 <div class="flex flex-row items-center"> 499 <img src="../php/images?id=icon500" width="35px" style="margin-right: 10px"></img> 500 <p class="font-bold text-xl text-gray-500 break-words text-center">{{wt.name}}</p> 501 </div> 502 </div>--> 503 <div v-if="data.provider" class="p-2 cursor-pointer" v-on:click="goBack()"> 504 <i class="fa-solid fa-arrow-left-long"></i> 505 </div> 506 <div class=" flex flex-col justify-center items-center pl-4 pr-4 md:pl-8 md:pr-8 bg-white rounded-xl shadow-sm"> 507 508 <div class="flex flex-row items-center my-8" style="color: #007bff"> 509 <span v-if="data.step != 'createAccount' && !data.nextAccount" class="font-bold text-2xl" v-t="'signIn'"></span> 510 <span v-else class="font-bold text-2xl" v-t="'signUp'"></span> 511 </div> 512 513 <div class="w-100" v-if="data.type == 'login' && data.provider == 'email'" > 514 <div v-if="!data.step"> 515 <p v-if="data.errorNoaccount" v-t="'out.msg36'" class="text-warning mb-1"></p> 516 <input v-model.trim="data.data.email" type="text" class="myimput w-100" :placeholder="$t('emailAddress')" v-on:keyup.enter="sendOTP()"/> 517 <button type="button" class="btn btn-primary w-100 mt-2" v-t="'continue'" :disabled="!isEmailValid(data.data.email)" v-on:click="sendOTP()"></button> 518 </div> 519 <div v-else-if="data.step == 'createAccount'"> 520 <div class="form-group"> 521 <label v-t="'u.firstName'"></label> 522 <input v-model="data.data.first_name" type="text" class="myimput w-100"/> 523 </div> 524 <div class="form-group"> 525 <label v-t="'u.lastName'"></label> 526 <input v-model="data.data.last_name" type="text" class="myimput w-100"/> 527 </div> 528 <button type="button" class="btn btn-primary w-100 mt-2" v-t="'continue'" :disabled="data.data.first_name === '' || data.data.last_name === ''" v-on:click="createAccount()"></button> 529 </div> 530 <div v-else> 531 <label> 532 <i18n path="out.msg35" tag="span"> 533 <b>{{data.data.email}}</b></a> 534 </i18n> 535 </label> 536 <input v-model.trim="data.data.otp" type="text" class="myimput w-100" placeholder="------" v-on:keyup.enter="validateOTP()"/> 537 <button type="button" class="btn btn-primary w-100 mt-2" v-t="'continue'" :disabled="data.data.otp.length != 6" v-on:click="validateOTP()"></button> 538 </div> 539 540 </div> 541 <div v-else> 542 <button v-if="data.wt && data.wt.fb" v-on:click="getAuthLink('fb')" class="h-16 w-full bg-white hover:border-gray-400 my-2 rounded-xl border-2 border-gray-200 cursor-pointer"> 543 <div class="flex flex-row justify-center items-center"> 544 <img width="30px" src="../images/facebook.svg" alt=""/>
545 <span v-if="!data.nextLink" class="ml-2 text-gray-500 text-lg font-bold">{{$tc('signInWith', 'Facebook')}}</span> 546 <span v-else class="ml-2 text-gray-500 text-lg font-bold">{{$tc('continueWith', 'Facebook')}}</span> 547 </div> 548 </button> 549 550 <button v-if="data.wt && data.wt.google" v-on:click="getAuthLink('google')" class="h-16 w-full bg-white hover:border-gray-400 my-2 rounded-xl border-2 border-gray-200 cursor-pointer"> 551 <div class="flex flex-row justify-center items-center"> 552 <img width="30px" src="../images/google.svg" alt=""/> 553 <span v-if="!data.nextLink" class="ml-2 text-gray-500 text-lg font-bold">{{$tc('signInWith', 'Google')}}</span> 554 <span v-else class="ml-2 text-gray-500 text-lg font-bold">{{$tc('continueWith', 'Google')}}</span> 555 </div> 556 </button> 557 558 559 <button v-if="data.wt && data.wt.ms" v-on:click="getAuthLink('microsoft')" class="h-16 w-full bg-white hover:border-gray-400 my-2 rounded-xl border-2 border-gray-200 cursor-pointer"> 560 <div class="flex flex-row justify-center items-center"> 561 <img width="30px" src="../images/microsoft.svg" alt=""/> 562 <span v-if="!data.nextLink" class="ml-2 text-gray-500 text-lg font-bold">{{$tc('signInWith', 'Microsoft')}}</span> 563 <span v-else class="ml-2 text-gray-500 text-lg font-bold">{{$tc('continueWith', 'Microsoft')}}</span> 564 </div> 565 </button> 566 567 <button v-if="wt.apple" v-on:click="getAuthLink('apple')" class="h-16 w-full bg-white hover:border-gray-400 my-2 rounded-xl border-2 border-gray-200 cursor-pointer"> 568 <div class="flex flex-row justify-center items-center"> 569 <i class="fab fa-apple text-black text-4xl"></i> 570 <span v-if="!data.nextLink" class="ml-2 text-gray-500 text-lg font-bold">{{$tc('signInWith', 'Apple')}}</span> 571 <span v-else class="ml-2 text-gray-500 text-lg font-bold">{{$tc('continueWith', 'Apple')}}</span> 572 </div> 573 </button> 574 575 576 577 578 <button v-if="wt.smtp && data.wt && data.wt.loginOptions.includes('email')" class="h-16 w-full bg-white hover:border-gray-400 my-2 rounded-xl border-2 border-gray-200 cursor-pointer" v-on:click="data.provider='email'"> 579 <div class="flex flex-row justify-center items-center"> 580 <i class="fa-solid fa-envelope text-muted text-3xl"></i> 581 <span v-if="!data.nextLink" class="ml-2 text-gray-500 text-lg font-bold">{{$tc('signInWith', 'Email')}}</span> 582 <span v-else class="ml-2 text-gray-500 text-lg font-bold">{{$tc('continueWith', 'Email')}}</span> 583 </div> 584 </button> 585 586 587 588 589 590 <div class="pt-2"> 591 <a v-if="wt && wt.signup && !data.nextLink" href="new-bot" class="cursor-pointer text-gray-400 hover:text-blue-500 mt-3 mb-2 w-100 text-center"> 592 <div> 593 <span data-v-t="'out.msg0'"></span> 594 <span class="font-bold" data-v-t="'signUp'"></span> 595 </div> 596 </a> 597 </div> 598 </div> 599 600 <div class="vueapp w-full my-4 flex flex-row justify-evenly hover:text-blue-500"> 601 602 <a class="hover:text-blue-500 text-gray-400" :href="data.wt ? data.wt.termsOfServices : '../php/images?id=terms'" target="_blank">
603 <span class="text-sm" v-t="'termsOfService'"></span> 604 </a> 605 606 <a class="hover:text-blue-500 text-gray-400" :href="data.wt ? data.wt.privacyPolicy : '../php/images?id=policy'" target="_blank"> 607 <span class="text-sm" v-t="'privacyPolicy'"></span> 608 </a> 609 610 </div> 611 612 </div> 613 614 </div> 615 616 </div> 617 618 619
619<script> 620 if(localStorage.getItem('theme') === 'dark'){ 621 document.body.classList.toggle("dark"); 622 document.documentElement.classList.toggle("dark"); 623 } 624</script>
624 625
626<script src="../js/libs/jquery.min.js"></script>
vendor: 1 bytes, line 626
626
627<script src="../js/libs/popper.min.js" ></script>
vendor: 1 bytes, line 627
627
628<script src="../js/libs/jquery-ui.min.js"></script>
vendor: 1 bytes, line 628
628
629<script src="../js/libs/bootstrap.min.js"></script>
629 630
631<script src="../js/libs/jquery.mCustomScrollbar.concat.min.js"></script>
631
632<script src="../js/libs/jquery.dataTables.min.js"></script>
vendor: 1 bytes, line 632
632
633<script src="../js/libs/dataTables.bootstrap4.min.js"></script>
633
634<script src="../js/libs/bootstrap-select.min.js"></script>
vendor: 1 bytes, line 634
634
635<script src="../js/libs/moment.min.js"></script>
635
636<script src="../js/libs/daterangepicker.min.js"></script>
636
637<script src="../js/libs/magicsuggest.min.js"></script>
637
638<script src="../js/libs/jquery.tag-editor.min.js"></script>
vendor: 1 bytes, line 638
638
639<script src="../js/libs/jquery.caret.min.js"></script>
vendor: 1 bytes, line 639
639
640<script src="../js/libs/element-ui-en.js"></script>
640 641 642 643
644<script src="../locales/en/common.js?v=107"></script>
644
645<script>ELEMENT.locale(ELEMENT.lang.en)</script>
645<script src="../locales/en/login.js?v=17"></script>
645<script src="../locales/en/users.js?v=10"></script>
645 646
647<script src="../js/components.js?v=8"></script>
vendor: 1 bytes, line 647
647
648<script src="../js/main1.js?v=238"></script>
vendor: 1 bytes, line 648
648
649<script src="lang/main.js?v=7"></script>
vendor: 1 bytes, line 649
649
650<script src="../js/libs/search.js"></script>
vendor: 1 bytes, line 650
650
651<script src="../js/libs/jquery.easing.1.3.min.js"></script>
vendor: 1 bytes, line 651
651
652<script src="../js/libs/semantic-api.js"></script>
652 653 654 655 656 657 658 659 660 661
661<script>var login_page = true;</script>
661 662
662<script type="text/javascript" src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js"></script>
662 663
663<script src="../js/fb1.js?v=1"></script>
663 664
664<script src="../js/login.js?v=10"></script>
664 665
665<script src="../js/fb1.js?v=18"></script>
vendor: 1 bytes, line 665
665
666<script> 667 show_main_menu_new(); 668</script>
668 669 670</body> 671 672</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.