modified file w3-total-cache

This commit is contained in:
2024-03-28 09:40:10 +00:00
committed by Gitium
parent 218272bbcb
commit 34dbbce9b4
3707 changed files with 392891 additions and 166170 deletions
wp-content/upgrade-temp-backup/plugins
activitypub
authldap
companion-auto-update
gp-premium
backgrounds
blog
colors
copyright
disable-elements
dist
elements
general
gp-premium.php
hooks
inc
langs
gp-premium-ar.mogp-premium-bn_BD.mogp-premium-cs_CZ.mogp-premium-da_DK.mogp-premium-de_DE-42da344ccb044413769d16ed3484307b.jsongp-premium-de_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-de_DE-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-de_DE.mogp-premium-es_AR.mogp-premium-es_ES-42da344ccb044413769d16ed3484307b.jsongp-premium-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-es_ES-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-es_ES-cbab080b0f20fd6c323029398be6c986.jsongp-premium-es_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.jsongp-premium-es_ES.mogp-premium-fi-42da344ccb044413769d16ed3484307b.jsongp-premium-fi-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-fi-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-fi-cbab080b0f20fd6c323029398be6c986.jsongp-premium-fi-ecf9f3c2af10c4f2dfbf4f42504922d1.jsongp-premium-fi.mogp-premium-fr_FR-42da344ccb044413769d16ed3484307b.jsongp-premium-fr_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-fr_FR-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-fr_FR.mogp-premium-hr.mogp-premium-hu_HU.mogp-premium-it_IT.mogp-premium-nb_NO.mogp-premium-nl_NL-42da344ccb044413769d16ed3484307b.jsongp-premium-nl_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-nl_NL-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-nl_NL-cbab080b0f20fd6c323029398be6c986.jsongp-premium-nl_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.jsongp-premium-nl_NL.mogp-premium-pl_PL.mogp-premium-pt_BR.mogp-premium-pt_PT-42da344ccb044413769d16ed3484307b.jsongp-premium-pt_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-pt_PT-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-pt_PT.mogp-premium-ru_RU-42da344ccb044413769d16ed3484307b.jsongp-premium-ru_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-ru_RU-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-ru_RU.mogp-premium-sv_SE-42da344ccb044413769d16ed3484307b.jsongp-premium-sv_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.jsongp-premium-sv_SE-92fa58377f1b6f7bef9c785c31ae29ff.jsongp-premium-sv_SE-cbab080b0f20fd6c323029398be6c986.jsongp-premium-sv_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.jsongp-premium-sv_SE.mogp-premium-uk.mogp-premium-vi.mogp-premium-zh_CN.mo
library
menu-plus
page-header
readme.txt
secondary-nav
sections
site-library
spacing
typography
woocommerce
wpml-config.xml
jetpack-protect
CHANGELOG.mdLICENSE.txtSECURITY.md
assets
build
composer.jsonjetpack-protect.php
jetpack_vendor
automattic
jetpack-a8c-mc-stats
jetpack-admin-ui
jetpack-assets
jetpack-config
jetpack-connection
jetpack-constants
jetpack-device-detection
jetpack-identity-crisis
jetpack-ip
jetpack-jitm
jetpack-licensing
jetpack-logo
jetpack-my-jetpack
jetpack-partner
jetpack-password-checker
jetpack-plugins-installer
jetpack-redirect
jetpack-roles
jetpack-status
jetpack-sync
jetpack-transport-helper
jetpack-waf
i18n-map.php
readme.txt
src
vendor
menu-icons
CHANGELOG.mdCONTRIBUTING.mdLICENSE
css
images
includes
js
languages
mailin.phpmenu-icons.phpreadme.mdreadme.txt
vendor
autoload.php
codeinwp
gutenberg-menu-icons
icon-picker
menu-item-custom-fields
themeisle-sdk
composer
smtp-mailer
w3-total-cache
Base_Page_Settings.phpBrowserCache_ConfigLabels.phpBrowserCache_Core.phpBrowserCache_Environment.phpBrowserCache_Environment_Apache.phpBrowserCache_Environment_LiteSpeed.phpBrowserCache_Environment_Nginx.phpBrowserCache_Page.phpBrowserCache_Page_View_QuickReference.phpBrowserCache_Page_View_SectionSecurity.phpBrowserCache_Plugin.phpBrowserCache_Plugin_Admin.phpCache.phpCacheFlush.phpCacheFlush_Locally.phpCacheGroups_Plugin_Admin.phpCacheGroups_Plugin_Admin_View.jsCacheGroups_Plugin_Admin_View.phpCache_Apc.phpCache_Apcu.phpCache_Base.phpCache_Eaccelerator.phpCache_File.phpCache_File_Cleaner.phpCache_File_Cleaner_Generic.phpCache_File_Cleaner_Generic_HardDelete.phpCache_File_Generic.phpCache_Memcache.phpCache_Memcached.phpCache_Memcached_Stats.phpCache_Nginx_Memcached.phpCache_Redis.phpCache_Wincache.phpCache_Xcache.phpCdnEngine.phpCdnEngine_Azure.phpCdnEngine_Base.phpCdnEngine_CloudFront.phpCdnEngine_Ftp.phpCdnEngine_GoogleDrive.phpCdnEngine_Mirror.phpCdnEngine_Mirror_Akamai.phpCdnEngine_Mirror_Att.phpCdnEngine_Mirror_BunnyCdn.phpCdnEngine_Mirror_CloudFront.phpCdnEngine_Mirror_Cotendo.phpCdnEngine_Mirror_Edgecast.phpCdnEngine_Mirror_Highwinds.phpCdnEngine_Mirror_LimeLight.phpCdnEngine_Mirror_RackSpaceCdn.phpCdnEngine_Mirror_StackPath.phpCdnEngine_Mirror_StackPath2.phpCdnEngine_RackSpaceCloudFiles.phpCdnEngine_S3.phpCdnEngine_S3_Compatible.phpCdn_AdminActions.phpCdn_AdminNotes.phpCdn_BunnyCdn_Api.phpCdn_BunnyCdn_Page.phpCdn_BunnyCdn_Page_View.jsCdn_BunnyCdn_Page_View.phpCdn_BunnyCdn_Page_View_Purge_Urls.phpCdn_BunnyCdn_Popup.phpCdn_BunnyCdn_Popup_View_Configured.phpCdn_BunnyCdn_Popup_View_Deauthorize.phpCdn_BunnyCdn_Popup_View_Deauthorized.phpCdn_BunnyCdn_Popup_View_Intro.phpCdn_BunnyCdn_Popup_View_Pull_Zones.phpCdn_BunnyCdn_Widget.phpCdn_BunnyCdn_Widget_View.cssCdn_BunnyCdn_Widget_View_Authorized.phpCdn_BunnyCdn_Widget_View_Unauthorized.phpCdn_CacheFlush.phpCdn_ConfigLabels.phpCdn_Core.phpCdn_Core_Admin.phpCdn_Environment.phpCdn_Environment_LiteSpeed.phpCdn_Environment_Nginx.phpCdn_GeneralPage_View.phpCdn_GoogleDrive_AdminActions.phpCdn_GoogleDrive_Page.phpCdn_GoogleDrive_Page_View.jsCdn_GoogleDrive_Page_View.phpCdn_GoogleDrive_Popup_AuthReturn.phpCdn_GoogleDrive_Popup_AuthReturn_View.phpCdn_Highwinds_Api.phpCdn_Highwinds_Page.phpCdn_Highwinds_Page_View.jsCdn_Highwinds_Page_View.phpCdn_Highwinds_Popup.phpCdn_Highwinds_Popup_View_ConfigureCnamesForm.phpCdn_Highwinds_Popup_View_Intro.phpCdn_Highwinds_Popup_View_SelectHost.phpCdn_Highwinds_Widget.phpCdn_Highwinds_Widget_View.cssCdn_Highwinds_Widget_View.jsCdn_Highwinds_Widget_View.phpCdn_Highwinds_Widget_View_NotConfigured.phpCdn_LimeLight_Page.phpCdn_LimeLight_Page_View.jsCdn_LimeLight_Page_View.phpCdn_LimeLight_Popup.phpCdn_LimeLight_Popup_View_Intro.phpCdn_LimeLight_Popup_View_Success.phpCdn_Page.phpCdn_Page_View_Fsd_HeaderActions.phpCdn_Plugin.phpCdn_Plugin_Admin.phpCdn_RackSpaceCdn_AdminActions.phpCdn_RackSpaceCdn_Page.phpCdn_RackSpaceCdn_Page_View.jsCdn_RackSpaceCdn_Page_View.phpCdn_RackSpaceCdn_Popup.phpCdn_RackSpaceCdn_Popup_View_ConfigureDomains.phpCdn_RackSpaceCdn_Popup_View_Intro.phpCdn_RackSpaceCdn_Popup_View_Regions.phpCdn_RackSpaceCdn_Popup_View_Service_Actualize.phpCdn_RackSpaceCdn_Popup_View_Service_Create.phpCdn_RackSpaceCdn_Popup_View_Service_Created.phpCdn_RackSpaceCdn_Popup_View_Services.phpCdn_RackSpaceCloudFiles_Page.phpCdn_RackSpaceCloudFiles_Page_View.jsCdn_RackSpaceCloudFiles_Page_View.phpCdn_RackSpaceCloudFiles_Popup.phpCdn_RackSpaceCloudFiles_Popup_View_Containers.phpCdn_RackSpaceCloudFiles_Popup_View_Intro.phpCdn_RackSpaceCloudFiles_Popup_View_Regions.phpCdn_RackSpace_Api_CaCert-example.pemCdn_RackSpace_Api_Cdn.phpCdn_RackSpace_Api_CloudFiles.phpCdn_RackSpace_Api_CloudFilesCdn.phpCdn_RackSpace_Api_Tokens.phpCdn_StackPath2_Api.phpCdn_StackPath2_Page.phpCdn_StackPath2_Page_View.jsCdn_StackPath2_Page_View.phpCdn_StackPath2_Popup.phpCdn_StackPath2_Popup_View_Intro.phpCdn_StackPath2_Popup_View_Sites.phpCdn_StackPath2_Popup_View_Stacks.phpCdn_StackPath2_Popup_View_Success.phpCdn_StackPath2_Widget.phpCdn_StackPath2_Widget_View.cssCdn_StackPath2_Widget_View.jsCdn_StackPath2_Widget_View_Authorized.phpCdn_StackPath2_Widget_View_Unauthorized.phpCdn_StackPath_Api.phpCdn_StackPath_Page.phpCdn_StackPath_Page_View.jsCdn_StackPath_Page_View.phpCdn_StackPath_Popup.phpCdn_StackPath_Popup_View_Intro.phpCdn_StackPath_Popup_View_Success.phpCdn_StackPath_Popup_View_Zone.phpCdn_StackPath_Popup_View_Zones.phpCdn_StackPath_Widget.phpCdn_StackPath_Widget_View.cssCdn_StackPath_Widget_View.jsCdn_StackPath_Widget_View_Authorized.phpCdn_StackPath_Widget_View_Unauthorized.phpCdn_Util.phpCdnfsd_BunnyCdn_Engine.phpCdnfsd_BunnyCdn_Page.phpCdnfsd_BunnyCdn_Page_View.jsCdnfsd_BunnyCdn_Page_View.phpCdnfsd_BunnyCdn_Popup.phpCdnfsd_BunnyCdn_Popup_View_Configured.phpCdnfsd_BunnyCdn_Popup_View_Deauthorize.phpCdnfsd_BunnyCdn_Popup_View_Deauthorized.phpCdnfsd_BunnyCdn_Popup_View_Intro.phpCdnfsd_BunnyCdn_Popup_View_Pull_Zones.phpCdnfsd_CacheFlush.phpCdnfsd_CloudFront_Engine.phpCdnfsd_CloudFront_Page.phpCdnfsd_CloudFront_Page_View.jsCdnfsd_CloudFront_Page_View.phpCdnfsd_CloudFront_Popup.phpCdnfsd_CloudFront_Popup_View_Distribution.phpCdnfsd_CloudFront_Popup_View_Distributions.phpCdnfsd_CloudFront_Popup_View_Intro.phpCdnfsd_CloudFront_Popup_View_Success.phpCdnfsd_Core.phpCdnfsd_GeneralPage_View.phpCdnfsd_LimeLight_Api.phpCdnfsd_LimeLight_Engine.phpCdnfsd_LimeLight_Page.phpCdnfsd_LimeLight_Page_View.jsCdnfsd_LimeLight_Page_View.phpCdnfsd_LimeLight_Popup.phpCdnfsd_LimeLight_Popup_View_Intro.phpCdnfsd_LimeLight_Popup_View_Success.phpCdnfsd_Plugin.phpCdnfsd_Plugin_Admin.phpCdnfsd_StackPath2_Engine.phpCdnfsd_StackPath2_Page.phpCdnfsd_StackPath2_Page_View.jsCdnfsd_StackPath2_Page_View.phpCdnfsd_StackPath2_Popup.phpCdnfsd_StackPath2_Popup_View_Intro.phpCdnfsd_StackPath2_Popup_View_Sites.phpCdnfsd_StackPath2_Popup_View_Stacks.phpCdnfsd_StackPath2_Popup_View_Success.phpCdnfsd_StackPath_Engine.phpCdnfsd_StackPath_Page.phpCdnfsd_StackPath_Page_View.jsCdnfsd_StackPath_Page_View.phpCdnfsd_StackPath_Popup.phpCdnfsd_StackPath_Popup_View_Intro.phpCdnfsd_StackPath_Popup_View_Success.phpCdnfsd_StackPath_Popup_View_Zone.phpCdnfsd_StackPath_Popup_View_Zones.phpCdnfsd_TransparentCDN_Engine.phpCdnfsd_TransparentCDN_Page.phpCdnfsd_TransparentCDN_Page_View.jsCdnfsd_TransparentCDN_Page_View.phpCdnfsd_Util.phpCli.phpConfig.phpConfigCache.phpConfigCompiler.phpConfigDbStorage.phpConfigKeys.phpConfigState.phpConfigStateNote.phpConfigUtil.phpDbCache_ConfigLabels.phpDbCache_Core.phpDbCache_Environment.phpDbCache_Page.phpDbCache_Plugin.phpDbCache_Plugin_Admin.phpDbCache_Wpdb.phpDbCache_WpdbBase.phpDbCache_WpdbInjection.phpDbCache_WpdbInjection_QueryCaching.phpDbCache_WpdbLegacy.phpDbCache_WpdbNew.phpDispatcher.phpEnterprise_CacheFlush_MakeSnsEvent.phpEnterprise_Dbcache_WpdbInjection_Cluster.phpEnterprise_SnsBase.phpEnterprise_SnsServer.phpExtension_Amp_Page_View.phpExtension_Amp_Plugin.phpExtension_Amp_Plugin_Admin.phpExtension_CloudFlare_AdminActions.phpExtension_CloudFlare_Api.phpExtension_CloudFlare_Cdn_Page_View.phpExtension_CloudFlare_GeneralPage_View.phpExtension_CloudFlare_Page.phpExtension_CloudFlare_Page_View.jsExtension_CloudFlare_Page_View.phpExtension_CloudFlare_Plugin.phpExtension_CloudFlare_Plugin_Admin.phpExtension_CloudFlare_Popup.phpExtension_CloudFlare_Popup_View_Intro.phpExtension_CloudFlare_Popup_View_Zones.phpExtension_CloudFlare_SettingsForUi.phpExtension_CloudFlare_View_Dashboard.jsExtension_CloudFlare_Widget.phpExtension_CloudFlare_Widget_Logo.pngExtension_CloudFlare_Widget_View.cssExtension_CloudFlare_Widget_View.phpExtension_FragmentCache_Api.phpExtension_FragmentCache_Core.phpExtension_FragmentCache_Environment.phpExtension_FragmentCache_GeneralPage.phpExtension_FragmentCache_GeneralPage_View.phpExtension_FragmentCache_Page.phpExtension_FragmentCache_Page_View.phpExtension_FragmentCache_Plugin.phpExtension_FragmentCache_Plugin_Admin.phpExtension_FragmentCache_WpObjectCache.phpExtension_Genesis_Page.phpExtension_Genesis_Page_View.phpExtension_Genesis_Plugin.phpExtension_Genesis_Plugin_Admin.phpExtension_ImageService_Api.phpExtension_ImageService_Cron.phpExtension_ImageService_Environment.phpExtension_ImageService_Page_View.phpExtension_ImageService_Plugin.phpExtension_ImageService_Plugin_Admin.cssExtension_ImageService_Plugin_Admin.jsExtension_ImageService_Plugin_Admin.phpExtension_NewRelic_AdminActions.phpExtension_NewRelic_AdminNotes.phpExtension_NewRelic_Api.phpExtension_NewRelic_Core.phpExtension_NewRelic_GeneralPage.phpExtension_NewRelic_GeneralPage_View.phpExtension_NewRelic_Page.phpExtension_NewRelic_Page_View_Apm.phpExtension_NewRelic_Plugin.phpExtension_NewRelic_Plugin_Admin.phpExtension_NewRelic_Popup.phpExtension_NewRelic_Popup_View.jsExtension_NewRelic_Popup_View_Intro.phpExtension_NewRelic_Popup_View_ListApplications.phpExtension_NewRelic_Service.phpExtension_NewRelic_Widget.phpExtension_NewRelic_Widget_View.cssExtension_NewRelic_Widget_View.jsExtension_NewRelic_Widget_View_Apm.phpExtension_NewRelic_Widget_View_Browser.phpExtension_NewRelic_Widget_View_NotConfigured.phpExtension_Swarmify_AdminActions.phpExtension_Swarmify_Core.phpExtension_Swarmify_Page.phpExtension_Swarmify_Page_View.phpExtension_Swarmify_Plugin.phpExtension_Swarmify_Plugin_Admin.phpExtension_Swarmify_Widget.phpExtension_Swarmify_Widget_View.cssExtension_Swarmify_Widget_View_NotConfigured.phpExtension_WordPressSeo_Plugin.phpExtension_WordPressSeo_Plugin_Admin.phpExtension_Wpml_Plugin.phpExtension_Wpml_Plugin_Admin.phpExtensions_AdminActions.phpExtensions_Page.phpExtensions_Plugin_Admin.phpExtensions_Util.phpFeatureShowcase_Plugin_Admin.phpFeatureShowcase_Plugin_Admin_View.phpGeneric_AdminActions_Config.phpGeneric_AdminActions_Default.phpGeneric_AdminActions_Flush.phpGeneric_AdminActions_Test.phpGeneric_AdminNotes.phpGeneric_ConfigLabels.phpGeneric_Environment.phpGeneric_Faq.phpGeneric_GeneralPage_View_ShowEdge.jsGeneric_GeneralPage_View_ShowSupportUs.jsGeneric_Page_About.phpGeneric_Page_Dashboard.phpGeneric_Page_Dashboard_View.cssGeneric_Page_General.phpGeneric_Page_Install.phpGeneric_Page_PurgeLog.phpGeneric_Page_PurgeLog_View.phpGeneric_Plugin.phpGeneric_Plugin_Admin.phpGeneric_Plugin_AdminCompatibility.phpGeneric_Plugin_AdminNotifications.phpGeneric_Plugin_AdminRowActions.phpGeneric_Plugin_Admin_View_Faq.phpGeneric_Plugin_WidgetForum.phpGeneric_Plugin_WidgetNews.phpGeneric_WidgetBoldGrid.phpGeneric_WidgetBoldGrid_AdminActions.phpGeneric_WidgetBoldGrid_Logo.svgGeneric_WidgetBoldGrid_View.jsGeneric_WidgetBoldGrid_View.phpGeneric_WidgetCommunity.phpGeneric_WidgetCommunity_View.phpGeneric_WidgetServices.phpGeneric_WidgetServices_View.phpGeneric_WidgetSpreadTheWord.jsGeneric_WidgetSpreadTheWord_Plugin.phpGeneric_WidgetSpreadTheWord_View.phpLICENSELicensing_AdminActions.phpLicensing_Core.phpLicensing_Plugin_Admin.phpMinify_AutoCss.phpMinify_AutoJs.phpMinify_ConfigLabels.phpMinify_ContentMinifier.phpMinify_Core.phpMinify_Environment.phpMinify_Environment_LiteSpeed.phpMinify_Extract.phpMinify_GeneralPage_View_ShowHelp.jsMinify_GeneralPage_View_ShowHelpForce.jsMinify_HelpPopup_View.phpMinify_MinifiedFileRequestHandler.phpMinify_Page.phpMinify_Plugin.phpMinify_Plugin_Admin.phpMobile_Base.phpMobile_Redirect.phpMobile_Referrer.phpMobile_UserAgent.phpModuleStatus.phpObjectCache_ConfigLabels.phpObjectCache_Environment.phpObjectCache_Page.phpObjectCache_Page_View_PurgeLog.phpObjectCache_Plugin.phpObjectCache_Plugin_Admin.phpObjectCache_WpObjectCache.phpObjectCache_WpObjectCache_Regular.phpPageSpeed_Api.phpPageSpeed_Data.phpPageSpeed_Instructions.phpPageSpeed_Page.phpPageSpeed_Page_View.cssPageSpeed_Page_View.jsPageSpeed_Page_View.phpPageSpeed_Page_View_FromAPI.phpPageSpeed_Widget.phpPageSpeed_Widget_View.cssPageSpeed_Widget_View.jsPageSpeed_Widget_View.phpPageSpeed_Widget_View_FromApi.phpPgCache_ConfigLabels.phpPgCache_ContentGrabber.phpPgCache_Environment.phpPgCache_Flush.phpPgCache_Page.phpPgCache_Page_View.jsPgCache_Plugin.phpPgCache_Plugin_Admin.phpPgCache_QsExempts.phpRoot_AdminActions.phpRoot_AdminActivation.phpRoot_AdminMenu.phpRoot_Environment.phpRoot_Loader.phpSetupGuide_Plugin_Admin.phpSupport_AdminActions.phpSupport_Page.phpSupport_Page_View_DoneContent.phpSupport_Page_View_PageContent.phpSystemOpCache_AdminActions.phpSystemOpCache_Core.phpSystemOpCache_GeneralPage_View.phpSystemOpCache_Plugin_Admin.phpUsageStatistics_AdminActions.phpUsageStatistics_Core.phpUsageStatistics_GeneralPage.phpUsageStatistics_GeneralPage_View.phpUsageStatistics_Page.phpUsageStatistics_Page_DbRequests_View.phpUsageStatistics_Page_ObjectCacheLog_View.phpUsageStatistics_Page_PageCacheRequests_View.phpUsageStatistics_Page_View.cssUsageStatistics_Page_View.jsUsageStatistics_Page_View.phpUsageStatistics_Page_View_Ad.phpUsageStatistics_Page_View_Disabled.phpUsageStatistics_Page_View_Free.phpUsageStatistics_Page_View_NoDebugMode.phpUsageStatistics_Plugin.phpUsageStatistics_Plugin_Admin.phpUsageStatistics_Source_AccessLog.phpUsageStatistics_Source_DbQueriesLog.phpUsageStatistics_Source_ObjectCacheLog.phpUsageStatistics_Source_PageCacheLog.phpUsageStatistics_Source_Wpdb.phpUsageStatistics_Sources.phpUsageStatistics_Sources_Apc.phpUsageStatistics_Sources_Memcached.phpUsageStatistics_Sources_Redis.phpUsageStatistics_StorageReader.phpUsageStatistics_StorageWriter.phpUsageStatistics_Widget.phpUsageStatistics_Widget_View.jsUsageStatistics_Widget_View.phpUsageStatistics_Widget_View_Disabled.phpUserExperience_DeferScripts_Extension.phpUserExperience_DeferScripts_Mutator.phpUserExperience_DeferScripts_Page_View.phpUserExperience_DeferScripts_Script.jsUserExperience_Emoji_Extension.phpUserExperience_GeneralPage.phpUserExperience_GeneralPage_View.phpUserExperience_LazyLoad_GoogleMaps_GoogleMapsEasy.phpUserExperience_LazyLoad_GoogleMaps_WPGoogleMapPlugin.phpUserExperience_LazyLoad_GoogleMaps_WPGoogleMaps.phpUserExperience_LazyLoad_Mutator.phpUserExperience_LazyLoad_Mutator_Picture.phpUserExperience_LazyLoad_Mutator_Unmutable.phpUserExperience_LazyLoad_Page_View.phpUserExperience_LazyLoad_Plugin.phpUserExperience_OEmbed_Extension.phpUserExperience_Page.phpUserExperience_Page_View.phpUserExperience_Plugin_Admin.phpUserExperience_Plugin_Jquery.phpUserExperience_Preload_Requests_Extension.phpUserExperience_Preload_Requests_Page_View.phpUtil_Activation.phpUtil_Admin.phpUtil_AttachToActions.phpUtil_Bus.phpUtil_ConfigLabel.phpUtil_Content.phpUtil_Debug.phpUtil_DebugPurgeLog_Reader.phpUtil_Environment.phpUtil_Environment_Exception.phpUtil_Environment_Exceptions.phpUtil_File.phpUtil_Http.phpUtil_Installed.phpUtil_Mime.phpUtil_PageSpeed.phpUtil_PageUrls.phpUtil_Request.phpUtil_Rule.phpUtil_Theme.phpUtil_Ui.phpUtil_UsageStatistics.phpUtil_Widget.phpUtil_WpFile.phpUtil_WpFile_FilesystemChmodException.phpUtil_WpFile_FilesystemCopyException.phpUtil_WpFile_FilesystemMkdirException.phpUtil_WpFile_FilesystemModifyException.phpUtil_WpFile_FilesystemOperationException.phpUtil_WpFile_FilesystemRmException.phpUtil_WpFile_FilesystemRmdirException.phpUtil_WpFile_FilesystemWriteException.phpUtil_WpmuBlogmap.phpVarnish_Flush.phpVarnish_Plugin.php
extension-example
inc
index.html
ini
languages
lib
Azure
GuzzleHttp
MicrosoftAzureStorage
Blob
Common
PsrHttpMessage
loader.php
CSSTidy
Db
Google
Minify
NetDNA
NewRelic
Nusoap
OAuth
S3Compatible.php
SNS
YuiCssMin
index.html
press.txt
pub
readme.txt
vendor
autoload.php
aws
aws-php-sns-message-validator
aws-sdk-php
CODE_OF_CONDUCT.mdLICENSE.mdNOTICE.mdcomposer.json
src
ACMPCA
AbstractConfigurationProvider.php
AccessAnalyzer
Acm
AlexaForBusiness
Amplify
AmplifyBackend
Api
ApiGateway
ApiGatewayManagementApi
ApiGatewayV2
AppConfig
AppIntegrationsService
AppMesh
AppRegistry
AppRunner
AppSync
Appflow
ApplicationAutoScaling
ApplicationCostProfiler
ApplicationDiscoveryService
ApplicationInsights
Appstream
Arn
Athena
AuditManager
AugmentedAIRuntime
AutoScaling
AutoScalingPlans
AwsClient.phpAwsClientInterface.phpAwsClientTrait.php
Backup
Batch
Braket
Budgets
CacheInterface.php
Chime
ClientResolver.php
ClientSideMonitoring
Cloud9
CloudDirectory
CloudFormation
CloudFront
CloudHSMV2
CloudHsm
CloudSearch
CloudSearchDomain
CloudTrail
CloudWatch
CloudWatchEvents
CloudWatchLogs
CodeArtifact
CodeBuild
CodeCommit
CodeDeploy
CodeGuruProfiler
CodeGuruReviewer
CodePipeline
CodeStar
CodeStarNotifications
CodeStarconnections
CognitoIdentity
CognitoIdentityProvider
CognitoSync
Command.phpCommandInterface.phpCommandPool.php
Comprehend
ComprehendMedical
ComputeOptimizer
ConfigService
ConfigurationProviderInterface.php
Connect
ConnectContactLens
ConnectParticipant
CostExplorer
CostandUsageReportService
Credentials
Crypto
CustomerProfiles
DAX
DLM
DataExchange
DataPipeline
DataSync
DatabaseMigrationService
Detective
DevOpsGuru
DeviceFarm
DirectConnect
DirectoryService
DocDB
DoctrineCacheAdapter.php
DynamoDb
DynamoDbStreams
EBS
EC2InstanceConnect
ECRPublic
EKS
EMRContainers
Ec2
Ecr
Ecs
Efs
ElastiCache
ElasticBeanstalk
ElasticInference
ElasticLoadBalancing
ElasticLoadBalancingV2
ElasticTranscoder
ElasticsearchService
Emr
Endpoint
EndpointDiscovery
EndpointParameterMiddleware.php
EventBridge
Exception
FIS
FMS
FSx
FinSpaceData
Firehose
ForecastQueryService
ForecastService
FraudDetector
GameLift
Glacier
GlobalAccelerator
Glue
GlueDataBrew
Greengrass
GreengrassV2
GroundStation
GuardDuty
Handler
HandlerList.phpHasDataTrait.phpHasMonitoringEventsTrait.phpHashInterface.phpHashingStream.php
Health
HealthLake
History.php
Honeycode
IVS
Iam
IdempotencyTokenMiddleware.php
IdentityStore
ImportExport
InputValidationMiddleware.php
Inspector
IoT1ClickDevicesService
IoT1ClickProjects
IoTAnalytics
IoTDeviceAdvisor
IoTEvents
IoTEventsData
IoTFleetHub
IoTJobsDataPlane
IoTSecureTunneling
IoTSiteWise
IoTThingsGraph
IoTWireless
Iot
IotDataPlane
JsonCompiler.php
Kafka
Kinesis
KinesisAnalytics
KinesisAnalyticsV2
KinesisVideo
KinesisVideoArchivedMedia
KinesisVideoMedia
KinesisVideoSignalingChannels
Kms
LakeFormation
Lambda
LexModelBuildingService
LexModelsV2
LexRuntimeService
LexRuntimeV2
LicenseManager
Lightsail
LocationService
LookoutEquipment
LookoutMetrics
LookoutforVision
LruArrayCache.php
MQ
MTurk
MWAA
MachineLearning
Macie
Macie2
ManagedBlockchain
MarketplaceCatalog
MarketplaceCommerceAnalytics
MarketplaceEntitlementService
MarketplaceMetering
MediaConnect
MediaConvert
MediaLive
MediaPackage
MediaPackageVod
MediaStore
MediaStoreData
MediaTailor
Middleware.php
MigrationHub
MigrationHubConfig
Mobile
MockHandler.phpMonitoringEventsInterface.phpMultiRegionClient.php
Multipart
Neptune
NetworkFirewall
NetworkManager
NimbleStudio
OpsWorks
OpsWorksCM
Organizations
Outposts
PI
Personalize
PersonalizeEvents
PersonalizeRuntime
PhpHash.php
Pinpoint
PinpointEmail
PinpointSMSVoice
Polly
PresignUrlMiddleware.php
Pricing
PrometheusService
Psr16CacheAdapter.phpPsrCacheAdapter.php
QLDB
QLDBSession
QuickSight
RAM
RDSDataService
Rds
Redshift
RedshiftDataAPIService
Rekognition
ResourceGroups
ResourceGroupsTaggingAPI
ResponseContainerInterface.phpResult.phpResultInterface.phpResultPaginator.php
Retry
RetryMiddleware.phpRetryMiddlewareV2.php
RoboMaker
Route53
Route53Domains
Route53Resolver
S3
S3Control
S3Outposts
SSMContacts
SSMIncidents
SSO
SSOAdmin
SSOOIDC
SageMaker
SageMakerFeatureStoreRuntime
SageMakerRuntime
SagemakerEdgeManager
SavingsPlans
Schemas
Sdk.php
SecretsManager
SecurityHub
ServerlessApplicationRepository
ServiceCatalog
ServiceDiscovery
ServiceQuotas
Ses
SesV2
Sfn
Shield
Signature
Sms
SnowBall
Sns
Sqs
Ssm
StorageGateway
StreamRequestPayloadMiddleware.php
Sts
Support
Swf
Synthetics
Textract
TimestreamQuery
TimestreamWrite
TraceMiddleware.php
TranscribeService
Transfer
Translate
WAFV2
Waf
WafRegional
Waiter.php
WellArchitected
WorkDocs
WorkLink
WorkMail
WorkMailMessageFlow
WorkSpaces
WrappedHttpHandler.php
XRay
data
accessanalyzer
acm-pca
acm
alexaforbusiness
aliases.json.php
amp
amplify
amplifybackend
apigateway
apigatewaymanagementapi
apigatewayv2
appconfig
appflow
appintegrations
application-autoscaling
application-insights
applicationcostprofiler
appmesh
apprunner
appstream
appsync
athena
auditmanager
autoscaling-plans
autoscaling
backup
batch
braket
budgets
ce
chime
cloud9
clouddirectory
cloudformation
cloudfront
cloudhsm
cloudhsmv2
cloudsearch
cloudsearchdomain
2013-01-01
cloudtrail
codeartifact
codebuild
codecommit
codedeploy
codeguru-reviewer
codeguruprofiler
codepipeline
codestar-connections
codestar-notifications
codestar
cognito-identity
cognito-idp
cognito-sync
comprehend
comprehendmedical
compute-optimizer
config
connect-contact-lens
connect
connectparticipant
cur
customer-profiles
data.iot
databrew
dataexchange
datapipeline
datasync
dax
detective
devicefarm
devops-guru
directconnect
discovery
dlm
dms
docdb
ds
dynamodb
ebs
ec2-instance-connect
ec2
ecr-public
ecr
ecs
eks
elastic-inference
elasticache
elasticbeanstalk
elasticfilesystem
elasticloadbalancing
elasticloadbalancingv2
elasticmapreduce
elastictranscoder
email
emr-containers
endpoints.json.phpendpoints_prefix_history.json.php
entitlement.marketplace
es
eventbridge
events
finspace-data
finspace
firehose
fis
fms
forecast
forecastquery
frauddetector
fsx
gamelift
glacier
globalaccelerator
glue
greengrass
2017-06-07
greengrassv2
groundstation
guardduty
health
healthlake
honeycode
iam
identitystore
imagebuilder
importexport
inspector
iot-jobs-data
iot
iot1click-devices
2018-05-14
iot1click-projects
iotanalytics
iotdeviceadvisor
iotevents-data
iotevents
iotfleethub
iotsecuretunneling
iotsitewise
iotthingsgraph
iotwireless
ivs
kafka
kendra
kinesis-video-archived-media
kinesis-video-media
kinesis-video-signaling
kinesis
kinesisanalytics
kinesisanalyticsv2
kinesisvideo
kms
lakeformation
lambda
lex-models
license-manager
lightsail
location
logs
lookoutequipment
lookoutmetrics
lookoutvision
machinelearning
macie
macie2
managedblockchain
manifest.json.php
marketplace-catalog
marketplacecommerceanalytics
mediaconnect
mediaconvert
medialive
mediapackage-vod
mediapackage
mediastore-data
mediastore
mediatailor
metering.marketplace
mgh
mgn
migrationhub-config
mobile
models.lex.v2
monitoring
mq
mturk-requester
mwaa
neptune
network-firewall
networkmanager
nimble
opsworks
opsworkscm
organizations
outposts
personalize-events
personalize-runtime
personalize
pi
pinpoint-email
pinpoint
2016-12-01
polly
pricing
qldb-session
qldb
quicksight
ram
rds-data
rds
redshift-data
redshift
rekognition
resource-groups
resourcegroupstaggingapi
robomaker
route53
route53domains
route53resolver
runtime.lex.v2
runtime.lex
runtime.sagemaker
s3
s3control
s3outposts
sagemaker-a2i-runtime
sagemaker-edge
sagemaker-featurestore-runtime
sagemaker
savingsplans
schemas
secretsmanager
securityhub
serverlessrepo
service-quotas
servicecatalog-appregistry
servicecatalog
servicediscovery
sesv2
shield
signer
sms-voice
2018-09-05
sms
snowball
sns
sqs
ssm-contacts
ssm-incidents
ssm
sso-admin
sso-oidc
sso
states
storagegateway
streams.dynamodb
sts
support
swf
synthetics
textract
timestream-query
timestream-write
transcribe
transfer
translate
waf-regional
waf
wafv2
wellarchitected
workdocs
worklink
workmail
workmailmessageflow
workspaces
xray
finspace
functions.php
imagebuilder
kendra
mgn
signer
bin
composer
guzzlehttp
guzzle
promises
psr7
mtdowling
psr
ralouphie
symfony
w3-total-cache-api.phpw3-total-cache-old-php.phpw3-total-cache.php
wp-content

