| @@ -255,7 +255,7 @@ export default { | |||||
| > | > | ||||
| <i v-if="csvLoading" class="fas fa-spinner fa-spin me-2"></i> | <i v-if="csvLoading" class="fas fa-spinner fa-spin me-2"></i> | ||||
| <i v-else class="fas fa-file-csv me-2"></i> | <i v-else class="fas fa-file-csv me-2"></i> | ||||
| {{ csvLoading ? "Exporting..." : "Export CSV" }} | |||||
| {{ csvLoading ? "خروجی..." : "خروجی CSV" }} | |||||
| </button> | </button> | ||||
| <button | <button | ||||
| class="btn btn-danger d-flex align-items-center" | class="btn btn-danger d-flex align-items-center" | ||||
| @@ -270,7 +270,7 @@ export default { | |||||
| > | > | ||||
| <i v-if="pdfLoading" class="fas fa-spinner fa-spin me-2"></i> | <i v-if="pdfLoading" class="fas fa-spinner fa-spin me-2"></i> | ||||
| <i v-else class="fas fa-file-pdf me-2"></i> | <i v-else class="fas fa-file-pdf me-2"></i> | ||||
| {{ pdfLoading ? "Exporting..." : "Export PDF" }} | |||||
| {{ pdfLoading ? "خروجی..." : "خروجی PDF" }} | |||||
| </button> | </button> | ||||
| </div> | </div> | ||||
| @@ -284,6 +284,7 @@ export default { | |||||
| <th>کاربر</th> | <th>کاربر</th> | ||||
| <th>موبایل</th> | <th>موبایل</th> | ||||
| <th>دیوایس</th> | <th>دیوایس</th> | ||||
| <th>ip</th> | |||||
| <th>زمان بازدید</th> | <th>زمان بازدید</th> | ||||
| </tr> | </tr> | ||||
| </thead> | </thead> | ||||
| @@ -293,6 +294,7 @@ export default { | |||||
| <td>{{ log?.user?.name }}</td> | <td>{{ log?.user?.name }}</td> | ||||
| <td>{{ log?.user?.mobile }}</td> | <td>{{ log?.user?.mobile }}</td> | ||||
| <td>{{ getDeviceDetails(log.device) }}</td> | <td>{{ getDeviceDetails(log.device) }}</td> | ||||
| <td>{{ log?.ip_address }}</td> | |||||
| <td>{{ log.created_at }}</td> | <td>{{ log.created_at }}</td> | ||||
| </tr> | </tr> | ||||
| </tbody> | </tbody> | ||||
| @@ -623,7 +623,7 @@ export default { | |||||
| > | > | ||||
| <i v-if="csvLoading" class="fas fa-spinner fa-spin me-2"></i> | <i v-if="csvLoading" class="fas fa-spinner fa-spin me-2"></i> | ||||
| <i v-else class="fas fa-file-csv me-2"></i> | <i v-else class="fas fa-file-csv me-2"></i> | ||||
| {{ csvLoading ? "Exporting..." : "Export CSV" }} | |||||
| {{ csvLoading ? "خروجی..." : "خروجی CSV" }} | |||||
| </button> | </button> | ||||
| <button | <button | ||||
| class="btn btn-danger d-flex align-items-center" | class="btn btn-danger d-flex align-items-center" | ||||
| @@ -638,7 +638,7 @@ export default { | |||||
| > | > | ||||
| <i v-if="pdfLoading" class="fas fa-spinner fa-spin me-2"></i> | <i v-if="pdfLoading" class="fas fa-spinner fa-spin me-2"></i> | ||||
| <i v-else class="fas fa-file-pdf me-2"></i> | <i v-else class="fas fa-file-pdf me-2"></i> | ||||
| {{ pdfLoading ? "Exporting..." : "Export PDF" }} | |||||
| {{ pdfLoading ? "خروجی..." : "خروجی PDF" }} | |||||
| </button> | </button> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -566,7 +566,7 @@ export default { | |||||
| > | > | ||||
| <i v-if="csvLoading" class="fas fa-spinner fa-spin me-2"></i> | <i v-if="csvLoading" class="fas fa-spinner fa-spin me-2"></i> | ||||
| <i v-else class="fas fa-file-csv me-2"></i> | <i v-else class="fas fa-file-csv me-2"></i> | ||||
| {{ csvLoading ? "Exporting..." : "Export CSV" }} | |||||
| {{ csvLoading ? "خروجی..." : "خروجی CSV" }} | |||||
| </button> | </button> | ||||
| <button | <button | ||||
| class="btn btn-danger d-flex align-items-center" | class="btn btn-danger d-flex align-items-center" | ||||
| @@ -581,7 +581,7 @@ export default { | |||||
| > | > | ||||
| <i v-if="pdfLoading" class="fas fa-spinner fa-spin me-2"></i> | <i v-if="pdfLoading" class="fas fa-spinner fa-spin me-2"></i> | ||||
| <i v-else class="fas fa-file-pdf me-2"></i> | <i v-else class="fas fa-file-pdf me-2"></i> | ||||
| {{ pdfLoading ? "Exporting..." : "Export PDF" }} | |||||
| {{ pdfLoading ? "خروجی..." : "خروجی PDF" }} | |||||
| </button> | </button> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -98,7 +98,7 @@ export default { | |||||
| position: "top-right", | position: "top-right", | ||||
| autoClose: 1000, | autoClose: 1000, | ||||
| }); | }); | ||||
| getSettings() | |||||
| getSettings(); | |||||
| }) | }) | ||||
| .catch(() => { | .catch(() => { | ||||
| toast.error("مشکلی در ویرایش تنظیمات پیش آمد", { | toast.error("مشکلی در ویرایش تنظیمات پیش آمد", { | ||||
| @@ -156,7 +156,7 @@ export default { | |||||
| <div class="col-sm-12"> | <div class="col-sm-12"> | ||||
| <BCard no-body> | <BCard no-body> | ||||
| <BCardHeader> | <BCardHeader> | ||||
| <h5>Site Settings</h5> | |||||
| <h5>تنظیمات سایت</h5> | |||||
| </BCardHeader> | </BCardHeader> | ||||
| <BCardBody> | <BCardBody> | ||||
| <!-- Dynamically Render Settings --> | <!-- Dynamically Render Settings --> | ||||
| @@ -180,6 +180,23 @@ export default { | |||||
| </small> | </small> | ||||
| </template> | </template> | ||||
| <!-- Handle Textarea Fields --> | |||||
| <template | |||||
| v-else-if=" | |||||
| [ | |||||
| 'about_us_description_fa', | |||||
| 'about_us_description_en', | |||||
| ].includes(setting.key) | |||||
| " | |||||
| > | |||||
| <textarea | |||||
| class="form-control" | |||||
| v-model="setting.value" | |||||
| :placeholder="`Enter ${setting.key}`" | |||||
| rows="4" | |||||
| ></textarea> | |||||
| </template> | |||||
| <!-- Handle Text Fields --> | <!-- Handle Text Fields --> | ||||
| <template v-else> | <template v-else> | ||||
| <input | <input | ||||
| @@ -197,9 +214,7 @@ export default { | |||||
| :disabled="loadingIds.includes(setting.id)" | :disabled="loadingIds.includes(setting.id)" | ||||
| @click="updateSetting(setting)" | @click="updateSetting(setting)" | ||||
| > | > | ||||
| <span v-if="loadingIds.includes(setting.id)"> | |||||
| ویرایش... | |||||
| </span> | |||||
| <span v-if="loadingIds.includes(setting.id)">ویرایش...</span> | |||||
| <span v-else>ویرایش</span> | <span v-else>ویرایش</span> | ||||
| </BButton> | </BButton> | ||||
| </div> | </div> | ||||