Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(TagManager): naming conventions #9

Merged
merged 5 commits into from
Mar 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<PackageVersion Include="kentico.xperience.imageprocessing" Version="28.3.1" />
<PackageVersion Include="Kentico.Xperience.TagManager" Version="" Condition="'$(LOCAL_NUGET)' == 'true'" />
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0-preview.1.24080.9" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageVersion Include="SonarAnalyzer.CSharp" Version="9.21.0.86780" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageVersion Include="NUnit" Version="4.1.0" />
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ By default we provide support for the following third-party snippets:

| Xperience Version | Library Version |
| ----------------- | --------------- |
| >= 28.1.0 | >= 2.0.0 |
| >= 28.3.1 | >= 1.0.0 |

### Dependencies
Expand Down
14 changes: 7 additions & 7 deletions examples/DancingGoat/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -585,8 +585,8 @@
},
"Microsoft.Extensions.DependencyInjection.Abstractions": {
"type": "Transitive",
"resolved": "9.0.0-preview.1.24080.9",
"contentHash": "hdqPvxgStlyS89paua7lDTP0Z05SS/Fta7d9fFGAYXKtsw1R1CtbJebEMuHOqSxxvL4qO7rS0b1m00QGj+cI5A=="
"resolved": "8.0.0",
"contentHash": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg=="
},
"Microsoft.Extensions.FileProviders.Abstractions": {
"type": "Transitive",
Expand Down Expand Up @@ -1008,7 +1008,7 @@
"Kentico.Xperience.Admin": "[28.3.1, )",
"Kentico.Xperience.WebApp": "[28.3.1, )",
"Microsoft.Extensions.Configuration.UserSecrets": "[6.0.1, )",
"Microsoft.Extensions.DependencyInjection": "[9.0.0-preview.1.24080.9, )"
"Microsoft.Extensions.DependencyInjection": "[8.0.0, )"
}
},
"Microsoft.Extensions.Configuration.UserSecrets": {
Expand All @@ -1025,11 +1025,11 @@
},
"Microsoft.Extensions.DependencyInjection": {
"type": "CentralTransitive",
"requested": "[9.0.0-preview.1.24080.9, )",
"resolved": "9.0.0-preview.1.24080.9",
"contentHash": "kHFV9pu0wgXrb3/Me1EbZkvK8/0ROosTlfMcsrs1oCkgSJTFunUiHlUWROxofMKtz5ug3knxLiywtiNtMlruHg==",
"requested": "[8.0.0, )",
"resolved": "8.0.0",
"contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0-preview.1.24080.9"
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export const TagManagerSnippetTypeDropdownFormComponent = (
<div>
<label className="label___WET63" aria-disabled="false">
<span className="required___yY_P2">*</span>
<span>Snippet type</span>
<span>Tag type</span>
</label>
</div>
</div>
Expand All @@ -132,7 +132,7 @@ export const TagManagerSnippetTypeDropdownFormComponent = (
components={{ SingleValue: CustomSingleValue, Option: CustomOption }}
isSearchable={false}
onChange={Save}
placeholder="Select a snippet type"
placeholder="Select a tag type"
theme={(theme) => ({
...theme,
borderRadius: 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,27 +11,27 @@ namespace Kentico.Xperience.TagManager.Admin;
internal class CodeSnippetConfigurationModel
{
[RequiredValidationRule]
[TextInputComponent(Label = "Code name", Order = 0)]
public string CodeName { get; set; } = "";
[TextInputComponent(Label = "Name", Order = 0)]
public string Name { get; set; } = "";

[RequiredValidationRule]
[ObjectIdSelectorComponent(objectType: ChannelInfo.OBJECT_TYPE, Label = "Channel", Order = 1, WhereConditionProviderType = typeof(ChannelSelectorWhereConditionProvider))]
public IEnumerable<int> ChannelIDs { get; set; } = [];

[RequiredValidationRule]
[TagManagerSnippetTypeDropdownComponent(Label = "Code snippet type", Order = 3)]
public string? SnippetType { get; set; }
[TagManagerSnippetTypeDropdownComponent(Label = "Tag type", Order = 3)]
public string? TagType { get; set; }

[CodeEditorComponent(Label = "Code", Order = 4)]
[VisibleIfEqualTo(nameof(SnippetType), CustomSnippetFactory.TAG_TYPE_NAME)]
[CodeEditorComponent(Label = "Code", Order = 4, ExplanationTextAsHtml = true)]
[VisibleIfEqualTo(nameof(TagType), CustomSnippetFactory.TAG_TYPE_NAME)]
public string? Code { get; set; }

[RadioGroupComponent(Label = "Code snippet location", Order = 5, Options = CodeSnippetLocationsExtensions.FormComponentOptions)]
[VisibleIfEqualTo(nameof(SnippetType), CustomSnippetFactory.TAG_TYPE_NAME)]
[RadioGroupComponent(Label = "Tag location", Order = 5, Options = CodeSnippetLocationsExtensions.FormComponentOptions)]
[VisibleIfEqualTo(nameof(TagType), CustomSnippetFactory.TAG_TYPE_NAME)]
public string? Location { get; set; }

[TextInputComponent(Label = "Tag ID", Order = 4)]
[VisibleIfNotEqualTo(nameof(SnippetType), CustomSnippetFactory.TAG_TYPE_NAME)]
[VisibleIfNotEqualTo(nameof(TagType), CustomSnippetFactory.TAG_TYPE_NAME)]
public string? TagIdentifier { get; set; }

[ObjectIdSelectorComponent(objectType: ConsentInfo.OBJECT_TYPE, Label = "Consent", Order = 6, Placeholder = "No consent needed")]
Expand All @@ -42,8 +42,8 @@ public void MapToChannelCodeSnippetInfo(ChannelCodeSnippetItemInfo info)
info.ChannelCodeSnippetItemChannelId = ChannelIDs.FirstOrDefault();
info.ChannelCodeSnippetItemConsentId = ConsentIDs.FirstOrDefault();
info.ChannelCodeSnippetItemLocation = Location;
info.ChannelCodeSnippetItemType = SnippetType;
info.ChannelCodeSnippetItemName = CodeName;
info.ChannelCodeSnippetItemType = TagType;
info.ChannelCodeSnippetItemName = Name;
info.ChannelCodeSnippetItemIdentifier = TagIdentifier;
info.ChannelCodeSnippetItemCode = Code;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public partial class ChannelCodeSnippetItemInfo : AbstractInfo<ChannelCodeSnippe
/// <summary>
/// Type information.
/// </summary>
public static readonly ObjectTypeInfo TYPEINFO = new ObjectTypeInfo(typeof(ChannelCodeSnippetItemInfoProvider), OBJECT_TYPE, "KenticoTagManager.ChannelCodeSnippetItem", nameof(ChannelCodeSnippetItemID), nameof(ChannelCodeSnippetItemLastModified), nameof(ChannelCodeSnippetItemGuid), nameof(ChannelCodeSnippetItemName), null, null, null, null)
public static readonly ObjectTypeInfo TYPEINFO = new ObjectTypeInfo(typeof(ChannelCodeSnippetItemInfoProvider), OBJECT_TYPE, "KenticoTagManager.ChannelCodeSnippetItem", nameof(ChannelCodeSnippetItemID), nameof(ChannelCodeSnippetItemLastModified), nameof(ChannelCodeSnippetItemGuid), null, nameof(ChannelCodeSnippetItemName), null, null, null)
{
TouchCacheDependencies = true,
ContinuousIntegrationSettings =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
parentType: typeof(CodeSnippetListingPage),
slug: "add",
uiPageType: typeof(CodeSnippetCreatePage),
name: "Create a code snippet",
name: "Create a tag",
templateName: TemplateNames.EDIT,
order: UIPageOrder.First)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
parentType: typeof(ChannelCodeSnippetSectionPage),
slug: "edit",
uiPageType: typeof(CodeSnippetEditPage),
name: "Edit code snippet",
name: "Edit tag",
templateName: TemplateNames.EDIT,
order: UIPageOrder.First)]

Expand Down Expand Up @@ -37,9 +37,9 @@ protected override CodeSnippetConfigurationModel Model
model = new CodeSnippetConfigurationModel()
{
ChannelIDs = [info.ChannelCodeSnippetItemChannelId],
CodeName = info.ChannelCodeSnippetItemName,
Name = info.ChannelCodeSnippetItemName,
Code = info.ChannelCodeSnippetItemCode,
SnippetType = info.ChannelCodeSnippetItemType,
TagType = info.ChannelCodeSnippetItemType,
ConsentIDs = info.ChannelCodeSnippetItemConsentId == 0 ? [] : [info.ChannelCodeSnippetItemConsentId],
TagIdentifier = info.ChannelCodeSnippetItemIdentifier,
Location = info.ChannelCodeSnippetItemLocation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@

[assembly: UIPage(
parentType: typeof(TagManagerApplicationPage),
slug: "snippets",
slug: "tags",
uiPageType: typeof(CodeSnippetListingPage),
name: "Code snippets",
name: "Tags",
templateName: TemplateNames.LISTING,
order: UIPageOrder.First)]

Expand Down Expand Up @@ -60,7 +60,7 @@
.AddColumn(
nameof(ChannelCodeSnippetItemInfo.ChannelCodeSnippetItemID),
"ID",
maxWidth: 10)
maxWidth: 4)
.AddColumn(
nameof(ChannelCodeSnippetItemInfo.ChannelCodeSnippetItemName),
"Code Name",
Expand All @@ -76,13 +76,6 @@
"Type",
formatter: (_, container) => FormatSnippetType(container),
sortable: true)
.AddColumn(nameof(ChannelCodeSnippetItemInfo.ChannelCodeSnippetItemCode),
"Code Snippet",
sortable: false,
formatter: (_, container) => FormatCodeSnippet(container))
.AddColumn(nameof(ChannelCodeSnippetItemInfo.ChannelCodeSnippetItemIdentifier),
"Identifier",
formatter: (_, container) => FormatIdentifier(container))
.AddColumn(
nameof(ChannelCodeSnippetItemInfo.ChannelCodeSnippetItemConsentId),
"Consent",
Expand Down Expand Up @@ -116,7 +109,7 @@
/// <param name="container"></param>
/// <returns></returns>
/// <exception cref="ArgumentOutOfRangeException"></exception>
private static string FormatCodeSnippet(IDataContainer container)

Check warning on line 112 in src/Kentico.Xperience.TagManager/Admin/UIPages/CodeSnippetListingPage.cs

View workflow job for this annotation

GitHub Actions / Build and Test

Remove the unused private method 'FormatCodeSnippet'. (https://rules.sonarsource.com/csharp/RSPEC-1144)

Check warning on line 112 in src/Kentico.Xperience.TagManager/Admin/UIPages/CodeSnippetListingPage.cs

View workflow job for this annotation

GitHub Actions / Build and Test

Remove the unused private method 'FormatCodeSnippet'. (https://rules.sonarsource.com/csharp/RSPEC-1144)
{
string codeSnippetType = (string)container[nameof(ChannelCodeSnippetItemInfo.ChannelCodeSnippetItemType)];

Expand All @@ -124,7 +117,7 @@
{
throw new ArgumentNullException(
nameof(container),
"Invalid ChannelCodeSnippetType!");
"Invalid ChannelCodeTagType!");
}

if (codeSnippetType == CustomSnippetFactory.TAG_TYPE_NAME)
Expand All @@ -135,7 +128,7 @@
return string.Empty;
}

private static string FormatIdentifier(IDataContainer container)

Check warning on line 131 in src/Kentico.Xperience.TagManager/Admin/UIPages/CodeSnippetListingPage.cs

View workflow job for this annotation

GitHub Actions / Build and Test

Remove the unused private method 'FormatIdentifier'. (https://rules.sonarsource.com/csharp/RSPEC-1144)

Check warning on line 131 in src/Kentico.Xperience.TagManager/Admin/UIPages/CodeSnippetListingPage.cs

View workflow job for this annotation

GitHub Actions / Build and Test

Remove the unused private method 'FormatIdentifier'. (https://rules.sonarsource.com/csharp/RSPEC-1144)
{
string codeSnippetType = (string)container[nameof(ChannelCodeSnippetItemInfo.ChannelCodeSnippetItemType)];

Expand All @@ -143,7 +136,7 @@
{
throw new ArgumentNullException(
nameof(container),
"Invalid ChannelCodeSnippetType!");
"Invalid ChannelCodeTagType!");
}

if (codeSnippetType != CustomSnippetFactory.TAG_TYPE_NAME)
Expand All @@ -166,6 +159,6 @@
}

return SnippetFactoryStore.TryGetSnippetFactory(codeSnippetType)?.CreateCodeSnippetSettings().TagDisplayName ??
throw new InvalidOperationException("Specified snippet is not registered.");
throw new InvalidOperationException("Specified tag is not registered.");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ async Task<ILookup<CodeSnippetLocations, CodeSnippetDto>> GetCodeSnippetsInterna
private static IEnumerable<CodeSnippetDto> CreateCodeSnippet(ChannelCodeSnippetItemInfo snippetInfo)
{
var snippetFactory = SnippetFactoryStore.TryGetSnippetFactory(snippetInfo.ChannelCodeSnippetItemType) ??
throw new InvalidOperationException("Specified snippet is not registered.");
throw new InvalidOperationException("Specified tag is not registered.");

var snippetSettings = snippetFactory.CreateCodeSnippetSettings();

Expand All @@ -114,7 +114,7 @@ private static IEnumerable<CodeSnippetDto> CreateCodeSnippet(ChannelCodeSnippetI
Code = snippetInfo.ChannelCodeSnippetItemCode,
Location = Enum.TryParse(snippetInfo.ChannelCodeSnippetItemLocation, out CodeSnippetLocations location)
? location
: throw new InvalidOperationException("Invalid Channel Code Snippet Location."),
: throw new InvalidOperationException("Invalid Channel Tag Location."),
});

tags.Add(tag);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ internal class CustomSnippetFactory : AbstractSnippetFactory
{
private const string TAG_APPSETTINGS_NAME = "Kentico.Custom";
public const string TAG_TYPE_NAME = "CustomTag";
private const string TAG_DISPLAY_NAME = "Custom Snippet";
private const string TAG_DISPLAY_NAME = "Custom HTML Snippet";
private const string TAG_SVG_ICON = "<?xml version=\"1.0\" encoding=\"utf-8\"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->\r\n<svg width=\"40\" height=\"30\" viewBox=\"0 0 24 24\" id=\"code_snippet\" data-name=\"code snippet\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect id=\"Rectangle\" width=\"24\" height=\"24\" fill=\"none\"/>\r\n <path id=\"Rectangle-2\" data-name=\"Rectangle\" d=\"M0,6.586V0H6.586\" transform=\"translate(2.343 12) rotate(-45)\" fill=\"none\" stroke=\"#000000\" stroke-miterlimit=\"10\" stroke-width=\"1.5\"/>\r\n <path id=\"Line\" d=\"M4.659,0,0,17.387\" transform=\"translate(9.671 3.307)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-miterlimit=\"10\" stroke-width=\"1.5\"/>\r\n <path id=\"Rectangle-3\" data-name=\"Rectangle\" d=\"M0,6.586V0H6.586\" transform=\"translate(21.657 12) rotate(135)\" fill=\"none\" stroke=\"#000000\" stroke-miterlimit=\"10\" stroke-width=\"1.5\"/>\r\n</svg>";
public override CodeSnippetSettings CreateCodeSnippetSettings() =>
new(TAG_TYPE_NAME, TAG_DISPLAY_NAME, TAG_APPSETTINGS_NAME, TAG_SVG_ICON);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ private static string GenerateScript(string identifier) =>
app_id: "{{identifier}}"
};
(function() {
var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/YOUR_APP_ID';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}{{'}'}}
var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',w.intercomSettings);}else{var d=document;var i=function(){i.c(arguments);};i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;var l=function(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/{{identifier}}';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}{{'}'}}
})();
</script>
""";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ private static string GenerateScript(string identifier) =>
hide_element='body',
hide_element_style = 'opacity:0 !important;filter:alpha(opacity=0) !important;background:none !important',
/* DO NOT EDIT BELOW THIS LINE */
f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{{{'}'}}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(){if(!f){f=true;var e=d.getElementById('_vis_opt_path_hides');if(e)e.parentNode.removeChild(e)}{{'}'}},finished:function(){return f},load:function(e){var t=this.getSettings(),n=d.createElement('script'),i=this;if(t){n.textContent=t;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);i.load(e){{'}'}}}else{n.fetchPriority='high';n.src=e;n.type='text/javascript';n.onerror=function(){_vwo_code.finish()};d.getElementsByTagName('head')[0].appendChild(n){{'}'}}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return{{'}'}}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t=d.currentScript,n=d.createElement('style'),i=this.hide_element(),r=t&&!t.async&&i?i+this.hide_element_style():'',c=d.getElementsByTagName('head')[0];n.setAttribute('id','_vis_opt_path_hides');v&&n.setAttribute('nonce',v.nonce);n.setAttribute('type','text/css');if(n.styleSheet)n.styleSheet.cssText=r;else n.appendChild(d.createTextNode(r));c.appendChild(n);this.load('
https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version){{'}'}}};w._vwo_code=code;code.init();})();
f=false,w=window,d=document,v=d.querySelector('#vwoCode'),cK='_vwo_'+account_id+'_settings',cc={};try{var c=JSON.parse(localStorage.getItem('_vwo_'+account_id+'_config'));cc=c&&typeof c==='object'?c:{{{'}'}}}catch(e){}var stT=cc.stT==='session'?w.sessionStorage:w.localStorage;code={use_existing_jquery:function(){return typeof use_existing_jquery!=='undefined'?use_existing_jquery:undefined},library_tolerance:function(){return typeof library_tolerance!=='undefined'?library_tolerance:undefined},settings_tolerance:function(){return cc.sT||settings_tolerance},hide_element_style:function(){return'{'+(cc.hES||hide_element_style)+'}'},hide_element:function(){return typeof cc.hE==='string'?cc.hE:hide_element},getVersion:function(){return version},finish:function(){if(!f){f=true;var e=d.getElementById('_vis_opt_path_hides');if(e)e.parentNode.removeChild(e)}{{'}'}},finished:function(){return f},load:function(e){var t=this.getSettings(),n=d.createElement('script'),i=this;if(t){n.textContent=t;d.getElementsByTagName('head')[0].appendChild(n);if(!w.VWO||VWO.caE){stT.removeItem(cK);i.load(e){{'}'}}}else{n.fetchPriority='high';n.src=e;n.type='text/javascript';n.onerror=function(){_vwo_code.finish()};d.getElementsByTagName('head')[0].appendChild(n){{'}'}}},getSettings:function(){try{var e=stT.getItem(cK);if(!e){return}e=JSON.parse(e);if(Date.now()>e.e){stT.removeItem(cK);return}return e.s}catch(e){return{{'}'}}},init:function(){if(d.URL.indexOf('__vwo_disable__')>-1)return;var e=this.settings_tolerance();w._vwo_settings_timer=setTimeout(function(){_vwo_code.finish();stT.removeItem(cK)},e);var t=d.currentScript,n=d.createElement('style'),i=this.hide_element(),r=t&&!t.async&&i?i+this.hide_element_style():'',c=d.getElementsByTagName('head')[0];n.setAttribute('id','_vis_opt_path_hides');v&&n.setAttribute('nonce',v.nonce);n.setAttribute('type','text/css');if(n.styleSheet)n.styleSheet.cssText=r;else n.appendChild(d.createTextNode(r));c.appendChild(n);this.load('https://dev.visualwebsiteoptimizer.com/j.php?a='+account_id+'&u='+encodeURIComponent(d.URL)+'&vn='+version){{'}'}}};w._vwo_code=code;code.init();})();
</script>
<!-- End VWO Async SmartCode -->
""";
Expand Down
Loading
Loading