@ -1,348 +0,0 @@
body {
-webkit-backface-visibility: hidden;
}
#_generate_sections_metabox {
opacity: 0;
height: 0;
overflow: hidden;
}
#_generate_use_sections_metabox {
display: block !important;
}
.generate_sections_control {
padding-top: 8px;
}
.generate-sections-enabled #postdivrich {
opacity: 0;
height: 0;
overflow: hidden;
}
.generate-sections-enabled #_generate_sections_metabox {
opacity: 1;
height: auto;
}
.generate_sections_control .warning {
color: red;
}
.generate_sections_control .dodelete-repeating_textareas {
float: right;
}
.generate_sections_control .section {
border: 1px solid #DFDFDF;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
margin: 6px 0px 8px;
overflow: hidden;
position: relative;
background: white;
}
.generate_sections_control .section .section-title {
font-size: 14px;
padding: 0 0 0 15px;
margin: 0;
max-height: 50px;
}
.generate_sections_control .section .section-title > span {
cursor: pointer;
overflow:hidden;
display:block;
max-height:50px;
line-height:50px;
width:100%;
}
.generate_sections_control .section .section-controls {
position: absolute;
top:0;
right:0;
text-align: right;
}
.rtl .generate_sections_control .section .section-controls {
right:auto;left:0;
}
.generate_sections_control .section .section-controls a {
color: #aaa;
display:block;
float:left;
border-left: 1px solid #efefef;
}
.generate_sections_control .section .section-controls a:hover {
color: #777;
}
.generate_sections_control .section textarea {
display: none;
}
.generate_sections_control .section h3 {
color: #999;
font-size: 1em;
margin: 15px 6px;
text-transform: uppercase;
}
.generate_sections_control .section .ui-sortable-placeholder {
line-height: 1.4em;
border: 3px dashed #DDD;
}
.generate-sections-modal .media-menu-item {
cursor: pointer;
}
.custom-classes input {
width:100%;
}
.js .generate_sections_control .move-section {
cursor: move;
}
.generate-sections-modal p {
margin-top:5px;
}
#_generate_sections_metabox {
box-shadow: 0 0 0 transparent;
}
.section-controls a {
line-height:50px;
padding: 0 15px;
width:initial;
height:initial;
}
.generate_sections_control .section .section-controls a.delete-section:hover {
color: red;
}
.generate_sections_control p {
margin: 5px;
}
textarea#generate-sections-editor {
border:0;
}
#generate-sections-editor_ifr {
min-height: 400px;
}
a#generate-add-section, a#generate-delete-sections {
height: auto;
line-height: inherit;
padding: 10px 20px;
}
#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > * {
display:none;
}
#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .generate-sections-add-media,
#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .su-generator-button,
#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .envira-gallery-choose-gallery,
#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .gridable-insert-row-button {
display: inline-block;
}
#custom-media-buttons > * {
display: none;
}
#custom-media-buttons > .insert-media,
#custom-media-buttons > .su-generator-button,
#custom-media-buttons > .envira-gallery-choose-gallery,
#custom-media-buttons > .gridable-insert-row-button,
#custom-media-buttons > .bfa-iconpicker {
display: inline-block;
}
#_generate_sections_metabox {
background: transparent;
border: 0;
}
#_generate_sections_metabox > .handlediv, #_generate_sections_metabox > .hndle {
display: none;
}
#_generate_sections_metabox > .inside {
padding-left: 0;
padding-right: 0;
}
body.wp-admin .grid-container {
max-width: 100%;
}
.generate-sections-modal h3 {
margin-top: 0;
}
input#custom_classes,
input#custom_id {
width: 100%;
max-width: 300px;
}
.box-type select,
.inner-box-type select,
.parallax-effect select,
.top-padding input,
.bottom-padding input {
width: 100%;
box-sizing: border-box;
}
.send-to-editor {
display: inline-block;
margin-top: 15px !important;
}
#generate-sections-modal-dialog .media-frame-title .dashicons-arrow-down {
display: none;
}
.gs-grid-container {
margin-left: auto;
margin-right: auto;
max-width: 100%;
padding-left: 10px;
padding-right: 10px;
}
.gs-grid-parent {
padding-left: 0;
padding-right: 0;
}
.gs-grid-container:before,
.gs-grid-container:after {
content: ".";
display: block;
overflow: hidden;
visibility: hidden;
font-size: 0;
line-height: 0;
width: 0;
height: 0;
clear: both;
}
@media screen and (min-width: 769px) {
.gs-grid-50:before,
.gs-grid-50:after,
.gs-grid-33:before,
.gs-grid-33:after,
.gs-grid-25:before,
.gs-grid-25:after
.gs-grid-20:before,
.gs-grid-20:after
.gs-grid-12:before,
.gs-grid-12:after {
content: ".";
display: block;
overflow: hidden;
visibility: hidden;
font-size: 0;
line-height: 0;
width: 0;
height: 0;
clear: both;
}
.gs-grid-50,
.gs-grid-33,
.gs-grid-25,
.gs-grid-20,
.gs-grid-12 {
box-sizing: border-box;
padding-left: 10px;
padding-right: 10px;
}
.gs-grid-50 {
width: 50% !important;
float: left;
}
.gs-grid-33 {
width: 33.333% !important;
float: left;
}
.gs-grid-25 {
width: 25% !important;
float: left;
}
.gs-grid-20 {
width: 20% !important;
float: left;
}
.gs-grid-12 {
width: 12.5% !important;
float: left;
}
.top-border {
border-top: 1px solid #EFEFEF;
}
.bottom-border {
border-bottom: 1px solid #EFEFEF;
}
.border-right {
border-right: 1px solid #EFEFEF;
}
.border-left {
border-left: 1px solid #EFEFEF;
}
}
@media screen and (max-width: 768px) {
.gs-grid-50, .gs-grid-33, .gs-grid-25, .gs-grid-12 {
width: 100% !important;
}
.generate_sections_control .section .section-controls {
position: relative;
}
}
@media screen and (max-width: 500px) {
.generate_sections_control .section .section-controls a:first-child {
border-left: 0;
}
}
#generate-sections-modal-dialog .media-modal-close {
text-decoration: none;
text-align: center;
}
/*
The styles below were ripped from the Media Modal in WordPress 3.5
~~ Thanks for building a beautiful Modal UI ( that I could steal )
*/
body.generate-modal-open { overflow: hidden; }
.generate-sections-modal .media-modal { z-index: 65535; }
.generate-sections-modal .media-modal-backdrop { z-index: 65534; }
.generate-sections-modal .media-frame-content .panel { display: none; padding: 2em; }
.generate-sections-modal .media-frame-content .panel.active { display: block; }
.generate-sections-modal .media-frame-content .panel .section-title input { width:100%;padding:10px; }
.generate-sections-modal .media-frame-content .panel .html-active .mce-panel { display: none; }
.generate-sections-modal .media-frame-content .panel .html-active .wp-editor-area { display: block !important; min-height: 300px; }
.generate-sections-modal .media-frame-content .panel .mce-wp-dfw, .generate-sections-modal .media-frame-content .panel .qt-dfw { display: none; }
.generate-sections-modal .media-frame-content .panel .generate-sections-remove-image { display: none; }
textarea.no-rich-edit {
width: 100%;
min-height: 300px;
}
.wp-picker-container .wp-color-result.button {
height: 24px;
margin: 0 6px 6px 0px;
padding: 0 0 0 30px;
font-size: 11px;
}
.wp-color-result:after {
display: none;
}
.wp-color-result-text {
background: #f7f7f7;
border-radius: 0 2px 2px 0;
border-left: 1px solid #ccc;
color: #555;
display: block;
line-height: 22px;
padding: 0 6px;
text-align: center;
}

