diff --git a/.tmp_contact.py b/.tmp_contact.py new file mode 100644 index 0000000..73fbcb9 --- /dev/null +++ b/.tmp_contact.py @@ -0,0 +1,50 @@ +import json, re, uuid, urllib.request, http.cookiejar +from pathlib import Path + +pw = re.search(r'SITEFORGE_ADMIN_PASSWORD=(.+)', Path('.env').read_text()).group(1).strip() +cj = http.cookiejar.CookieJar() +opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) +BASE = 'http://127.0.0.1:8787' +sid = '483295c29ea0' +opener.open(urllib.request.Request(BASE+'/api/auth/login', + data=json.dumps({'username':'admin','password':pw}).encode(), + headers={'Content-Type':'application/json'})) +csrf = json.load(opener.open(BASE+'/api/auth/me'))['csrf'] + +gmaps = 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3276.4503537870382!2d113.59874507574851!3d34.79460997288641!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x35d764e14634544d%3A0x2fcba85c7824cd78!2sHe%27Nan+Province+National+University+Science+Park+(East+Zone)+17+Building+Parking+Lot!5e0!3m2!1sen!2sjp!4v1714461571915!5m2!1sen!2sjp' + +blocks = [ + {'id':uuid.uuid4().hex[:10],'type':'hero','visible':True, + 'title':'Contact Us','subtitle':'GET IN TOUCH', + 'description':'We respond within one business day.', + 'image':'','button':'','href':'','align':'left','layout_variant':'split','image_fit':'cover'}, + {'id':uuid.uuid4().hex[:10],'type':'image_text','visible':True, + 'title':'Sales Team','subtitle':'TALK TO US', + 'description':'Our international sales team helps with product selection, pricing and shipping. Email us for catalogs and quotations.', + 'image':'','image_side':'left','button':'Email Us','href':'mailto:sales@hesupipe.com'}, + {'id':uuid.uuid4().hex[:10],'type':'form','visible':True, + 'title':'Get a Quote', + 'description':'Send us your requirements and our team will reply within 24 hours.', + 'button_text':'Contact Us','button_href':'/contact-us/'}, + {'id':uuid.uuid4().hex[:10],'type':'map','visible':True, + 'title':'Visit Our Office', + 'address':'Henan Province National University Science Park (East Zone) 17 Building, Zhengzhou, China', + 'url':'','embed':gmaps}, + {'id':uuid.uuid4().hex[:10],'type':'faq','visible':True, + 'title':'Frequently Asked Questions', + 'items':[ + {'question':'How can I get a quotation?','answer':'Send us your requirements via email or the inquiry form.'}, + {'question':'What is your MOQ?','answer':'MOQ varies by product. Contact us for details.'}, + {'question':'Do you provide samples?','answer':'Yes, samples available for evaluation.'}]}, +] + +eid = 'a4992289f61b' +d = json.load(opener.open(BASE+'/api/sites/'+sid+'/pages/'+eid+'/studio-draft')) +req = urllib.request.Request(BASE+'/api/sites/'+sid+'/pages/'+eid+'/studio-draft', + data=json.dumps({'blocks':blocks,'page_template':'contact','layout_mode':'replace','expected_revision':d['revision']}).encode(), + method='PUT', headers={'Content-Type':'application/json','X-SiteForge-CSRF':csrf}) +r = json.load(opener.open(req)) +req2 = urllib.request.Request(BASE+'/api/sites/'+sid+'/pages/'+eid+'/studio-draft/publish', + data=json.dumps({'expected_revision':r.get('revision',d['revision']+1)}).encode(), method='POST', + headers={'Content-Type':'application/json','X-SiteForge-CSRF':csrf}) +print('Contact updated:', json.load(opener.open(req2)).get('published')) diff --git a/app/blueprints.py b/app/blueprints.py index 88a5425..a3af8fe 100644 --- a/app/blueprints.py +++ b/app/blueprints.py @@ -27,6 +27,7 @@ BLOCKS = { 'pricing':{'name':'服务方案','icon':'$','fields':['title','items'],'defaults':{'title':'服务方案','items':[{'name':'标准方案','price':'联系我们','features':['专业咨询','售后服务'],'href':'/contact/'}]}}, 'map':{'name':'位置导航','icon':'⌖','fields':['title','address','url','embed'],'defaults':{'title':'欢迎来访','address':'请填写实际办公地址','url':'','embed':''}}, 'form_link':{'name':'询盘表单入口','icon':'✉','fields':['title','description','button','href'],'defaults':{'title':'提交询盘','description':'欢迎联系我们获取报价和资料','button':'联系销售','href':'/contact/'}}, + 'form':{'name':'询盘表单','icon':'✉','fields':['title','description','button_text','button_href'],'defaults':{'title':'Get a Quote','description':'Send us your requirements and our team will reply within 24 hours.','button_text':'Contact Us','button_href':'/contact-us/'}}, 'trust_bar':{'name':'信任条','icon':'✓','fields':['title','items'],'defaults':{'title':'','items':[{'icon':'✓','title':'Certified quality','text':'Inspected before every shipment'},{'icon':'◎','title':'Global export','text':'Delivering to worldwide markets'},{'icon':'▤','title':'Full documentation','text':'Specs and export files on hand'},{'icon':'✉','title':'Responsive service','text':'Replies within one business day'}]}}, 'applications_band':{'name':'应用展示带','icon':'⊞','fields':['title','subtitle','items'],'defaults':{'title':'Built for real-world projects','subtitle':'APPLICATIONS','items':[{'icon':'◉','title':'Water supply','text':'Municipal piping and treatment networks.'},{'icon':'◍','title':'Drainage','text':'Gravity and pressure sewer systems.'},{'icon':'✦','title':'Gas','text':'PE pipelines for fuel gas distribution.'},{'icon':'◆','title':'Mining','text':'Abrasion-resistant slurry and vent lines.'}]}}, } @@ -416,6 +417,24 @@ def render_blocks(blocks, site, page, entries): parts.append(start+f'
'+desc+'
{desc}
' + f'{desc}
' + f'Configure an external form endpoint in site settings to enable this form.
' + f'{btn} →