PageSourceSearch

https://examka.ai/build/assets/ContentTab-BAcZmXJI.js

js examka.ai collected 2026-10-05 11:59:24 UTC 6,856 bytes, 2 lines download raw bytes

1import{u as D,w,g as M,h as O,s as H,a as m,l as y,c as $,d as v,Q as A,e as Q,p as F,C as L,r as G}from"./quasar-vendor-DFEtZeca.js";import{c as z,a as c,B as k,C as u,G as n,N as l,H as C,I as V,J as a,L as d,u as E,a0 as S,M as j,w as J}from"./vue-vendor-Dl94QmVT.js";import{_ as P}from"./app-CRIFlfSa.js";const K={class:"row q-col-gutter-lg"},R={class:"col-12 col-md-6 q-gutter-y-md"},W={key:1,class:"row items-center q-gutter-sm"},X={class:"row q-gutter-sm"},Y={class:"col-12 col-md-6"},Z={class:"text-weight-medium"},h=["srcdoc"],_={__name:"ContentTab",props:{name:{type:String,default:""},subject:{type:String,default:""},body:{type:String,default:""},newsletter:{type:Object,required:!0},templates:{type:Array,default:()=>[]},errors:{type:Object,default:()=>({})},dirty:{type:Boolean,default:!1}},emits:["update:name","update:subject","update:body"],setup(t,{emit:q}){const o=t,f=q,T=D(),B=z(()=>o.templates.map(r=>({value:r.id,label:r.name,caption:r.subject}))),i=c(null),g=c(!1);function I(){const r=o.templates.find(e=>e.id===i.value);r&&T.dialog({title:"Применить шаблон?",message:`Тема и текст письма заменятся шаблоном «${r.name}».${o.dirty?" Несохранённые правки на экране пропадут.":""}`,cancel:{flat:!0,noCaps:!0,label:"Отмена"},ok:{color:"primary",noCaps:!0,label:"Заменить письмо"}}).onOk(()=>{g.value=!0,S.post(route("admin.newsletters.template.apply",o.newsletter.id),{template_id:r.id},{preserveScroll:!0,onSuccess:()=>{i.value=null},onFinish:()=>{g.value=!1}})})}const p=c(!1),b=c(""),x=c(!1);function N(){b.value=o.name,p.value=!0}function U(){x.value=!0,S.post(route("admin.newsletters.template.save",o.newsletter.id),{name:b.value||null,subject:o.subject,body:o.body},{preserveScroll:!0,preserveState:!0,onSuccess:()=>{o.errors.template||(p.value=!1)},onFinish:()=>{x.value=!1}})}return(r,e)=>(u(),k("div",K,[n("div",R,[t.newsletter.can_edit?V("",!0):(u(),C(w,{key:0,rounded:"",class:"bg-grey-2"},{default:a(()=>e[7]||(e[7]=[d(" Рассылка уже запускалась — письмо только для просмотра. Чтобы отправить похожее, скопируйте рассылку. ")])),_:1})),t.newsletter.can_edit?(u(),k("div",W,[l(H,{modelValue:i.value,"onUpdate:modelValue":e[0]||(e[0]=s=>i.value=s),dense:"",outlined:"","emit-value":"","map-options":"",clearable:"",options:B.value,label:"Применить шаблон…",class:"col",disable:!t.templates.length},{"no-option":a(()=>[l(M,null,{default:a(()=>[l(O,{class:"text-grey-7"},{default:a(()=>e[8]||(e[8]=[d("Шаблонов пока нет")])),_:1})]),_:1})]),_:1},8,["modelValue","options","disable"]),l(m,{outline:"","no-caps":"",color:"primary",label:"Применить",disable:!i.value,loading:g.value,onClick:I},null,8,["disable","loading"])])):V("",!0),n("div",X,[l(m,{flat:"",dense:"","no-caps":"",color:"primary",icon:"bookmark_add",label:"Сохранить как шаблон",onClick:N}),l(m,{flat:"",dense:"","no-caps":"",color:"primary",icon:"description",label:"Все шаблоны",onClick:e[1]||(e[1]=s=>E(S).visit(r.route("admin.newsletters.templates.index")))})]),l(y,{"model-value":t.name,outlined:"",label:"Название рассылки",hint:"Видно только в админке — в письмо не попадает",readonly:!t.newsletter.can_edit,error:!!t.errors.name,"error-message":t.errors.name,"onUpdate:modelValue":e[2]||(e[2]=s=>f("update:name",s))},null,8,["model-value","readonly","error","error-message"]),l(y,{"model-value":t.subject,outlined:"",label:"Тема письма",counter:"",maxlength:"500",readonly:!t.newsletter.can_edit,error:!!t.errors.subject,"error-message":t.errors.subject,"onUpdate:modelValue":e[3]||(e[3]=s=>f("update:subject",s))},null,8,["model-value","readonly","error","error-message"]),l(y,{"model-value":t.body,type:"textarea",outlined:"",label:"Текст письма (HTML)","input-style":{minHeight:"360px",fontFamily:"monospace",fontSize:"13px"},readonly:!t.newsletter.can_edit,error:!!t.errors.body,"error-message":t.errors.body,"onUpdate:modelValue":e[4]||(e[4]=s=>f("update:body",s))},null,8,["model-value","readonly","error","error-message"]),l(w,{rounded:"",dense:"",class:"bg-blue-1 text-body2"},{avatar:a(()=>[l($,{name:"unsubscribe",color:"primary"})]),default:a(()=>[e[9]||(e[9]=d(" Своей ссылки отписки в письмах нет: вставьте в текст ссылку отписки DashaMail (ссылка с ")),e[10]||(e[10]=n("code",null,'class="unsub_link"',-1)),e[11]||(e[11]=d(", формат — в кабинете DashaMail). Без неё получатель не сможет отписаться, а отписка не дойдёт до Экзамки. Текстовая версия письма собирается из HTML автоматически. "))]),_:1})]),n("div",Y,[e[14]||(e[14]=n("div",{class:"text-subtitle2 q-mb-sm"},"Предпросмотр",-1)),l(Q,{flat:"",bordered:""},{default:a(()=>[l(v,{class:"q-py-sm bg-grey-1"},{default:a(()=>[e[12]||(e[12]=n("div",{class:"text-caption text-grey-7"},"Тема",-1)),n("div",Z,j(t.subject||"Без темы"),1)]),_:1}),l(A),t.body?(u(),k("iframe",{key:0,class:"newsletter-preview",sandbox:"",srcdoc:t.body,title:"Предпросмотр письма"},null,8,h)):(u(),C(v,{key:1,class:"text-grey-6 text-center q-pa-xl"},{default:a(()=>e[13]||(e[13]=[d("Текст письма пуст")])),_:1}))]),_:1})]),l(G,{modelValue:p.value,"onUpdate:modelValue":e[6]||(e[6]=s=>p.value=s)},{default:a(()=>[l(Q,{style:{"min-width":"min(480px, 90vw)"}},{default:a(()=>[l(v,{class:"text-h6"},{default:a(()=>
1e[15]||(e[15]=[d("Сохранить письмо как шаблон")])),_:1}),l(v,{class:"q-gutter-y-sm"},{default:a(()=>[e[16]||(e[16]=n("p",{class:"text-body2 text-grey-7 q-mb-none"}," Тема и текст с экрана сохранятся и в рассылку, и в новый шаблон. Дальнейшая правка шаблона эту рассылку не изменит. ",-1)),t.errors.template?(u(),C(w,{key:0,rounded:"",dense:"",class:"bg-red-1 text-negative"},{default:a(()=>[d(j(t.errors.template),1)]),_:1})):V("",!0),l(y,{modelValue:b.value,"onUpdate:modelValue":e[5]||(e[5]=s=>b.value=s),outlined:"",autofocus:"",label:"Название шаблона",placeholder:t.name},null,8,["modelValue","placeholder"])]),_:1}),l(F,{align:"right"},{default:a(()=>[J(l(m,{flat:"","no-caps":"",label:"Отмена"},null,512),[[L]]),l(m,{color:"primary","no-caps":"",label:"Сохранить",loading:x.value,onClick:U},null,8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]))}},ae=P(_,[["__scopeId","data-v-469b7c04"]]);export{ae as default};
2//# sourceMappingURL=ContentTab-BAcZmXJI.js.map

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.