@ -1,92 +0,0 @@
.lcs_wrap {
display: inline-block;
direction: ltr;
height: 28px;
vertical-align: middle;
}
.lcs_wrap input {
display: none;
}
.lcs_switch {
display: inline-block;
position: relative;
width: 73px;
height: 28px;
border-radius: 30px;
background: #ddd;
overflow: hidden;
cursor: pointer;
transition: all .2s ease-in-out;
}
.lcs_cursor {
display: inline-block;
position: absolute;
top: 3px;
width: 22px;
height: 22px;
border-radius: 100%;
background: #fff;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.1);
z-index: 10;
transition: all .2s linear;
}
.lcs_label {
font-family: "Trebuchet MS", Helvetica, sans-serif;
font-size: 12px;
letter-spacing: 1px;
line-height: 18px;
color: #fff;
font-weight: bold;
position: absolute;
width: 33px;
top: 5px;
overflow: hidden;
text-align: center;
opacity: 0;
transition: all .2s ease-in-out .1s;
}
.lcs_label.lcs_label_on {
left: -70px;
z-index: 6;
}
.lcs_label.lcs_label_off {
right: -70px;
z-index: 5;
}
/* on */
.lcs_switch.lcs_on {
background: #75b936;
box-shadow: 0 0 2px #579022 inset;
}
.lcs_switch.lcs_on .lcs_cursor {
left: 48px;
}
.lcs_switch.lcs_on .lcs_label_on {
left: 10px;
opacity: 1;
}
/* off */
.lcs_switch.lcs_off {
background: #b2b2b2;
box-shadow: 0px 0px 2px #a4a4a4 inset;
}
.lcs_switch.lcs_off .lcs_cursor {
left: 3px;
}
.lcs_switch.lcs_off .lcs_label_off {
right: 10px;
opacity: 1;
}
/* disabled */
.lcs_switch.lcs_disabled {
opacity: 0.65;
filter: alpha(opacity=65);
cursor: default;
}

