| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- document.head.insertAdjacentHTML('beforeend','<style type="text/css">'+stylFns['app/pages/Admin/Settings/index.styl']+'</style>')
- PouchDB = require 'app/utils/pouch'
- module.exports =
- name: 'AdminSettings'
-
- render: (new Function '_ctx', '_cache', renderFns['app/pages/Admin/Settings/index.pug'])()
-
- data: ->
- return {
- activeTab: 'domains'
- tabs: [
- { id: 'domains', name: 'Домены' }
- { id: 'languages', name: 'Языки' }
- { id: 'general', name: 'Общие настройки' }
- ]
- domains: []
- languages: [
- { code: 'ru', name: 'Русский', enabled: true }
- { code: 'en', name: 'English', enabled: false }
- { code: 'de', name: 'Deutsch', enabled: false }
- ]
- availableLanguages: [
- { code: 'ru', name: 'Русский' }
- { code: 'en', name: 'English' }
- { code: 'de', name: 'Deutsch' }
- ]
- generalSettings: {
- companyName: 'Браер-Колор'
- notificationEmail: 'admin@braer-color.ru'
- currency: 'RUB'
- }
- showDomainModal: false
- editingDomain: null
- domainForm: {
- domain: ''
- companyName: ''
- languages: ['ru']
- }
- }
-
- computed:
- currentDomain: ->
- window.location.hostname
-
- methods:
- getTabClass: (tab) ->
- baseClass = 'admin-settings__tab'
- isActive = @activeTab == tab.id
-
- if isActive
- return "#{baseClass} admin-settings__tab--active"
- else
- return "#{baseClass} admin-settings__tab--inactive"
-
- getLanguageBtnClass: (lang) ->
- baseClass = 'admin-settings__language-btn'
- if lang.enabled
- return "#{baseClass} admin-settings__language-btn--enabled"
- else
- return "#{baseClass} admin-settings__language-btn--disabled"
-
- loadDomains: ->
- PouchDB.queryView('admin', 'domain_settings', { include_docs: true })
- .then (result) =>
- @domains = result.rows.map (row) -> row.doc
- .catch (error) =>
- console.error 'Ошибка загрузки доменов:', error
- @showNotification 'Ошибка загрузки доменов', 'error'
-
- loadGeneralSettings: ->
- PouchDB.getDocument('settings:general')
- .then (settings) =>
- @generalSettings = { ...@generalSettings, ...settings }
- .catch (error) =>
- debug.log 'Общие настройки не найдены, используются значения по умолчанию'
-
- saveGeneralSettings: ->
- settingsDoc = {
- _id: 'settings:general'
- type: 'settings'
- ...@generalSettings
- updatedAt: new Date().toISOString()
- }
-
- PouchDB.saveToRemote(settingsDoc)
- .then (result) =>
- @showNotification 'Общие настройки сохранены'
- .catch (error) =>
- console.error 'Ошибка сохранения настроек:', error
- @showNotification 'Ошибка сохранения настроек', 'error'
-
- addDomain: ->
- @editingDomain = null
- @domainForm = {
- domain: ''
- companyName: ''
- languages: ['ru']
- }
- @showDomainModal = true
-
- editDomain: (domain) ->
- @editingDomain = domain
- @domainForm = {
- domain: domain.domain
- companyName: domain.companyName
- languages: domain.languages || ['ru']
- }
- @showDomainModal = true
-
- saveDomain: ->
- if !@domainForm.domain
- @showNotification 'Введите домен', 'error'
- return
-
- domainDoc = {
- _id: "domain_settings:#{@domainForm.domain}"
- type: 'domain_settings'
- domain: @domainForm.domain
- companyName: @domainForm.companyName
- languages: @domainForm.languages
- createdAt: if @editingDomain then @editingDomain.createdAt else new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
-
- if @editingDomain
- domainDoc._rev = @editingDomain._rev
-
- PouchDB.saveToRemote(domainDoc)
- .then (result) =>
- @showDomainModal = false
- @loadDomains()
- @showNotification 'Домен сохранен'
- .catch (error) =>
- console.error 'Ошибка сохранения домена:', error
- @showNotification 'Ошибка сохранения домена', 'error'
-
- deleteDomain: (domainId) ->
- if confirm('Вы уверены, что хотите удалить этот домен?')
- PouchDB.getDocument(domainId)
- .then (doc) ->
- PouchDB.saveToRemote({ ...doc, _deleted: true })
- .then (result) =>
- @loadDomains()
- @showNotification 'Домен удален'
- .catch (error) =>
- console.error 'Ошибка удаления домена:', error
- @showNotification 'Ошибка удаления домена', 'error'
-
- toggleLanguage: (langCode) ->
- language = @languages.find (lang) -> lang.code == langCode
- if language
- language.enabled = !language.enabled
- # Сохраняем настройки языков
- @saveLanguageSettings()
-
- saveLanguageSettings: ->
- languagesDoc = {
- _id: 'settings:languages'
- type: 'settings'
- languages: @languages.filter((lang) -> lang.enabled).map((lang) -> lang.code)
- updatedAt: new Date().toISOString()
- }
-
- PouchDB.saveToRemote(languagesDoc)
- .then (result) =>
- @showNotification 'Настройки языков обновлены'
- .catch (error) =>
- console.error 'Ошибка сохранения языков:', error
- @showNotification 'Ошибка сохранения языков', 'error'
-
- showNotification: (message, type = 'success') ->
- @$root.showNotification?(message, type) || debug.log("#{type}: #{message}")
-
- mounted: ->
- @loadDomains()
- @loadGeneralSettings()
|