/**
* 自定义器控制功能
* 关于我们时间轴设置的用户体验
*/
(function($) {
'use strict';
// 确保 wp.customize 对象完全加载后再执行
$(document).ready(function() {
// 等待 wp.customize 对象可用
var checkCustomizeReady = function() {
if (typeof wp !== 'undefined' && wp.customize && wp.customize.bind) {
wp.customize.bind('ready', function() {
// 关于我们时间轴控制功能
initAboutTimelineControls();
// 视频Banner控制功能
initVideoBannerControls();
// 业务流程控制功能
initBusinessProcessControls();
});
} else {
// 如果 wp.customize 还没准备好,等待 100ms 后重试
setTimeout(checkCustomizeReady, 100);
}
};
checkCustomizeReady();
});
// 关于我们时间轴控制功能
function initAboutTimelineControls() {
// 时间轴现在使用独立字段面板,不需要额外的控制功能
// 所有设置都通过WordPress自定义器的标准控件处理
}
// 视频Banner控制功能
function initVideoBannerControls() {
// 视频背景URL验证
wp.customize('video_banner_video_bg_url', function(setting) {
setting.bind(function(value) {
validateVideoUrl(value);
});
});
// 高度验证
wp.customize('video_banner_height', function(setting) {
setting.bind(function(value) {
validateHeight(value);
});
});
// 添加预设配置按钮
addVideoBannerPresets();
// 视频背景控制
initVideoBgControls();
// 内容预设
addContentPresets();
}
// 视频URL验证
function validateVideoUrl(url) {
if (!url) return;
const videoExtensions = ['.mp4', '.webm', '.ogg', '.mov'];
const isValidVideo = videoExtensions.some(ext => url.toLowerCase().includes(ext));
if (!isValidVideo && !url.includes('youtube.com') && !url.includes('vimeo.com')) {
showNotification('请输入有效的视频URL(支持MP4、WebM、OGG格式或YouTube/Vimeo链接)', 'warning');
}
}
// 高度验证
function validateHeight(height) {
const numHeight = parseInt(height);
if (numHeight < 300) {
showNotification('建议高度不少于300px以确保良好的视觉效果', 'warning');
} else if (numHeight > 1200) {
showNotification('建议高度不超过1200px以确保页面性能', 'warning');
}
}
// 添加预设配置按钮
function addVideoBannerPresets() {
// 确保 wp.customize 可用
if (typeof wp === 'undefined' || !wp.customize || !wp.customize.section) {
return;
}
const section = wp.customize.section('video_banner_section');
if (!section) return;
const presetContainer = $('
');
presetContainer.append('快速预设
');
const presets = [
{
name: '标准配置',
settings: {
video_banner_height: 800,
video_banner_video_bg_opacity: 0.7,
video_banner_video_bg_lazy_load: false
}
},
{
name: '高清大屏',
settings: {
video_banner_height: 1000,
video_banner_video_bg_opacity: 0.8,
video_banner_video_bg_lazy_load: false
}
},
{
name: '移动优化',
settings: {
video_banner_height: 600,
video_banner_video_bg_opacity: 0.6,
video_banner_video_bg_lazy_load: true
}
}
];
presets.forEach(function(preset) {
const button = $('');
button.on('click', function() {
applyPreset(preset.settings);
showNotification('已应用 "' + preset.name + '" 预设配置', 'success');
});
presetContainer.append(button);
});
// 将预设按钮添加到section容器
setTimeout(function() {
const sectionContainer = section.container.find('.accordion-section-content');
if (sectionContainer.length) {
sectionContainer.prepend(presetContainer);
}
}, 100);
}
// 应用预设配置
function applyPreset(settings) {
// 确保 wp.customize 可用
if (typeof wp === 'undefined' || !wp.customize) {
return;
}
Object.keys(settings).forEach(function(key) {
const setting = wp.customize(key);
if (setting) {
setting.set(settings[key]);
}
});
}
// 视频背景控制
function initVideoBgControls() {
// 确保 wp.customize 可用
if (typeof wp === 'undefined' || !wp.customize) {
return;
}
// 视频背景启用/禁用控制
wp.customize('video_banner_video_bg_enabled', function(setting) {
setting.bind(function(enabled) {
toggleVideoBgControls(enabled);
});
});
// 初始状态 - 安全获取设置值
setTimeout(function() {
const enabledSetting = wp.customize('video_banner_video_bg_enabled');
if (enabledSetting) {
const initialEnabled = enabledSetting();
toggleVideoBgControls(initialEnabled);
}
}, 50);
// 不透明度控制
wp.customize('video_banner_video_bg_opacity', function(setting) {
setting.bind(function(opacity) {
updateOpacityDisplay(opacity);
});
});
}
// 切换视频背景控制显示
function toggleVideoBgControls(enabled) {
// 确保 wp.customize 可用
if (typeof wp === 'undefined' || !wp.customize || !wp.customize.control) {
return;
}
const controls = [
'video_banner_video_bg_url',
'video_banner_video_bg_opacity',
'video_banner_video_bg_lazy_load'
];
controls.forEach(function(controlId) {
const control = wp.customize.control(controlId);
if (control) {
if (enabled) {
control.container.show();
} else {
control.container.hide();
}
}
});
}
// 更新不透明度显示
function updateOpacityDisplay(opacity) {
// 确保 wp.customize 可用
if (typeof wp === 'undefined' || !wp.customize || !wp.customize.control) {
return;
}
const control = wp.customize.control('video_banner_video_bg_opacity');
if (control) {
const label = control.container.find('.customize-control-title');
label.text('视频背景不透明度 (' + Math.round(opacity * 100) + '%)');
}
}
// 添加内容预设
function addContentPresets() {
const contentPresets = [
{
name: '企业介绍',
content: {
video_banner_content_subtitle: 'COMPANY INTRODUCTION',
video_banner_content_title: '能辉能源',
video_banner_content_description: '专业的能源解决方案提供商,致力于可持续发展'
}
},
{
name: '产品展示',
content: {
video_banner_content_subtitle: 'PRODUCT SHOWCASE',
video_banner_content_title: '创新产品',
video_banner_content_description: '领先的技术,卓越的品质,为您提供最佳解决方案'
}
},
{
name: '服务介绍',
content: {
video_banner_content_subtitle: 'OUR SERVICES',
video_banner_content_title: '专业服务',
video_banner_content_description: '全方位的服务支持,让您的项目更加成功'
}
}
];
// 添加内容预设按钮
setTimeout(function() {
// 确保 wp.customize 可用
if (typeof wp === 'undefined' || !wp.customize || !wp.customize.control) {
return;
}
const titleControl = wp.customize.control('video_banner_content_title');
if (titleControl) {
const presetContainer = $('');
presetContainer.append('');
contentPresets.forEach(function(preset) {
const button = $('');
button.on('click', function() {
// 确保 wp.customize 可用
if (typeof wp === 'undefined' || !wp.customize) {
return;
}
Object.keys(preset.content).forEach(function(key) {
const setting = wp.customize(key);
if (setting) {
setting.set(preset.content[key]);
}
});
showNotification('已应用 "' + preset.name + '" 内容预设', 'success');
});
presetContainer.append(button);
});
titleControl.container.append(presetContainer);
}
}, 200);
}
// 显示通知
function showNotification(message, type) {
type = type || 'info';
// 移除现有通知
$('.video-banner-notification').remove();
const notification = $('');
// 添加关闭按钮功能
notification.on('click', '.notice-dismiss', function() {
notification.fadeOut();
});
// 显示通知
$('#customize-controls').prepend(notification);
// 自动隐藏
setTimeout(function() {
notification.fadeOut();
}, 5000);
}
// 业务流程控制功能
function initBusinessProcessControls() {
// 业务流程显示控制
wp.customize('business_process_show', function(setting) {
setting.bind(function(value) {
toggleBusinessProcessSections(value);
});
});
// 初始化时检查显示状态
const initialShow = wp.customize('business_process_show')();
toggleBusinessProcessSections(initialShow);
// 添加Tab预设配置
addBusinessProcessPresets();
// 图片验证
initBusinessProcessImageValidation();
// 添加批量操作功能
addBusinessProcessBatchOperations();
}
// 切换业务流程相关设置的显示状态
function toggleBusinessProcessSections(show) {
const sections = [
'business_process_tab1_section',
'business_process_tab2_section',
'business_process_tab3_section',
'business_process_tab4_section'
];
sections.forEach(function(sectionId) {
const section = wp.customize.section(sectionId);
if (section) {
if (show) {
section.container.show();
} else {
section.container.hide();
}
}
});
}
// 添加业务流程预设配置
function addBusinessProcessPresets() {
setTimeout(function() {
const basicSection = wp.customize.section('business_process_basic_section');
if (basicSection && basicSection.container) {
const presetContainer = $('');
presetContainer.append('快速配置预设
');
const presets = [
{
name: '默认设计流程',
config: {
title: '设计业务流程',
subtitle: '专业的设计流程,确保项目高质量完成',
tab1: { title: '可行性研究', description: '前期调研并综合考虑"可行性、经济性、安全性"三个方面,多方案比较,确定最优设计方案和实施策略。' },
tab2: { title: '初步设计', description: '在基本方案确定的基础上,进行"精细设计",确定主要设备的选型和布置,形成初步设计方案。' },
tab3: { title: '施工图设计', description: '基于初步设计方案,进行详细的施工图设计,确保设计方案的可实施性和工程质量。' },
tab4: { title: '竣工图设计', description: '项目完工后的竣工图设计,真实反映工程实际建设情况,为后续运维提供准确的技术资料。' }
}
},
{
name: '工程管理流程',
config: {
title: '工程管理流程',
subtitle: '规范化的工程管理,保障项目顺利实施',
tab1: { title: '项目启动', description: '项目立项、团队组建、资源配置,明确项目目标和实施计划。' },
tab2: { title: '方案设计', description: '深入分析需求,制定详细的技术方案和实施策略。' },
tab3: { title: '实施执行', description: '按照既定方案执行项目,严格控制质量、进度和成本。' },
tab4: { title: '验收交付', description: '项目验收、文档整理、知识转移,确保项目成功交付。' }
}
}
];
presets.forEach(function(preset) {
const button = $('');
button.on('click', function(e) {
e.preventDefault();
applyBusinessProcessPreset(preset.config);
showNotification('已应用预设配置:' + preset.name, 'success');
});
presetContainer.append(button);
});
// 添加重置按钮
const resetButton = $('');
resetButton.on('click', function(e) {
e.preventDefault();
resetBusinessProcessSettings();
showNotification('已重置为默认设置', 'info');
});
presetContainer.append(resetButton);
basicSection.container.find('.customize-section-description-container').after(presetContainer);
}
}, 500);
}
// 应用业务流程预设配置
function applyBusinessProcessPreset(config) {
wp.customize('business_process_title').set(config.title);
wp.customize('business_process_subtitle').set(config.subtitle);
for (let i = 1; i <= 4; i++) {
const tabConfig = config['tab' + i];
if (tabConfig) {
wp.customize('business_process_tab' + i + '_title').set(tabConfig.title);
wp.customize('business_process_tab' + i + '_description').set(tabConfig.description);
}
}
}
// 重置业务流程设置
function resetBusinessProcessSettings() {
const defaults = {
'business_process_show': true,
'business_process_title': '设计业务流程',
'business_process_subtitle': '专业的设计流程,确保项目高质量完成',
'business_process_tab1_title': '可行性研究',
'business_process_tab1_description': '前期调研并综合考虑"可行性、经济性、安全性"三个方面,多方案比较,确定最优设计方案和实施策略。',
'business_process_tab2_title': '初步设计',
'business_process_tab2_description': '在基本方案确定的基础上,进行"精细设计",确定主要设备的选型和布置,形成初步设计方案。',
'business_process_tab3_title': '施工图设计',
'business_process_tab3_description': '基于初步设计方案,进行详细的施工图设计,确保设计方案的可实施性和工程质量。',
'business_process_tab4_title': '竣工图设计',
'business_process_tab4_description': '项目完工后的竣工图设计,真实反映工程实际建设情况,为后续运维提供准确的技术资料。'
};
Object.keys(defaults).forEach(function(key) {
if (wp.customize(key)) {
wp.customize(key).set(defaults[key]);
}
});
}
// 业务流程图片验证
function initBusinessProcessImageValidation() {
for (let i = 1; i <= 4; i++) {
wp.customize('business_process_tab' + i + '_image', function(setting) {
setting.bind(function(value) {
validateBusinessProcessImage(value, i);
});
});
}
}
// 验证业务流程图片
function validateBusinessProcessImage(imageUrl, tabNumber) {
if (!imageUrl) {
showNotification('Tab ' + String(tabNumber).padStart(2, '0') + ' 的图片不能为空', 'warning');
return;
}
// 检查图片格式
const validExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg'];
const isValidImage = validExtensions.some(ext => imageUrl.toLowerCase().includes(ext));
if (!isValidImage) {
showNotification('Tab ' + String(tabNumber).padStart(2, '0') + ' 请选择有效的图片格式(JPG、PNG、GIF、WebP、SVG)', 'warning');
}
}
// 添加批量操作功能
function addBusinessProcessBatchOperations() {
setTimeout(function() {
const basicSection = wp.customize.section('business_process_basic_section');
if (basicSection && basicSection.container) {
const batchContainer = $('');
batchContainer.append('批量操作
');
// 批量设置相同图片
const imageInput = $('');
const applyImageButton = $('');
applyImageButton.on('click', function(e) {
e.preventDefault();
const imageUrl = imageInput.val().trim();
if (imageUrl) {
for (let i = 1; i <= 4; i++) {
wp.customize('business_process_tab' + i + '_image').set(imageUrl);
}
showNotification('已将图片应用到所有Tab', 'success');
imageInput.val('');
} else {
showNotification('请输入有效的图片URL', 'warning');
}
});
batchContainer.append(imageInput);
batchContainer.append(applyImageButton);
basicSection.container.find('.business-process-presets').after(batchContainer);
}
}, 600);
}
})(jQuery);