@ -1,835 +0,0 @@
/*-----------------------------------------------------------------------------------*/
/* Generate Sections Metabox
/*
/* © Kathy Darling http://www.kathyisawesome.com
/* 2016-07-19. */
/*-----------------------------------------------------------------------------------*/
/**
* @type {Object} JavaScript namespace for our application.
*/
var Generate_Sections = {
backbone_modal: {
__instance: undefined
}
};
(function($, Generate_Sections) {
// Model
Generate_Sections.Section = Backbone.Model.extend({
defaults: {
"title": "",
"box_type": "",
"inner_box_type": "",
"custom_classes": "",
"custom_id": "",
"top_padding": "",
"bottom_padding": "",
"top_padding_unit": "",
"bottom_padding_unit": "",
"background_color": "",
"background_image": "",
"background_image_preview": "",
"parallax_effect": "",
"background_color_overlay": "",
"text_color": "",
"link_color": "",
"link_color_hover": "",
"content": ""
}
});
// Collection
Generate_Sections.SectionsCollection = Backbone.Collection.extend({
model: Generate_Sections.Section,
el: "#generate_sections_container",
comparator: function(model) {
return model.get('index');
}
});
/**
* Primary Modal Application Class
*/
Generate_Sections.backbone_modal.Application = Backbone.View.extend({
attributes: {
id: "generate-sections-modal-dialog",
class: "generate-sections-modal",
role: "dialog"
},
template: wp.template("generate-sections-modal-window"),
mediaUploader: null,
/*-----------------------------------------------------------------------------------*/
/* tinyMCE settings
/*-----------------------------------------------------------------------------------*/
tmc_settings: {},
/*-----------------------------------------------------------------------------------*/
/* tinyMCE defaults
/*-----------------------------------------------------------------------------------*/
tmc_defaults: {
theme: "modern",
menubar: false,
wpautop: true,
indent: false,
toolbar1: "bold,italic,underline,blockquote,strikethrough,bullist,numlist,alignleft,aligncenter,alignright,undo,redo,link,unlink,fullscreen",
plugins: "fullscreen,image,wordpress,wpeditimage,wplink",
max_height: 500
},
/*-----------------------------------------------------------------------------------*/
/* quicktags settings
/*-----------------------------------------------------------------------------------*/
qt_settings: {},
/*-----------------------------------------------------------------------------------*/
/* quicktags defaults
/*-----------------------------------------------------------------------------------*/
qt_defaults: {
buttons: "strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,fullscreen"
},
model: Generate_Sections.Section,
events: {
"click .media-modal-backdrop, .media-modal-close, .media-button-close": "closeModal",
"click .media-button-insert": "saveModal",
"click .media-menu-item": "switchTab",
"keydown": "keydown",
"click .generate-sections-upload-button": "openMediaUploader",
"click .generate-sections-remove-image": "removeImage",
"click div.media-frame-title h1": "toggleMenu"
},
/**
* Simple object to store any UI elements we need to use over the life of the application.
*/
ui: {
nav: undefined,
content: undefined
},
/**
* Instantiates the Template object and triggers load.
*/
initialize: function() {
_.bindAll(this, "render", "closeModal", "saveModal", "switchTab");
this.focusManager = new wp.media.view.FocusManager({
el: this.el
});
this.changeInsertText();
this.tinyMCEsettings();
this.render();
},
/**
* switch the insert button text to "insert section"
*/
changeInsertText: function(restore) {
var restore = typeof restore !== 'undefined' && restore == true ? true : false;
if (restore == false && typeof(wp.media.view.l10n.insertIntoPost) !== "undefined") {
this.insertIntoPost = wp.media.view.l10n.insertIntoPost;
wp.media.view.l10n.insertIntoPost = generate_sections_metabox_i18n.insert_into_section;
// switch the insert button text back
} else if (restore == true && typeof(this.insertIntoPost) !== "undefined") {
wp.media.view.l10n.insertIntoPost = this.insertIntoPost;
}
},
/**
* Merge the default TinyMCE settings
*/
tinyMCEsettings: function() {
// get the #content"s tinyMCE settings or use default
var init_settings = typeof tinyMCEPreInit == "object" && "mceInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.mceInit ? tinyMCEPreInit.mceInit.content : this.tmc_defaults;
// get the #content"s quicktags settings or use default
var qt_settings = typeof tinyMCEPreInit == "object" && "qtInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.qtInit ? tinyMCEPreInit.qtInit.content : this.qt_defaults;
var _this = this;
var custom_settings = {
selector: "#generate-sections-editor",
wp_autoresize_on: false,
cache_suffix: "",
min_height: 400,
}
// merge our settings with WordPress" and store for later use
this.tmc_settings = $.extend({}, init_settings, custom_settings);
this.qt_settings = $.extend({}, qt_settings, {
id: "generate-sections-editor"
});
},
/**
* Assembles the UI from loaded template.
* @internal Obviously, if the template fail to load, our modal never launches.
*/
render: function() {
"use strict";
// Build the base window and backdrop, attaching them to the $el.
// Setting the tab index allows us to capture focus and redirect it in Application.preserveFocus
this.$el.attr("tabindex", "0")
.html(this.template);
// Handle any attempt to move focus out of the modal.
//jQuery(document).on("focusin", this.preserveFocus);
// set overflow to "hidden" on the body so that it ignores any scroll events while the modal is active
// and append the modal to the body.
jQuery("body").addClass("generate-modal-open").prepend(this.$el);
// aria hide the background
jQuery("#wpwrap").attr("aria-hidden", "true");
this.renderContent();
this.renderPreview();
this.selected();
this.colorPicker();
this.startTinyMCE();
// Set focus on the modal to prevent accidental actions in the underlying page
this.$el.focus();
return this;
},
/**
* Make the menu mobile-friendly
*/
toggleMenu: function() {
this.$el.find('.media-menu').toggleClass('visible');
},
/**
* Create the nav tabs & panels
*/
renderContent: function() {
var model = this.model;
var menu_item = wp.template("generate-sections-modal-menu-item");
// Save a reference to the navigation bar"s unordered list and populate it with items.
this.ui.nav = this.$el.find(".media-menu");
// reference to content area
this.ui.panels = this.$el.find(".media-frame-content");
// loop through the tabs
if (generate_sections_metabox_i18n.tabs.length) {
// for...of is nicer, but not supported by minify, so stay with for...in for now
for (var tab in generate_sections_metabox_i18n.tabs) {
if (generate_sections_metabox_i18n.tabs.hasOwnProperty(tab)) {
tab = generate_sections_metabox_i18n.tabs[tab];
var $new_tab = $(menu_item({
target: tab.target,
name: tab.title
}));
var panel = wp.template("generate-sections-edit-" + tab.target);
var $new_panel = $(panel(model.toJSON()));
if (tab.active == "true") {
$new_tab.addClass("active");
$new_panel.addClass("active");
}
jQuery( 'body' ).on( 'generate_section_show_settings', function() {
jQuery( '.generate-sections-modal .media-menu-item' ).removeClass('active');
jQuery( '.generate-sections-modal .panel' ).removeClass('active');
jQuery( '.generate-section-item-style' ).addClass('active');
jQuery( '.generate-section-settings' ).addClass('active');
});
this.ui.nav.append($new_tab);
this.ui.panels.append($new_panel);
}
}
}
},
/**
* Render the background image preview
*/
renderPreview: function(image_id) {
var image_id = typeof image_id !== 'undefined' ? image_id : this.model.get("background_image");
var $preview = $("#generate-section-image-preview");
$preview.children().remove();
if (image_id > 0) {
this.background = new wp.media.model.Attachment.get(image_id);
this.background.fetch({
success: function(att) {
if (_.contains(['png', 'jpg', 'gif', 'jpeg'], att.get('subtype'))) {
$("<img/>").attr("src", att.attributes.sizes.thumbnail.url).appendTo($preview);
$preview.next().find(".generate-sections-remove-image").show();
}
}
});
}
},
/**
* Set the default option for the select boxes
*/
selected: function() {
var _this = this;
this.$el.find("select").each(function(index, select) {
var attribute = jQuery(select).attr("name");
var selected = _this.model.get(attribute);
jQuery(select).val(selected);
});
},
/**
* Start the colorpicker
*/
colorPicker: function() {
this.$el.find(".generate-sections-color").wpColorPicker();
},
/**
* Start TinyMCE on the textarea
*/
startTinyMCE: function() {
// set the default editor
this.ui.panels.find("#wp-generate-sections-editor-wrap").addClass(generate_sections_metabox_i18n.default_editor);
// remove tool buttons if richedit disabled
if (!generate_sections_metabox_i18n.user_can_richedit) {
this.ui.panels.find(".wp-editor-tabs").remove();
}
// add our copy to the collection in the tinyMCEPreInit object because switch editors
if (typeof tinyMCEPreInit == 'object') {
tinyMCEPreInit.mceInit["generate-sections-editor"] = this.tmc_settings;
tinyMCEPreInit.qtInit["generate-sections-editor"] = this.qt_settings;
tinyMCEPreInit.mceInit["generate-sections-editor"].wp_keep_scroll_position = false;
}
try {
var rich = (typeof tinyMCE != "undefined");
// turn on the quicktags editor
quicktags(this.qt_settings);
// attempt to fix problem of quicktags toolbar with no buttons
QTags._buttonsInit();
if (rich !== false) {
// turn on tinyMCE
tinyMCE.init(this.tmc_settings);
}
} catch (e) {}
},
/**
* Launch Media Uploader
*/
openMediaUploader: function(e) {
var _this = this;
$input = jQuery(e.currentTarget).prev("#generate-sections-background-image");
e.preventDefault();
// If the uploader object has already been created, reopen the dialog
if (this.mediaUploader) {
this.mediaUploader.open();
return;
}
// Extend the wp.media object
this.mediaUploader = wp.media.frames.file_frame = wp.media({
title: generate_sections_metabox_i18n.media_library_title,
button: {
text: generate_sections_metabox_i18n.media_library_button
},
multiple: false
});
// When a file is selected, grab the URL and set it as the text field"s value
this.mediaUploader.on("select", function() {
attachment = _this.mediaUploader.state().get("selection").first().toJSON();
$input.val(attachment.id);
_this.renderPreview(attachment.id);
});
// Open the uploader dialog
this.mediaUploader.open();
},
/**
* Remove the background image
*/
removeImage: function(e) {
e.preventDefault();
$("#generate-section-image-preview").children().remove();
$("#generate-section-image-preview").next().find(".generate-sections-remove-image").hide();
$("#generate-sections-background-image").val("");
},
/**
* Closes the modal and cleans up after the instance.
* @param e {object} A jQuery-normalized event object.
*/
closeModal: function(e) {
"use strict";
e.preventDefault();
this.undelegateEvents();
jQuery(document).off("focusin");
jQuery("body").removeClass("generate-modal-open");
jQuery("body").removeClass("generate-section-content");
// remove restricted media modal tab focus once it's closed
this.$el.undelegate('keydown');
// remove the tinymce editor
// this needs to be called before the modal is closed or it will fail in Firefox (that was fun to figure out...)
if (typeof tinyMCE != "undefined") {
tinymce.EditorManager.execCommand("mceRemoveEditor", true, "generate-sections-editor");
}
// remove modal and unset instances
this.remove();
Generate_Sections.backbone_modal.__instance = undefined;
this.mediaUploader = null;
Generate_Sections.modalOpen = null;
// switch the insert button text back
this.changeInsertText(true);
// send focus back to where it was prior to modal open
Generate_Sections.lastFocus.focus();
// aria unhide the background
jQuery("#wpwrap").attr("aria-hidden", "false");
// Fix bug where the window scrolls down 50px on close
var topDistance = jQuery("body").offset().top;
if ( topDistance >= jQuery("body").scrollTop() ) {
jQuery("body").scrollTop(0);
}
},
/**
* Responds to the btn-ok.click event
* @param e {object} A jQuery-normalized event object.
* @todo You should make this your own.
*/
saveModal: function(e) {
"use strict";
this.model.get("index");
var model = this.model;
// send the tinymce content to the textarea
if (typeof tinyMCE != "undefined") {
tinymce.triggerSave();
}
var $inputs = this.ui.panels.find("input, select, textarea");
$inputs.each(function(index, input) {
var name = $(input).attr("name");
if (model.attributes.hasOwnProperty(name)) {
var value = $(input).val();
model.set(name, value);
}
});
this.closeModal(e);
},
/**
* Handles tab clicks and switches to corresponding panel
* @param e {object} A jQuery-normalized event object.
*/
switchTab: function(e) {
"use strict";
e.preventDefault();
// close lingering wp link windows
if (typeof tinyMCE != "undefined" && 'style' == jQuery( e.currentTarget ).data( 'target' ) && this.ui.panels.find( '#wp-generate-sections-editor-wrap' ).hasClass( 'tmce-active' )) {
tinyMCE.activeEditor.execCommand('wp_link_cancel');
tinyMCE.activeEditor.execCommand('wp_media_cancel');
}
this.ui.nav.children().removeClass("active");
this.ui.panels.children().removeClass("active");
var target = jQuery(e.currentTarget).addClass("active").data("target");
this.ui.panels.find("div[data-id=" + target + "]").addClass("active");
},
/**
* close on keyboard shortcuts
* @param {Object} event
*/
keydown: function(e) {
// Close the modal when escape is pressed.
if (27 === e.which && this.$el.is(':visible')) {
this.closeModal(e);
e.stopImmediatePropagation();
}
}
});
// Singular View
Generate_Sections.sectionView = Backbone.View.extend({
model: Generate_Sections.Section,
tagName: 'div',
initialize: function() {
// re-render on all changes EXCEPT index
this.listenTo(this.model, "change", this.maybeRender);
},
attributes: {
class: "ui-state-default section"
},
// Get the template from the DOM
template: wp.template("generate-sections-section"),
events: {
'click .edit-section': 'editSection',
'click .section-title > span': 'editSection',
'click .delete-section': 'removeSection',
'click .toggle-section': 'toggleSection',
'reorder': 'reorder',
},
maybeRender: function(e) {
if (this.model.hasChanged('index')) return;
this.render();
},
// Render the single model - include an index.
render: function() {
this.model.set('index', this.model.collection.indexOf(this.model));
this.$el.html(this.template(this.model.toJSON()));
if (!this.model.get('title')) {
this.$el.find('h3.section-title > span').text(generate_sections_metabox_i18n.default_title);
}
this.$el.find('textarea').val(JSON.stringify(this.model));
return this;
},
// launch the edit modal
editSection: function(e) {
// stash the current focus
Generate_Sections.lastFocus = document.activeElement;
Generate_Sections.modalOpen = true;
e.preventDefault();
if (Generate_Sections.backbone_modal.__instance === undefined) {
Generate_Sections.backbone_modal.__instance = new Generate_Sections.backbone_modal.Application({
model: this.model
});
}
},
// reorder after sort
reorder: function(event, index) {
this.$el.trigger('update-sort', [this.model, index]);
},
// remove/destroy a model
removeSection: function(e) {
e.preventDefault();
if (confirm(generate_sections_metabox_i18n.confirm)) {
this.model.destroy();
Generate_Sections.sectionList.render(); // manually calling instead of listening since listening interferes with sorting
}
},
});
// List View
Generate_Sections.sectionListView = Backbone.View.extend({
el: "#generate_sections_container",
events: {
'update-sort': 'updateSort',
// 'add-section': 'addOne'
},
// callback for clone button
addSection: function(model) {
this.collection.add(model);
this.addOne(model);
},
addOne: function(model) {
var view = new Generate_Sections.sectionView({
model: model
});
this.$el.append(view.render().el);
},
render: function() {
this.$el.children().remove();
this.collection.each(this.addOne, this);
return this;
},
updateSort: function(event, model, position) {
this.collection.remove(model);
// renumber remaining models around missing model
this.collection.each(function(model, index) {
var new_index = index;
if (index >= position) {
new_index += 1;
}
model.set('index', new_index);
});
// set the index of the missing model
model.set('index', position);
// add the model back to the collection
this.collection.add(model, {
at: position
});
this.render();
},
});
// The Buttons & Nonce
Generate_Sections.ButtonControls = Backbone.View.extend({
attributes: {
class: "generate_sections_buttons"
},
tagName: 'p',
el: "#_generate_sections_metabox",
template: wp.template("generate-sections-buttons"),
// Attach events
events: {
"click .button-primary": "newSection",
"click #generate-delete-sections": "clearAll",
'click .edit-section': 'editSection',
},
// create new
newSection: function(e) {
e.preventDefault();
var newSection = new Generate_Sections.Section();
Generate_Sections.sectionList.addSection(newSection);
},
// clear all models
clearAll: function(e) {
e.preventDefault();
if (confirm(generate_sections_metabox_i18n.confirm)) {
Generate_Sections.sectionCollection.reset();
Generate_Sections.sectionList.render();
}
},
render: function() {
this.$el.find(".generate_sections_control").append(this.template);
return this;
},
});
// init
Generate_Sections.initApplication = function() {
// Create Collection From Existing Meta
Generate_Sections.sectionCollection = new Generate_Sections.SectionsCollection(generate_sections_metabox_i18n.sections);
// Create the List View
Generate_Sections.sectionList = new Generate_Sections.sectionListView({
collection: Generate_Sections.sectionCollection
});
Generate_Sections.sectionList.render();
// Buttons
Generate_Sections.Buttons = new Generate_Sections.ButtonControls({
collection: Generate_Sections.sectionCollection
});
Generate_Sections.Buttons.render();
};
/*-----------------------------------------------------------------------------------*/
/* Execute the above methods in the Generate_Sections object.
/*-----------------------------------------------------------------------------------*/
jQuery(document).ready(function($) {
Generate_Sections.initApplication();
$( '#generate_sections_container' ).sortable({
axis: "y",
opacity: 0.5,
grid: [20, 10],
tolerance: "pointer",
handle: ".move-section",
update: function(event, ui) {
ui.item.trigger("reorder", ui.item.index());
}
} );
if ( $( '.use-sections-switch' ).is( ':checked' ) ) {
setTimeout( function() {
generateShowSections();
}, 200 );
} else {
generateHideSections();
}
$( '.use-sections-switch' ).on( 'change', function( e ) {
var status = ( $(this).is( ':checked' ) ) ? 'checked' : 'unchecked';
if ( 'checked' == status ) {
generateShowSections();
} else if ( 'unchecked' == status ) {
generateHideSections();
}
} );
function generateShowSections() {
// Hide send to editor button
$('.send-to-editor').css('display', 'none');
// Hide the editor
$('#postdivrich').css({
'opacity': '0',
'height': '0',
'overflow': 'hidden'
});
// Show the sections
$('#_generate_sections_metabox').css({
'opacity': '1',
'height': 'auto'
});
// Remove and add the default editor - this removes any visible toolbars etc..
// We need to set a timeout for this to work
// if (typeof tinyMCE != "undefined") {
// tinyMCE.EditorManager.execCommand("mceRemoveEditor", true, "content");
// $( '.use-sections-cover' ).css( 'z-index','10000' );
// setTimeout('tinyMCE.EditorManager.execCommand("mceAddEditor", true, "content");', 1);
// setTimeout('jQuery( ".use-sections-cover" ).css( "z-index","-1" );', 1000);
// }
// Set a trigger
$('body').trigger('generate_show_sections');
}
function generateHideSections() {
// Show send to editor button
$('.send-to-editor').css('display', 'inline-block');
// Show the editor
$('#postdivrich').css({
'opacity': '1',
'height': 'auto'
});
// Hide the sections
$('#_generate_sections_metabox').css({
'opacity': '0',
'height': '0',
'overflow': 'hidden'
});
$('body').trigger('generate_hide_sections');
}
$( document ).on( 'click', '.edit-section.edit-settings', function() {
$( 'body' ).trigger( 'generate_section_show_settings' );
});
});
})(jQuery, Generate_Sections);

@ -1,858 +0,0 @@
/*-----------------------------------------------------------------------------------*/
/* Generate Sections Metabox
/*
/* © Kathy Darling http://www.kathyisawesome.com
/* 2016-07-19. */
/*-----------------------------------------------------------------------------------*/
/**
* @type {Object} JavaScript namespace for our application.
*/
var Generate_Sections = {
backbone_modal: {
__instance: undefined
}
};
(function($, Generate_Sections) {
// Model
Generate_Sections.Section = Backbone.Model.extend({
defaults: {
"title": "",
"box_type": "",
"inner_box_type": "",
"custom_classes": "",
"custom_id": "",
"top_padding": "",
"bottom_padding": "",
"top_padding_unit": "",
"bottom_padding_unit": "",
"background_color": "",
"background_image": "",
"background_image_preview": "",
"parallax_effect": "",
"background_color_overlay": "",
"text_color": "",
"link_color": "",
"link_color_hover": "",
"content": ""
}
});
// Collection
Generate_Sections.SectionsCollection = Backbone.Collection.extend({
model: Generate_Sections.Section,
el: "#generate_sections_container",
comparator: function(model) {
return model.get('index');
}
});
/**
* Primary Modal Application Class
*/
Generate_Sections.backbone_modal.Application = Backbone.View.extend({
attributes: {
id: "generate-sections-modal-dialog",
class: "generate-sections-modal",
role: "dialog"
},
template: wp.template("generate-sections-modal-window"),
mediaUploader: null,
/*-----------------------------------------------------------------------------------*/
/* tinyMCE settings
/*-----------------------------------------------------------------------------------*/
tmc_settings: {},
/*-----------------------------------------------------------------------------------*/
/* tinyMCE defaults
/*-----------------------------------------------------------------------------------*/
tmc_defaults: {
theme: "modern",
menubar: false,
wpautop: true,
indent: false,
toolbar1: "bold,italic,underline,blockquote,strikethrough,bullist,numlist,alignleft,aligncenter,alignright,undo,redo,link,unlink,fullscreen",
plugins: "fullscreen,image,wordpress,wpeditimage,wplink",
max_height: 500
},
/*-----------------------------------------------------------------------------------*/
/* quicktags settings
/*-----------------------------------------------------------------------------------*/
qt_settings: {},
/*-----------------------------------------------------------------------------------*/
/* quicktags defaults
/*-----------------------------------------------------------------------------------*/
qt_defaults: {
buttons: "strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,fullscreen"
},
model: Generate_Sections.Section,
events: {
"click .media-modal-backdrop, .media-modal-close, .media-button-close": "closeModal",
"click .media-button-insert": "saveModal",
"click .media-menu-item": "switchTab",
"keydown": "keydown",
"click .generate-sections-upload-button": "openMediaUploader",
"click .generate-sections-remove-image": "removeImage",
"click div.media-frame-title h1": "toggleMenu"
},
/**
* Simple object to store any UI elements we need to use over the life of the application.
*/
ui: {
nav: undefined,
content: undefined
},
/**
* Instantiates the Template object and triggers load.
*/
initialize: function() {
_.bindAll(this, "render", "closeModal", "saveModal", "switchTab");
this.focusManager = new wp.media.view.FocusManager({
el: this.el
});
this.changeInsertText();
//this.tinyMCEsettings();
this.render();
},
/**
* switch the insert button text to "insert section"
*/
changeInsertText: function(restore) {
var restore = typeof restore !== 'undefined' && restore == true ? true : false;
if (restore == false && typeof(wp.media.view.l10n.insertIntoPost) !== "undefined") {
this.insertIntoPost = wp.media.view.l10n.insertIntoPost;
wp.media.view.l10n.insertIntoPost = generate_sections_metabox_i18n.insert_into_section;
// switch the insert button text back
} else if (restore == true && typeof(this.insertIntoPost) !== "undefined") {
wp.media.view.l10n.insertIntoPost = this.insertIntoPost;
}
},
/**
* Assembles the UI from loaded template.
* @internal Obviously, if the template fail to load, our modal never launches.
*/
render: function() {
"use strict";
// Build the base window and backdrop, attaching them to the $el.
// Setting the tab index allows us to capture focus and redirect it in Application.preserveFocus
this.$el.attr("tabindex", "0").html(this.template);
// Handle any attempt to move focus out of the modal.
//jQuery(document).on("focusin", this.preserveFocus);
// set overflow to "hidden" on the body so that it ignores any scroll events while the modal is active
// and append the modal to the body.
jQuery("body").addClass("generate-modal-open").prepend(this.$el);
// aria hide the background
jQuery("#wpwrap").attr("aria-hidden", "true");
this.renderContent();
this.renderPreview();
this.selected();
this.colorPicker();
//this.startTinyMCE();
this.launchEditor();
// Set focus on the modal to prevent accidental actions in the underlying page
this.$el.focus();
return this;
},
launchEditor: function() {
var id = this.ui.panels.find( ".generate-sections-editor-wrap" ).find( 'textarea' ).attr( 'id' ),
customButtonsContainer = this.ui.panels.find( '.generate-sections-editor-wrap' ).find( '#custom-media-buttons' );
customButtonsContainer.find( '.insert-media' ).remove();
var customButtons = customButtonsContainer.html();
customButtonsContainer.remove();
var init_settings = true;
if ( typeof tinyMCEPreInit == "object" && "mceInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.mceInit ) {
init_settings = tinyMCEPreInit.mceInit.content;
} else if ( typeof window.wpEditorL10n !== "undefined" ) {
init_settings = window.wpEditorL10n.tinymce.settings;
} else {
init_settings = this.tmc_defaults;
}
var thisPanel = this.ui.panels;
var custom_settings = {
wp_autoresize_on: false,
cache_suffix: "",
min_height: 400,
wp_keep_scroll_position: false,
setup: function( editor ) {
editor.on( 'init', function( e ) {
if ( 'html-active' === generate_sections_metabox_i18n.default_editor && generate_sections_metabox_i18n.user_can_richedit ) {
thisPanel.find( '#wp-generate-sections-editor-wrap' ).removeClass( 'tmce-active' ).addClass( 'html-active' );
editor.hidden = true;
}
} );
}
}
init_settings = $.extend({}, init_settings, custom_settings);
var qt_settings = true;
if ( typeof tinyMCEPreInit == "object" && "qtInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.qtInit ) {
qt_settings = tinyMCEPreInit.qtInit.content;
} else {
qt_settings = this.qt_defaults;
}
if ( ! generate_sections_metabox_i18n.user_can_richedit ) {
init_settings = false;
}
wp.sectionsEditor.initialize( id, {
tinymce: init_settings,
quicktags: qt_settings,
mediaButtons: true
} );
var buttonsElement = this.ui.panels.find( '#wp-generate-sections-editor-wrap' ).find( '.wp-media-buttons' );
buttonsElement.attr( 'id', 'custom-media-buttons' );
$( customButtons ).appendTo( buttonsElement );
if ( ! generate_sections_metabox_i18n.user_can_richedit ) {
this.ui.panels.find( '#generate-sections-editor' ).addClass( 'no-rich-edit' );
}
},
/**
* Make the menu mobile-friendly
*/
toggleMenu: function() {
this.$el.find('.media-menu').toggleClass('visible');
},
/**
* Create the nav tabs & panels
*/
renderContent: function() {
var model = this.model;
var menu_item = wp.template("generate-sections-modal-menu-item");
// Save a reference to the navigation bar"s unordered list and populate it with items.
this.ui.nav = this.$el.find(".media-menu");
// reference to content area
this.ui.panels = this.$el.find(".media-frame-content");
// loop through the tabs
if (generate_sections_metabox_i18n.tabs.length) {
// for...of is nicer, but not supported by minify, so stay with for...in for now
for (var tab in generate_sections_metabox_i18n.tabs) {
if (generate_sections_metabox_i18n.tabs.hasOwnProperty(tab)) {
tab = generate_sections_metabox_i18n.tabs[tab];
var $new_tab = $(menu_item({
target: tab.target,
name: tab.title
}));
var panel = wp.template("generate-sections-edit-" + tab.target);
var $new_panel = $(panel(model.toJSON()));
if (tab.active == "true") {
$new_tab.addClass("active");
$new_panel.addClass("active");
}
jQuery( 'body' ).on( 'generate_section_show_settings', function() {
jQuery( '.generate-sections-modal .media-menu-item' ).removeClass('active');
jQuery( '.generate-sections-modal .panel' ).removeClass('active');
jQuery( '.generate-section-item-style' ).addClass('active');
jQuery( '.generate-section-settings' ).addClass('active');
});
this.ui.nav.append($new_tab);
this.ui.panels.append($new_panel);
}
}
}
},
/**
* Render the background image preview
*/
renderPreview: function(image_id) {
var image_id = typeof image_id !== 'undefined' ? image_id : this.model.get("background_image");
var $preview = $("#generate-section-image-preview");
$preview.children().remove();
if (image_id > 0) {
this.background = new wp.media.model.Attachment.get(image_id);
this.background.fetch({
success: function(att) {
if (_.contains(['png', 'jpg', 'gif', 'jpeg'], att.get('subtype'))) {
$("<img/>").attr("src", att.attributes.sizes.thumbnail.url).appendTo($preview);
$preview.next().find(".generate-sections-remove-image").show();
}
}
});
}
},
/**
* Set the default option for the select boxes
*/
selected: function() {
var _this = this;
this.$el.find("select").each(function(index, select) {
var attribute = jQuery(select).attr("name");
var selected = _this.model.get(attribute);
jQuery(select).val(selected);
});
},
/**
* Start the colorpicker
*/
colorPicker: function() {
this.$el.find(".generate-sections-color").wpColorPicker();
},
/**
* Launch Media Uploader
*/
openMediaUploader: function(e) {
var _this = this;
$input = jQuery(e.currentTarget).prev("#generate-sections-background-image");
e.preventDefault();
// If the uploader object has already been created, reopen the dialog
if (this.mediaUploader) {
this.mediaUploader.open();
return;
}
// Extend the wp.media object
this.mediaUploader = wp.media.frames.file_frame = wp.media({
title: generate_sections_metabox_i18n.media_library_title,
button: {
text: generate_sections_metabox_i18n.media_library_button
},
multiple: false
});
// When a file is selected, grab the URL and set it as the text field"s value
this.mediaUploader.on("select", function() {
attachment = _this.mediaUploader.state().get("selection").first().toJSON();
$input.val(attachment.id);
_this.renderPreview(attachment.id);
});
// Open the uploader dialog
this.mediaUploader.open();
},
/**
* Remove the background image
*/
removeImage: function(e) {
e.preventDefault();
$("#generate-section-image-preview").children().remove();
$("#generate-section-image-preview").next().find(".generate-sections-remove-image").hide();
$("#generate-sections-background-image").val("");
},
/**
* Closes the modal and cleans up after the instance.
* @param e {object} A jQuery-normalized event object.
*/
closeModal: function(e) {
"use strict";
e.preventDefault();
this.undelegateEvents();
jQuery(document).off("focusin");
jQuery("body").removeClass("generate-modal-open");
jQuery("body").removeClass("generate-section-content");
// remove restricted media modal tab focus once it's closed
this.$el.undelegate('keydown');
// remove the tinymce editor
// this needs to be called before the modal is closed or it will fail in Firefox (that was fun to figure out...)
if (typeof tinyMCE != "undefined") {
tinymce.EditorManager.execCommand("mceRemoveEditor", true, "generate-sections-editor");
}
// remove modal and unset instances
this.remove();
Generate_Sections.backbone_modal.__instance = undefined;
this.mediaUploader = null;
Generate_Sections.modalOpen = null;
// switch the insert button text back
this.changeInsertText(true);
// send focus back to where it was prior to modal open
Generate_Sections.lastFocus.focus();
// aria unhide the background
jQuery("#wpwrap").attr("aria-hidden", "false");
// Fix bug where the window scrolls down 50px on close
var topDistance = jQuery("body").offset().top;
if ( topDistance >= jQuery("body").scrollTop() ) {
jQuery("body").scrollTop(0);
}
},
/**
* Responds to the btn-ok.click event
* @param e {object} A jQuery-normalized event object.
* @todo You should make this your own.
*/
saveModal: function(e) {
"use strict";
this.model.get("index");
var model = this.model;
// send the tinymce content to the textarea
if (typeof tinyMCE != "undefined") {
tinymce.triggerSave();
}
var $inputs = this.ui.panels.find("input, select, textarea");
$inputs.each(function(index, input) {
var name = $(input).attr("name");
if (model.attributes.hasOwnProperty(name)) {
var value = $(input).val();
model.set(name, value);
}
});
this.closeModal(e);
},
/**
* Handles tab clicks and switches to corresponding panel
* @param e {object} A jQuery-normalized event object.
*/
switchTab: function(e) {
"use strict";
e.preventDefault();
// close lingering wp link windows
if (typeof tinyMCE != "undefined" && 'style' == jQuery( e.currentTarget ).data( 'target' ) && this.ui.panels.find( '#wp-generate-sections-editor-wrap' ).hasClass( 'tmce-active' )) {
tinyMCE.activeEditor.execCommand('wp_link_cancel');
tinyMCE.activeEditor.execCommand('wp_media_cancel');
}
this.ui.nav.children().removeClass("active");
this.ui.panels.children().removeClass("active");
var target = jQuery(e.currentTarget).addClass("active").data("target");
this.ui.panels.find("div[data-id=" + target + "]").addClass("active");
},
/**
* close on keyboard shortcuts
* @param {Object} event
*/
keydown: function(e) {
// Close the modal when escape is pressed.
if (27 === e.which && this.$el.is(':visible')) {
this.closeModal(e);
e.stopImmediatePropagation();
}
}
});
// Singular View
Generate_Sections.sectionView = Backbone.View.extend({
model: Generate_Sections.Section,
tagName: 'div',
initialize: function() {
// re-render on all changes EXCEPT index
this.listenTo(this.model, "change", this.maybeRender);
},
attributes: {
class: "ui-state-default section"
},
// Get the template from the DOM
template: wp.template("generate-sections-section"),
events: {
'click .edit-section': 'editSection',
'click .section-title > span': 'editSection',
'click .delete-section': 'removeSection',
'click .toggle-section': 'toggleSection',
'reorder': 'reorder',
},
maybeRender: function(e) {
if (this.model.hasChanged('index')) return;
this.render();
},
// Render the single model - include an index.
render: function() {
this.model.set('index', this.model.collection.indexOf(this.model));
this.$el.html(this.template(this.model.toJSON()));
if (!this.model.get('title')) {
this.$el.find('h3.section-title > span').text(generate_sections_metabox_i18n.default_title);
}
this.$el.find('textarea').val(JSON.stringify(this.model));
return this;
},
// launch the edit modal
editSection: function(e) {
// stash the current focus
Generate_Sections.lastFocus = document.activeElement;
Generate_Sections.modalOpen = true;
e.preventDefault();
if (Generate_Sections.backbone_modal.__instance === undefined) {
Generate_Sections.backbone_modal.__instance = new Generate_Sections.backbone_modal.Application({
model: this.model
});
}
},
// reorder after sort
reorder: function(event, index) {
this.$el.trigger('update-sort', [this.model, index]);
},
// remove/destroy a model
removeSection: function(e) {
e.preventDefault();
if (confirm(generate_sections_metabox_i18n.confirm)) {
this.model.destroy();
Generate_Sections.sectionList.render(); // manually calling instead of listening since listening interferes with sorting
}
},
});
// List View
Generate_Sections.sectionListView = Backbone.View.extend({
el: "#generate_sections_container",
events: {
'update-sort': 'updateSort',
// 'add-section': 'addOne'
},
// callback for clone button
addSection: function(model) {
this.collection.add(model);
this.addOne(model);
},
addOne: function(model) {
var view = new Generate_Sections.sectionView({
model: model
});
this.$el.append(view.render().el);
},
render: function() {
this.$el.children().remove();
this.collection.each(this.addOne, this);
return this;
},
updateSort: function(event, model, position) {
this.collection.remove(model);
// renumber remaining models around missing model
this.collection.each(function(model, index) {
var new_index = index;
if (index >= position) {
new_index += 1;
}
model.set('index', new_index);
});
// set the index of the missing model
model.set('index', position);
// add the model back to the collection
this.collection.add(model, {
at: position
});
this.render();
},
});
// The Buttons & Nonce
Generate_Sections.ButtonControls = Backbone.View.extend({
attributes: {
class: "generate_sections_buttons"
},
tagName: 'p',
el: "#_generate_sections_metabox",
template: wp.template("generate-sections-buttons"),
// Attach events
events: {
"click .button-primary": "newSection",
"click #generate-delete-sections": "clearAll",
'click .edit-section': 'editSection',
},
// create new
newSection: function(e) {
e.preventDefault();
var newSection = new Generate_Sections.Section();
Generate_Sections.sectionList.addSection(newSection);
},
// clear all models
clearAll: function(e) {
e.preventDefault();
if (confirm(generate_sections_metabox_i18n.confirm)) {
Generate_Sections.sectionCollection.reset();
Generate_Sections.sectionList.render();
}
},
render: function() {
this.$el.find(".generate_sections_control").append(this.template);
return this;
},
});
// init
Generate_Sections.initApplication = function() {
// Create Collection From Existing Meta
Generate_Sections.sectionCollection = new Generate_Sections.SectionsCollection(generate_sections_metabox_i18n.sections);
// Create the List View
Generate_Sections.sectionList = new Generate_Sections.sectionListView({
collection: Generate_Sections.sectionCollection
});
Generate_Sections.sectionList.render();
// Buttons
Generate_Sections.Buttons = new Generate_Sections.ButtonControls({
collection: Generate_Sections.sectionCollection
});
Generate_Sections.Buttons.render();
};
/*-----------------------------------------------------------------------------------*/
/* Execute the above methods in the Generate_Sections object.
/*-----------------------------------------------------------------------------------*/
jQuery( function( $ ) {
Generate_Sections.initApplication();
$( '#generate_sections_container' ).sortable({
axis: "y",
opacity: 0.5,
grid: [20, 10],
tolerance: "pointer",
handle: ".move-section",
update: function(event, ui) {
ui.item.trigger("reorder", ui.item.index());
}
} );
if ( $( '.use-sections-switch' ).is( ':checked' ) ) {
setTimeout( function() {
generateShowSections();
}, 200 );
} else {
generateHideSections();
}
$( '.use-sections-switch' ).on( 'change', function( e ) {
var status = ( $(this).is( ':checked' ) ) ? 'checked' : 'unchecked';
if ( 'checked' == status ) {
generateShowSections();
} else if ( 'unchecked' == status ) {
generateHideSections();
}
} );
function generateShowSections() {
// Hide send to editor button
$('.send-to-editor').css('display', 'none');
// Hide the editor
$('#postdivrich').css({
'opacity': '0',
'height': '0',
'overflow': 'hidden'
});
$( '.block-editor-block-list__layout' ).hide();
$( '.edit-post-layout .edit-post-visual-editor' ).css( {
'flex-grow': 'unset',
'flex-basis': '0'
} );
$( '.edit-post-visual-editor .block-editor-writing-flow__click-redirect' ).css( {
'min-height': '0'
} );
$( '.edit-post-layout__metaboxes:not(:empty)' ).css( 'border-top', '0' );
// Show the sections
$('#_generate_sections_metabox').css({
'opacity': '1',
'height': 'auto'
});
// Remove and add the default editor - this removes any visible toolbars etc..
// We need to set a timeout for this to work
// if (typeof tinyMCE != "undefined") {
// tinyMCE.EditorManager.execCommand("mceRemoveEditor", true, "content");
// $( '.use-sections-cover' ).css( 'z-index','10000' );
// setTimeout('tinyMCE.EditorManager.execCommand("mceAddEditor", true, "content");', 1);
// setTimeout('jQuery( ".use-sections-cover" ).css( "z-index","-1" );', 1000);
// }
// Set a trigger
$('body').trigger('generate_show_sections');
}
function generateHideSections() {
// Show send to editor button
$('.send-to-editor').css('display', 'inline-block');
// Show the editor
$('#postdivrich').css({
'opacity': '1',
'height': 'auto'
});
$( '.block-editor-block-list__layout' ).show();
$( '.edit-post-layout .edit-post-visual-editor' ).css( {
'flex-grow': '',
'flex-basis': ''
} );
$( '.edit-post-visual-editor .block-editor-writing-flow__click-redirect' ).css( {
'min-height': ''
} );
$( '.edit-post-layout__metaboxes:not(:empty)' ).css( 'border-top', '' );
// Hide the sections
$('#_generate_sections_metabox').css({
'opacity': '0',
'height': '0',
'overflow': 'hidden'
});
$('body').trigger('generate_hide_sections');
}
$( document ).on( 'click', '.edit-section.edit-settings', function() {
$( 'body' ).trigger( 'generate_section_show_settings' );
});
});
})(jQuery, Generate_Sections);

@ -1,396 +0,0 @@
<?php
// No direct access, please
if ( ! defined( 'ABSPATH' ) ) exit;
if ( ! function_exists( 'generate_sections_admin_body_class' ) ) {
add_filter( 'admin_body_class', 'generate_sections_admin_body_class' );
function generate_sections_admin_body_class( $classes ) {
global $post;
$use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : '';
if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) {
$classes .= ' generate-sections-enabled';
}
return $classes;
}
}
if ( ! function_exists( 'generate_sections_content_width' ) ) {
add_action( 'wp', 'generate_sections_content_width', 50 );
/**
* Set our content width when sections are enabled
*/
function generate_sections_content_width() {
global $post;
$use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : '';
if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) {
global $content_width;
$content_width = 2000;
}
}
}
if ( ! function_exists( 'generate_sections_add_metaboxes' ) ) {
add_action( 'add_meta_boxes', 'generate_sections_add_metaboxes', 5 );
/*
* Functions for creating the metaboxes
*/
function generate_sections_add_metaboxes() {
$post_types = apply_filters( 'generate_sections_post_types', array( 'page', 'post' ) );
add_meta_box(
'_generate_use_sections_metabox',
__( 'Sections', 'gp-premium' ),
'generate_sections_use_sections_metabox',
$post_types,
'side',
'high'
);
add_meta_box(
'_generate_sections_metabox',
__( 'Sections', 'gp-premium' ),
'generate_sections_sections_metabox',
$post_types,
'normal',
'high'
);
}
}
if ( ! function_exists( 'generate_sections_sanitize_function' ) ) {
/*
* Sanitize our settings
*/
function generate_sections_sanitize_function( $data, $post_id ) {
$section = array();
if ( isset( $data['title'] ) ) {
$section['title'] = sanitize_text_field( $data['title'] );
}
if ( isset( $data['content'] ) ) {
$section['content'] = sanitize_post_field( 'post_content', $data['content'], $post_id, 'db' );
}
if ( isset( $data['custom_classes'] ) ) {
$section['custom_classes'] = sanitize_text_field( $data['custom_classes'] );
}
if ( isset( $data['custom_id'] ) ) {
$section['custom_id'] = sanitize_text_field( $data['custom_id'] );
}
if ( isset( $data['top_padding'] ) ) {
$section['top_padding'] = '' == $data['top_padding'] ? $data['top_padding'] : absint( $data['top_padding'] );
}
if ( isset( $data['bottom_padding'] ) ) {
$section['bottom_padding'] = '' == $data['bottom_padding'] ? $data['bottom_padding'] : absint( $data['bottom_padding'] );
}
if ( isset( $data['top_padding_unit'] ) ) {
$section['top_padding_unit'] = $data['top_padding_unit'] == '%' ? '%' : '';
}
if ( isset( $data['bottom_padding_unit'] ) ) {
$section['bottom_padding_unit'] = $data['bottom_padding_unit'] == '%' ? '%' : '';
}
if ( isset( $data['background_image'] ) ) {
$section['background_image'] = absint( $data['background_image'] );
}
if ( isset( $data['background_color'] ) ) {
$section['background_color'] = generate_sections_sanitize_rgba( $data['background_color'] );
}
if ( isset( $data['text_color'] ) ) {
$section['text_color'] = generate_sections_sanitize_hex_color( $data['text_color'] );
}
if ( isset( $data['link_color'] ) ) {
$section['link_color'] = generate_sections_sanitize_hex_color( $data['link_color'] );
}
if ( isset( $data['link_color_hover'] ) ) {
$section['link_color_hover'] = generate_sections_sanitize_hex_color( $data['link_color_hover'] );
}
if ( isset( $data['box_type'] ) ) {
$section['box_type'] = $data['box_type'] == 'contained' ? 'contained' : '';
}
if ( isset( $data['inner_box_type'] ) ) {
$section['inner_box_type'] = $data['inner_box_type'] == 'fluid' ? 'fluid' : '';
}
if ( isset( $data['parallax_effect'] ) ) {
$section['parallax_effect'] = $data['parallax_effect'] == 'enable' ? 'enable' : '';
}
if ( isset( $data['background_color_overlay'] ) ) {
$section['background_color_overlay'] = $data['background_color_overlay'] == 'enable' ? 'enable' : '';
}
return $section;
}
}
if ( ! function_exists( 'generate_sections_metabox_scripts' ) ) {
add_action( 'admin_enqueue_scripts', 'generate_sections_metabox_scripts', 20 );
/*
* Enqueue styles and scripts specific to metaboxs
*/
function generate_sections_metabox_scripts( $hook ) {
// I prefer to enqueue the styles only on pages that are using the metaboxes
if ( in_array( $hook, array( "post.php", "post-new.php" ) ) ) {
$post_types = apply_filters( 'generate_sections_post_types', array( 'page', 'post' ) );
$screen = get_current_screen();
$post_type = $screen->id;
if ( in_array( $post_type, (array) $post_types ) ) {
wp_enqueue_style( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'css/generate-sections-metabox.css', false, GENERATE_SECTIONS_VERSION );
wp_enqueue_style( 'generate-lc-switch', plugin_dir_url( __FILE__ ) . 'css/lc_switch.css', false, GENERATE_SECTIONS_VERSION );
//make sure we enqueue some scripts just in case ( only needed for repeating metaboxes )
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery-ui-core' );
wp_enqueue_script( 'jquery-ui-widget' );
wp_enqueue_script( 'jquery-ui-mouse' );
wp_enqueue_script( 'jquery-ui-sortable' );
wp_enqueue_script( 'editor' );
wp_enqueue_script( 'media-upload' );
wp_enqueue_script( 'wp-color-picker' );
wp_enqueue_style( 'wp-color-picker' );
wp_enqueue_script( 'wp-color-picker-alpha', GP_LIBRARY_DIRECTORY_URL . 'alpha-color-picker/wp-color-picker-alpha.min.js', array( 'wp-color-picker' ), '3.0.0', true );
wp_add_inline_script(
'wp-color-picker-alpha',
'jQuery( function() { jQuery( ".color-picker" ).wpColorPicker(); } );'
);
wp_enqueue_media();
if ( function_exists( 'wp_enqueue_editor' ) ) {
wp_enqueue_editor();
wp_add_inline_script(
'editor',
'window.wp.sectionsEditor = window.wp.editor;',
'after'
);
}
if ( version_compare( get_bloginfo( 'version' ), '5.0', '<' ) ) {
wp_enqueue_script( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'js/generate-sections-metabox-4.9.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-sortable', 'editor', 'media-upload', 'wp-color-picker' ), GENERATE_SECTIONS_VERSION, true );
} else {
wp_enqueue_script( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'js/generate-sections-metabox.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-sortable', 'editor', 'media-upload', 'wp-color-picker' ), GENERATE_SECTIONS_VERSION, true );
}
if ( function_exists( 'wp_add_inline_script' ) ) {
if ( function_exists( 'generate_get_default_color_palettes' ) ) {
// Grab our palette array and turn it into JS
$palettes = json_encode( generate_get_default_color_palettes() );
// Add our custom palettes
// json_encode takes care of escaping
wp_add_inline_script( 'wp-color-picker', 'jQuery.wp.wpColorPicker.prototype.options.palettes = ' . $palettes . ';' );
}
}
}
}
}
}
if ( ! function_exists( 'generate_sections_admin_footer_scripts' ) ) {
add_action( 'admin_footer', 'generate_sections_admin_footer_scripts' );
function generate_sections_admin_footer_scripts() {
// We don't need this if wp_add_inline_script exists
if ( function_exists( 'wp_add_inline_script' ) ) {
return;
}
?>
<script>
if ( typeof lc_switch !== 'undefined' ) {
jQuery(document).ready(function($) { $(".use-sections-switch").lc_switch("","");});
}
</script>
<?php
}
}
if ( ! function_exists( 'generate_sections_use_sections_metabox' ) ) {
function generate_sections_use_sections_metabox() {
include_once( plugin_dir_path( __FILE__ ) . 'views/use-sections.php' );
}
}
if ( ! function_exists( 'generate_sections_sections_metabox' ) ) {
function generate_sections_sections_metabox() {
global $post;
$meta = get_post_meta( $post->ID, '_generate_sections', true );
$sections = isset( $meta['sections'] ) && is_array( $meta['sections' ] ) ? $meta['sections'] : array();
$translation_array = array(
'confirm' => __( 'This action can not be undone, are you sure?', 'gp-premium' ),
'post_id' => $post->ID,
'sections' => $sections,
'default_title' => __( 'Section', 'gp-premium' ),
'default_content_title' => __( 'Content', 'gp-premium' ),
'tabs' => array(
array( 'title' => __( 'Settings', 'gp-premium' ), 'target' => 'style', 'active' => 'false' ),
array( 'title' => __( 'Content', 'gp-premium' ), 'target' => 'content', 'active' => 'true' ),
//array( 'title' => __( 'Layout', 'gp-premium' ), 'target' => 'layout', 'active' => 'false' ),
),
'top_padding' => apply_filters( 'generate_sections_default_padding_top','40' ),
'bottom_padding' => apply_filters( 'generate_sections_default_padding_bottom','40' ),
'media_library_title' => __('Section Background', 'gp-premium' ),
'media_library_button' => __( 'Set as Section Background', 'gp-premium' ),
'generate_nonce' => wp_create_nonce( 'generate_sections_nonce' ),
'default_editor' => user_can_richedit() && wp_default_editor() == 'tinymce' ? 'tmce-active' : 'html-active',
'user_can_richedit' => user_can_richedit(),
'insert_into_section' => __( 'Insert into Section', 'gp-premium' ),
'edit_section' => __( 'Edit Section', 'gp-premium' )
);
wp_localize_script( 'generate-sections-metabox', 'generate_sections_metabox_i18n', $translation_array );
include_once( plugin_dir_path( __FILE__ ) . 'views/sections.php' );
include_once( plugin_dir_path( __FILE__ ) . 'views/sections-template.php' );
add_action( 'print_media_templates', 'generate_sections_print_templates' );
do_action( 'generate_sections_metabox' );
}
}
if ( ! function_exists( 'generate_sections_save_use_metabox' ) ) {
add_action( 'save_post', 'generate_sections_save_use_metabox' );
/*
* Save the "use" metabox
*/
function generate_sections_save_use_metabox( $post_id ) {
if ( ! isset( $_POST['_generate_sections_use_sections_nonce'] ) || ! wp_verify_nonce( $_POST['_generate_sections_use_sections_nonce'], 'generate_sections_use_sections_nonce' ) ) {
return $post_id;
}
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
return $post_id;
}
if ( ! current_user_can('edit_post', $post_id ) ) {
return $post_id;
}
if ( isset ( $_POST['_generate_use_sections'] ) && isset ( $_POST['_generate_use_sections']['use_sections'] ) && $_POST['_generate_use_sections']['use_sections'] == 'true' ) {
update_post_meta( $post_id, '_generate_use_sections', array( 'use_sections' => 'true' ) );
} else {
delete_post_meta( $post_id, '_generate_use_sections' );
}
}
}
if ( ! function_exists( 'generate_sections_save_sections_metabox' ) ) {
add_action( 'save_post', 'generate_sections_save_sections_metabox', 20 );
/*
* Save the sections metabox
*/
function generate_sections_save_sections_metabox( $post_id ) {
if ( ! isset( $_POST['_generate_sections_nonce'] ) || ! wp_verify_nonce( $_POST['_generate_sections_nonce'], 'generate_sections_nonce' ) ) {
return $post_id;
}
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
return $post_id;
}
if ( ! current_user_can('edit_post', $post_id ) ) {
return $post_id;
}
$clean = array();
if ( isset ( $_POST['_generate_sections'] ) && isset( $_POST['_generate_sections']['sections'] ) && is_array( $_POST['_generate_sections']['sections'] ) ) {
foreach( $_POST['_generate_sections']['sections'] as $section ) {
$section = json_decode( stripslashes( trim($section) ), true);
$section = generate_sections_sanitize_function( $section, $post_id );
if ( ! empty( $section ) ){
$clean[] = $section;
}
}
}
// save data
if ( ! empty( $clean ) ) {
// this maintains data structure of previous version
$meta = array( 'sections' => $clean );
update_post_meta( $post_id, '_generate_sections', $meta );
} else {
delete_post_meta( $post_id, '_generate_sections' );
}
}
}
if ( ! function_exists( 'generate_sections_sanitize_hex_color' ) ) {
/*
* Sanitize colors
* We don't use the built in function so we can use empty values
*/
function generate_sections_sanitize_hex_color( $color ) {
if ( '' === $color ) {
return '';
}
// 3 or 6 hex digits, or the empty string.
if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) {
return $color;
}
return null;
}
}
if ( ! function_exists( 'generate_sections_sanitize_rgba' ) ) {
/**
* Sanitize RGBA colors
* @since 1.3.42
*/
function generate_sections_sanitize_rgba( $color ) {
if ( '' === $color ) {
return '';
}
// If string does not start with 'rgba', then treat as hex
// sanitize the hex color and finally convert hex to rgba
if ( false === strpos( $color, 'rgba' ) ) {
return generate_sections_sanitize_hex_color( $color );
}
// By now we know the string is formatted as an rgba color so we need to further sanitize it.
$color = str_replace( ' ', '', $color );
sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha );
return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')';
return '';
}
}

@ -1,279 +0,0 @@
<?php
// No direct access, please
if ( ! defined( 'ABSPATH' ) ) exit;
/**
* Prints the templates used in the sections metabox
*
* @global bool $is_IE
*/
function generate_sections_print_templates() {
global $is_IE;
$class = 'media-modal wp-core-ui';
if ( $is_IE && strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 7') !== false ){
$class .= ' ie7';
}
/**
* Backbone Templates
* This file contains all of the HTML used in our application
*
* Each template is wrapped in a script block ( note the type is set to "text/html" ) and given an ID prefixed with
* 'tmpl'. The wp.template method retrieves the contents of the script block and converts these blocks into compiled
* templates to be used and reused in your application.
*/
/**
* The Singular List View
*/
?>
<script type="text/template" id="tmpl-generate-sections-section">
<h3 class="section-title">
<span class="text generate-section-text" title="<?php _e( 'Click to edit', 'gp-premium' );?>">{{{ data.title }}}</span>
<div class="section-controls">
<a class="edit-section edit-content dashicons dashicons-edit" href="#" title="<?php _e( 'Click to edit content', 'gp-premium' );?>"></a>
<a class="edit-section edit-settings dashicons dashicons-admin-generic" href="#" title="<?php _e( 'Click to edit settings', 'gp-premium' );?>"></a>
<a class="move-section dashicons dashicons-move" href="#" title="<?php _e( 'Click and drag to sort', 'gp-premium' );?>"></a>
<a class="delete-section dashicons dashicons-no" href="#" title="<?php esc_attr_e( 'Click to remove', 'gp-premium' );?>"></a>
</div>
</h3>
<textarea name="_generate_sections[sections][{{{ data.index }}}]" readonly="readonly"></textarea>
</script>
<?php
/**
* The Add/Clear buttons
*/
?>
<script type="text/template" id="tmpl-generate-sections-buttons">
<a href="#" id="generate-add-section" class="button-primary button-large"><?php _e( 'Add Section', 'gp-premium' );?></a>
<a href="#" style="display:none;" id="generate-delete-sections" class="button button-large"><?php _e( 'Remove Sections', 'gp-premium');?></a>
<?php wp_nonce_field( 'generate_sections_nonce', '_generate_sections_nonce' ); ?>
</script>
<?php
/**
* The Modal Window, including sidebar and content area.
* Add menu items to ".media-frame-menu"
* Add content to ".media-frame-content"
*/
?>
<script type="text/html" id="tmpl-generate-sections-modal-window">
<div class="<?php echo esc_attr( $class ); ?>">
<button type="button" class="button-link media-modal-close" aria-label="close"><span class="media-modal-icon"><span class="screen-reader-text"><?php _e( 'Close', 'gp-premium' ); ?></span></span></button>
<div class="media-modal-content">
<div class="media-frame mode-select wp-core-ui hide-router">
<div class="media-frame-menu"><div class="media-menu"></div></div>
<div class="media-frame-title">
<h1><?php _e( 'Edit Section', 'gp-premium' ); ?><span class="dashicons dashicons-arrow-down"></span></h1>
</div>
<div class="media-frame-content"></div>
<div class="media-frame-toolbar">
<div class="media-toolbar">
<div class="media-toolbar-primary">
<button type="button" class="button media-button button-primary button-large media-button-insert"><?php _e( 'Apply', 'gp-premium' ); ?></button>
<button type="button" class="button button media-button button button-large media-button-close"><?php _e( 'Cancel', 'gp-premium' ); ?></button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="media-modal-backdrop"></div>
</script>
<?php
/**
* Base template for a navigation-bar menu item
*/
?>
<script type="text/html" id='tmpl-generate-sections-modal-menu-item'>
<a class="media-menu-item generate-section-item-{{ data.target }}" data-target="{{ data.target }}">{{ data.name }}</a>
</script>
<?php
/**
* the Edit Sections
*/
?>
<script type="text/html" id="tmpl-generate-sections-edit-content">
<div data-id="content" class="panel generate-section-content">
<div class="gs-grid-100 section-title">
<label for="title"><?php _e( 'Section Label', 'gp-premium' );?></label>
<p>
<input type="text" name="title" placeholder="{{{ generate_sections_metabox_i18n.default_title }}}" id="title" value="{{{ data.title }}}"/>
</p>
</div>
<?php if ( version_compare( get_bloginfo( 'version' ), '5.0', '<' ) ) : ?>
<div class="gs-grid-100 wp-core-ui wp-editor-wrap">
<div class="postarea wp-editor-expand">
<div id="wp-generate-sections-editor-wrap" class="wp-core-ui wp-editor-wrap old-sections-js">
<div id="wp-generate-sections-editor-editor-tools" class="wp-editor-tools hide-if-no-js">
<div class="wp-media-buttons">
<button type="button" class="button insert-media add_media generate-sections-add-media" data-editor="generate-sections-editor"><span class="wp-media-buttons-icon"></span><?php _e( 'Add Media', 'gp-premium' );?></button>
<?php do_action( 'media_buttons' ); ?>
</div>
<div class="wp-editor-tabs">
<button type="button" id="content-tmce" class="wp-switch-editor switch-tmce" data-wp-editor-id="generate-sections-editor"><?php _e( 'Visual', 'gp-premium' ); ?></button>
<button type="button" id="content-html" class="wp-switch-editor switch-html" data-wp-editor-id="generate-sections-editor"><?php _ex( 'Text', 'Name for the Text editor tab (formerly HTML)', 'gp-premium' ); ?></button>
</div>
</div><!-- .wp-editor-tools -->
<div class="wp-editor-container">
<textarea id="generate-sections-editor" class="wp-editor-area" autocomplete="off" cols="40" name="content">{{{ data.content }}}</textarea>
</div>
</div>
</div>
</div>
<?php else : ?>
<div class="gs-grid-100 generate-sections-editor-wrap">
<div id="custom-media-buttons">
<?php do_action( 'media_buttons' ); ?>
</div>
<textarea id="generate-sections-editor" class="wp-editor-area" autocomplete="off" cols="40" name="content">{{{ data.content }}}</textarea>
</div>
<?php endif; ?>
</div>
</script>
<script type="text/html" id="tmpl-generate-sections-edit-layout">
<div data-id="layout" class="panel">
</div>
</script>
<script type="text/html" id="tmpl-generate-sections-edit-style">
<div data-id="style" class="panel generate-section-settings">
<div class="gs-grid-container gs-grid-parent">
<div class="gs-grid-33">
<h3><?php _e( 'Layout', 'gp-premium' ); ?></h3>
<label for="box_type"><?php _e('Box Type', 'gp-premium');?></label>
<p>
<select name="box_type" id="box_type">
<option value=""><?php _e( 'Full Width', 'gp-premium' );?></option>
<option value="contained"><?php _ex( 'Contained', 'Width', 'gp-premium' );?></option>
</select>
</p>
<label for="inner_box_type"><?php _e('Inner Box Type', 'gp-premium');?></label>
<p>
<select name="inner_box_type" id="inner_box_type">
<option value=""><?php _ex( 'Contained', 'Width', 'gp-premium' );?></option>
<option value="fluid"><?php _e( 'Full Width', 'gp-premium' );?></option>
</select>
</p>
<label for="custom_id"><?php _e( 'Custom ID', 'gp-premium' );?></label>
<p>
<input type="text" name="custom_id" id="custom_id" value="{{{ data.custom_id }}}"/>
</p>
<label for="custom_classes"><?php _e( 'Custom Classes', 'gp-premium' );?></label>
<p>
<input type="text" name="custom_classes" id="custom_classes" value="{{{ data.custom_classes }}}"/>
</p>
<label for="top_padding"><?php _e( 'Top Padding', 'gp-premium' );?></label>
<p>
<input placeholder="{{{ generate_sections_metabox_i18n.top_padding }}}" type="number" name="top_padding" id="top_padding" value="{{{ data.top_padding }}}"/><select style="margin:0;position:relative;top:-2px;" name="top_padding_unit" id="top_padding_unit">
<option value="">px</option>
<option value="%">%</option>
</select>
</p>
<label for="bottom_padding"><?php _e( 'Bottom Padding', 'gp-premium' );?></label>
<p>
<input placeholder="{{{ generate_sections_metabox_i18n.bottom_padding }}}" type="number" name="bottom_padding" id="bottom_padding" value="{{{ data.bottom_padding }}}"/><select style="margin:0;position:relative;top:-2px;" name="bottom_padding_unit" id="bottom_padding_unit">
<option value="">px</option>
<option value="%">%</option>
</select>
</p>
</div>
<div class="gs-grid-33">
<h3><?php _e( 'Colors', 'gp-premium' ); ?></h3>
<label for="background_color"><?php _e( 'Background Color', 'gp-premium' );?></label>
<p>
<input class="generate-sections-color" type="text" class="color-picker" data-alpha-enabled="true" data-alpha-color-type="hex" name="background_color" id="background_color" value="{{{ data.background_color }}}"/>
</p>
<label for="text_color"><?php _e( 'Text Color', 'gp-premium' );?></label>
<p>
<input class="generate-sections-color" type="text" name="text_color" id="text_color" value="{{{ data.text_color }}}"/>
</p>
<label for="link_color"><?php _e( 'Link Color', 'gp-premium' );?></label>
<p>
<input class="generate-sections-color" type="text" name="link_color" id="link_color" value="{{{ data.link_color }}}"/>
</p>
<label for="link_color_hover"><?php _e('Link Color Hover', 'gp-premium');?></label>
<p>
<input class="generate-sections-color" type="text" name="link_color_hover" id="link_color_hover" value="{{{ data.link_color_hover }}}"/>
</p>
</div>
<div class="gs-grid-33">
<h3><?php _e( 'Background', 'gp-premium' ); ?></h3>
<label for="generate-sections-background-image"><?php _e( 'Background Image', 'gp-premium' );?></label>
<p id="generate-section-image-preview"></p>
<p>
<input class="image_id" type="hidden" id="generate-sections-background-image" name="background_image" value="{{{ data.background_image }}}" />
<button id="image_button" class="generate-sections-upload-button button" type="button" data-uploader_title="<?php _e( 'Background Image', 'gp-premium' );?>"><?php _e('Upload', 'gp-premium') ;?></button>
<button id="remove_image" class="generate-sections-remove-image button" type="button"><?php _e( 'Remove', 'gp-premium' );?></button>
</p>
<label for="parallax_effect"><?php _e('Parallax Effect', 'gp-premium');?></label>
<p>
<select name="parallax_effect" id="parallax_effect">
<option value=""><?php _e( 'Disable', 'gp-premium' );?></option>
<option value="enable"><?php _e( 'Enable', 'gp-premium' );?></option>
</select>
</p>
<label for="background_color_overlay"><?php _e( 'Background Color Overlay', 'gp-premium' );?></label>
<p>
<select name="background_color_overlay" id="background_color_overlay">
<option value=""><?php _e( 'Disable', 'gp-premium' );?></option>
<option value="enable"><?php _e( 'Enable', 'gp-premium' );?></option>
</select>
</p>
</div>
</div>
</div>
</script>
<?php
}

@ -1,13 +0,0 @@
<?php
// No direct access, please
if ( ! defined( 'ABSPATH' ) ) exit;
?>
<div class="generate_sections_control">
<noscript>
<?php _e('Javascript must be enabled to use Generate Sections', 'gp-premium' );?>
</noscript>
<div id="generate_sections_container"></div>
</div>

@ -1,17 +0,0 @@
<?php
// No direct access, please
if ( ! defined( 'ABSPATH' ) ) exit;
?>
<div class="generate_sections_control">
<?php
global $post;
$use_sections = get_post_meta( $post->ID, '_generate_use_sections', true );
//$use_sections = isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ? true : false;
wp_nonce_field( 'generate_sections_use_sections_nonce', '_generate_sections_use_sections_nonce' );
?>
<label for="_generate_use_sections[use_sections]">
<input type="checkbox" class="use-sections-switch" name="_generate_use_sections[use_sections]" id="_generate_use_sections[use_sections]" value="true" <?php if ( isset ( $use_sections['use_sections'] ) ) checked( $use_sections['use_sections'], 'true', true );?> />
<?php _e( 'Use Sections', 'gp-premium' ); ?>
</label>
</div>