How can use CustomerData to store custom value in magento 2?Magento 2.1 : How can I use a uiComponent in my custom modules' modal (adminhtml)Magento2 integration with odooMagento 2: Use custom connection for setup scriptHow to Use RabbitMq in Magento2 CEHow to set default value in config.xml file for tables in Magento2 backend system configurationURL key for specified store already exists Magento 2Custom index not working after product save in magento 2How to use require_once in magento 2Theme Preview Image does not appear on view theme adminMagento 2 Block Does not show
How did Einstein know the speed of light was constant?
How serious is plagiarism in a master’s thesis?
How do amateur satellites stay consistently in the amateur-sat bands acoss the globe?
I'm feeling like my character doesn't fit the campaign
How to deal with a Murder Hobo Paladin?
How important is it for multiple POVs to run chronologically?
comparing two addresses
Park the computer
Can the Four Elements monk's Shape the Flowing River elemental discipline create stairs by expending a single ki point?
How to reclaim personal item I've lent to the office without burning bridges?
Taking advantage when HR forgets to communicate the rules
Alternative to Willpower in Fighting Cravings
Any way to meet code with 40.7% or 40.44% conduit fill?
Will Jimmy fall off his platform?
Better random (unique) file name
How to get the speed of my spaceship?
How complicated can a finite double complex over a field be?
Why do we need a bootloader separate from our application program in microcontrollers?
Tiny URL creator
When moving a unique_ptr into a lambda, why is it not possible to call reset?
White's last move?
Why isn't 10.0.0.0/8 used instead of 192.168.0.0/16 for private addresses?
Why is there paternal, for fatherly, fraternal, for brotherly, but no similar word for sons?
How do I check that users don't write down their passwords?
How can use CustomerData to store custom value in magento 2?
Magento 2.1 : How can I use a uiComponent in my custom modules' modal (adminhtml)Magento2 integration with odooMagento 2: Use custom connection for setup scriptHow to Use RabbitMq in Magento2 CEHow to set default value in config.xml file for tables in Magento2 backend system configurationURL key for specified store already exists Magento 2Custom index not working after product save in magento 2How to use require_once in magento 2Theme Preview Image does not appear on view theme adminMagento 2 Block Does not show
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
i want use CustomerData to store image & content on browser storage in magento 2.
I try to follow tutorial but not get success yet
https://aionhill.com/magento-2-module-development-guide-part-4-knockout-js
magento2
add a comment |
i want use CustomerData to store image & content on browser storage in magento 2.
I try to follow tutorial but not get success yet
https://aionhill.com/magento-2-module-development-guide-part-4-knockout-js
magento2
add a comment |
i want use CustomerData to store image & content on browser storage in magento 2.
I try to follow tutorial but not get success yet
https://aionhill.com/magento-2-module-development-guide-part-4-knockout-js
magento2
i want use CustomerData to store image & content on browser storage in magento 2.
I try to follow tutorial but not get success yet
https://aionhill.com/magento-2-module-development-guide-part-4-knockout-js
magento2
magento2
asked Jun 27 at 13:33
matinictmatinict
7951 gold badge12 silver badges30 bronze badges
7951 gold badge12 silver badges30 bronze badges
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Have you been able to store anything?
https://digita.lism.ro/2017/09/magento-2-using-customerdata-populate-block-asynchronously/
app/code/Vendor/Module/CustomerData/Example.php
namespace VendorModuleCustomerData;
use MagentoCustomerCustomerDataSectionSourceInterface;
/**
* Example data source
*/
class Example extends MagentoFrameworkDataObject implements SectionSourceInterface
public function getSectionData()
return [
'active' => 'This is active'
];
The return array is simply an example, you can return any information you need to pass to the block.
You will then need to declare it in your module’s
app/code/Vendor/Module/etc/frontend/di.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="MagentoCustomerCustomerDataSectionPoolInterface">
<arguments>
<argument name="sectionSourceMap" xsi:type="array">
<item name="example" xsi:type="string">VendorModuleCustomerDataExample</item>
</argument>
</arguments>
</type>
</config>
In order to control when this information will be requested and updated (Magento makes multiple ajax request per page and can update your CustomerData multiple times if necessary) we need to add some information to our module’s
app/code/Vendor/Module/etc/frontend/sections.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd">
<action name="example/action/*">
<section name="example"/>
</action>
</config>
Corresponding with the routes your customer data depends on, you can add the actions to request your example section to be updated.
Now that we have the customer data set up, we will need to call it in a block using a javascript component.
Add your block to the layout where you need it, let’s say we want to add it to the header panel (add your block to the app/code/Vendor/Module/view/frontend/layout/default.xml file in your module)
<?xml version="1.0"?>
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="header.panel">
<block class="MagentoFrameworkViewElementTemplate" template="Vendor_Module::example.phtml"/>
</referenceContainer>
</body>
</page>
Now in your module create
app/code/Vendor/Module/view/frontend/templates/example.phtml
<div id="example-header">
<span data-bind="text: example().active"></span>
</div>
<script type="text/x-magento-init">
"*":
"Magento_Ui/js/core/app":
"components":
"example":
"component": "Vendor_Example/js/example"
</script>
This adds the js component example (which we will create right now) to your block and will bind the span’s value with the one we will pass to it.
Create app/code/Vendor/Module/view/frontend/web/js/example.js
define([
'uiComponent',
'Magento_Customer/js/customer-data'
], function (Component, customerData)
'use strict';
return Component.extend(
initialize: function ()
this.example = customerData.get('example');
this._super();
,
);
);
Your block should now be dynamically updated with the value from the customerData object , by using the example customerData response you have defined
How can I check Browser
– matinict
Jun 28 at 8:35
console.log(this.example) or it will appear in phtml. Look at example-header
– Dominic Xigen
Jun 28 at 10:29
ReferenceError: example is not defined
– matinict
Jun 28 at 11:13
knockout.js:3391 Uncaught ReferenceError: Unable to process binding "text: function()return example().active " Message: example is not defined (Chrome)
– matinict
Jun 28 at 11:19
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "479"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f279936%2fhow-can-use-customerdata-to-store-custom-value-in-magento-2%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Have you been able to store anything?
https://digita.lism.ro/2017/09/magento-2-using-customerdata-populate-block-asynchronously/
app/code/Vendor/Module/CustomerData/Example.php
namespace VendorModuleCustomerData;
use MagentoCustomerCustomerDataSectionSourceInterface;
/**
* Example data source
*/
class Example extends MagentoFrameworkDataObject implements SectionSourceInterface
public function getSectionData()
return [
'active' => 'This is active'
];
The return array is simply an example, you can return any information you need to pass to the block.
You will then need to declare it in your module’s
app/code/Vendor/Module/etc/frontend/di.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="MagentoCustomerCustomerDataSectionPoolInterface">
<arguments>
<argument name="sectionSourceMap" xsi:type="array">
<item name="example" xsi:type="string">VendorModuleCustomerDataExample</item>
</argument>
</arguments>
</type>
</config>
In order to control when this information will be requested and updated (Magento makes multiple ajax request per page and can update your CustomerData multiple times if necessary) we need to add some information to our module’s
app/code/Vendor/Module/etc/frontend/sections.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd">
<action name="example/action/*">
<section name="example"/>
</action>
</config>
Corresponding with the routes your customer data depends on, you can add the actions to request your example section to be updated.
Now that we have the customer data set up, we will need to call it in a block using a javascript component.
Add your block to the layout where you need it, let’s say we want to add it to the header panel (add your block to the app/code/Vendor/Module/view/frontend/layout/default.xml file in your module)
<?xml version="1.0"?>
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="header.panel">
<block class="MagentoFrameworkViewElementTemplate" template="Vendor_Module::example.phtml"/>
</referenceContainer>
</body>
</page>
Now in your module create
app/code/Vendor/Module/view/frontend/templates/example.phtml
<div id="example-header">
<span data-bind="text: example().active"></span>
</div>
<script type="text/x-magento-init">
"*":
"Magento_Ui/js/core/app":
"components":
"example":
"component": "Vendor_Example/js/example"
</script>
This adds the js component example (which we will create right now) to your block and will bind the span’s value with the one we will pass to it.
Create app/code/Vendor/Module/view/frontend/web/js/example.js
define([
'uiComponent',
'Magento_Customer/js/customer-data'
], function (Component, customerData)
'use strict';
return Component.extend(
initialize: function ()
this.example = customerData.get('example');
this._super();
,
);
);
Your block should now be dynamically updated with the value from the customerData object , by using the example customerData response you have defined
How can I check Browser
– matinict
Jun 28 at 8:35
console.log(this.example) or it will appear in phtml. Look at example-header
– Dominic Xigen
Jun 28 at 10:29
ReferenceError: example is not defined
– matinict
Jun 28 at 11:13
knockout.js:3391 Uncaught ReferenceError: Unable to process binding "text: function()return example().active " Message: example is not defined (Chrome)
– matinict
Jun 28 at 11:19
add a comment |
Have you been able to store anything?
https://digita.lism.ro/2017/09/magento-2-using-customerdata-populate-block-asynchronously/
app/code/Vendor/Module/CustomerData/Example.php
namespace VendorModuleCustomerData;
use MagentoCustomerCustomerDataSectionSourceInterface;
/**
* Example data source
*/
class Example extends MagentoFrameworkDataObject implements SectionSourceInterface
public function getSectionData()
return [
'active' => 'This is active'
];
The return array is simply an example, you can return any information you need to pass to the block.
You will then need to declare it in your module’s
app/code/Vendor/Module/etc/frontend/di.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="MagentoCustomerCustomerDataSectionPoolInterface">
<arguments>
<argument name="sectionSourceMap" xsi:type="array">
<item name="example" xsi:type="string">VendorModuleCustomerDataExample</item>
</argument>
</arguments>
</type>
</config>
In order to control when this information will be requested and updated (Magento makes multiple ajax request per page and can update your CustomerData multiple times if necessary) we need to add some information to our module’s
app/code/Vendor/Module/etc/frontend/sections.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd">
<action name="example/action/*">
<section name="example"/>
</action>
</config>
Corresponding with the routes your customer data depends on, you can add the actions to request your example section to be updated.
Now that we have the customer data set up, we will need to call it in a block using a javascript component.
Add your block to the layout where you need it, let’s say we want to add it to the header panel (add your block to the app/code/Vendor/Module/view/frontend/layout/default.xml file in your module)
<?xml version="1.0"?>
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="header.panel">
<block class="MagentoFrameworkViewElementTemplate" template="Vendor_Module::example.phtml"/>
</referenceContainer>
</body>
</page>
Now in your module create
app/code/Vendor/Module/view/frontend/templates/example.phtml
<div id="example-header">
<span data-bind="text: example().active"></span>
</div>
<script type="text/x-magento-init">
"*":
"Magento_Ui/js/core/app":
"components":
"example":
"component": "Vendor_Example/js/example"
</script>
This adds the js component example (which we will create right now) to your block and will bind the span’s value with the one we will pass to it.
Create app/code/Vendor/Module/view/frontend/web/js/example.js
define([
'uiComponent',
'Magento_Customer/js/customer-data'
], function (Component, customerData)
'use strict';
return Component.extend(
initialize: function ()
this.example = customerData.get('example');
this._super();
,
);
);
Your block should now be dynamically updated with the value from the customerData object , by using the example customerData response you have defined
How can I check Browser
– matinict
Jun 28 at 8:35
console.log(this.example) or it will appear in phtml. Look at example-header
– Dominic Xigen
Jun 28 at 10:29
ReferenceError: example is not defined
– matinict
Jun 28 at 11:13
knockout.js:3391 Uncaught ReferenceError: Unable to process binding "text: function()return example().active " Message: example is not defined (Chrome)
– matinict
Jun 28 at 11:19
add a comment |
Have you been able to store anything?
https://digita.lism.ro/2017/09/magento-2-using-customerdata-populate-block-asynchronously/
app/code/Vendor/Module/CustomerData/Example.php
namespace VendorModuleCustomerData;
use MagentoCustomerCustomerDataSectionSourceInterface;
/**
* Example data source
*/
class Example extends MagentoFrameworkDataObject implements SectionSourceInterface
public function getSectionData()
return [
'active' => 'This is active'
];
The return array is simply an example, you can return any information you need to pass to the block.
You will then need to declare it in your module’s
app/code/Vendor/Module/etc/frontend/di.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="MagentoCustomerCustomerDataSectionPoolInterface">
<arguments>
<argument name="sectionSourceMap" xsi:type="array">
<item name="example" xsi:type="string">VendorModuleCustomerDataExample</item>
</argument>
</arguments>
</type>
</config>
In order to control when this information will be requested and updated (Magento makes multiple ajax request per page and can update your CustomerData multiple times if necessary) we need to add some information to our module’s
app/code/Vendor/Module/etc/frontend/sections.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd">
<action name="example/action/*">
<section name="example"/>
</action>
</config>
Corresponding with the routes your customer data depends on, you can add the actions to request your example section to be updated.
Now that we have the customer data set up, we will need to call it in a block using a javascript component.
Add your block to the layout where you need it, let’s say we want to add it to the header panel (add your block to the app/code/Vendor/Module/view/frontend/layout/default.xml file in your module)
<?xml version="1.0"?>
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="header.panel">
<block class="MagentoFrameworkViewElementTemplate" template="Vendor_Module::example.phtml"/>
</referenceContainer>
</body>
</page>
Now in your module create
app/code/Vendor/Module/view/frontend/templates/example.phtml
<div id="example-header">
<span data-bind="text: example().active"></span>
</div>
<script type="text/x-magento-init">
"*":
"Magento_Ui/js/core/app":
"components":
"example":
"component": "Vendor_Example/js/example"
</script>
This adds the js component example (which we will create right now) to your block and will bind the span’s value with the one we will pass to it.
Create app/code/Vendor/Module/view/frontend/web/js/example.js
define([
'uiComponent',
'Magento_Customer/js/customer-data'
], function (Component, customerData)
'use strict';
return Component.extend(
initialize: function ()
this.example = customerData.get('example');
this._super();
,
);
);
Your block should now be dynamically updated with the value from the customerData object , by using the example customerData response you have defined
Have you been able to store anything?
https://digita.lism.ro/2017/09/magento-2-using-customerdata-populate-block-asynchronously/
app/code/Vendor/Module/CustomerData/Example.php
namespace VendorModuleCustomerData;
use MagentoCustomerCustomerDataSectionSourceInterface;
/**
* Example data source
*/
class Example extends MagentoFrameworkDataObject implements SectionSourceInterface
public function getSectionData()
return [
'active' => 'This is active'
];
The return array is simply an example, you can return any information you need to pass to the block.
You will then need to declare it in your module’s
app/code/Vendor/Module/etc/frontend/di.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="MagentoCustomerCustomerDataSectionPoolInterface">
<arguments>
<argument name="sectionSourceMap" xsi:type="array">
<item name="example" xsi:type="string">VendorModuleCustomerDataExample</item>
</argument>
</arguments>
</type>
</config>
In order to control when this information will be requested and updated (Magento makes multiple ajax request per page and can update your CustomerData multiple times if necessary) we need to add some information to our module’s
app/code/Vendor/Module/etc/frontend/sections.xml file
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd">
<action name="example/action/*">
<section name="example"/>
</action>
</config>
Corresponding with the routes your customer data depends on, you can add the actions to request your example section to be updated.
Now that we have the customer data set up, we will need to call it in a block using a javascript component.
Add your block to the layout where you need it, let’s say we want to add it to the header panel (add your block to the app/code/Vendor/Module/view/frontend/layout/default.xml file in your module)
<?xml version="1.0"?>
<page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="header.panel">
<block class="MagentoFrameworkViewElementTemplate" template="Vendor_Module::example.phtml"/>
</referenceContainer>
</body>
</page>
Now in your module create
app/code/Vendor/Module/view/frontend/templates/example.phtml
<div id="example-header">
<span data-bind="text: example().active"></span>
</div>
<script type="text/x-magento-init">
"*":
"Magento_Ui/js/core/app":
"components":
"example":
"component": "Vendor_Example/js/example"
</script>
This adds the js component example (which we will create right now) to your block and will bind the span’s value with the one we will pass to it.
Create app/code/Vendor/Module/view/frontend/web/js/example.js
define([
'uiComponent',
'Magento_Customer/js/customer-data'
], function (Component, customerData)
'use strict';
return Component.extend(
initialize: function ()
this.example = customerData.get('example');
this._super();
,
);
);
Your block should now be dynamically updated with the value from the customerData object , by using the example customerData response you have defined
answered Jun 27 at 18:58
Dominic XigenDominic Xigen
2,3451 gold badge4 silver badges14 bronze badges
2,3451 gold badge4 silver badges14 bronze badges
How can I check Browser
– matinict
Jun 28 at 8:35
console.log(this.example) or it will appear in phtml. Look at example-header
– Dominic Xigen
Jun 28 at 10:29
ReferenceError: example is not defined
– matinict
Jun 28 at 11:13
knockout.js:3391 Uncaught ReferenceError: Unable to process binding "text: function()return example().active " Message: example is not defined (Chrome)
– matinict
Jun 28 at 11:19
add a comment |
How can I check Browser
– matinict
Jun 28 at 8:35
console.log(this.example) or it will appear in phtml. Look at example-header
– Dominic Xigen
Jun 28 at 10:29
ReferenceError: example is not defined
– matinict
Jun 28 at 11:13
knockout.js:3391 Uncaught ReferenceError: Unable to process binding "text: function()return example().active " Message: example is not defined (Chrome)
– matinict
Jun 28 at 11:19
How can I check Browser
– matinict
Jun 28 at 8:35
How can I check Browser
– matinict
Jun 28 at 8:35
console.log(this.example) or it will appear in phtml. Look at example-header
– Dominic Xigen
Jun 28 at 10:29
console.log(this.example) or it will appear in phtml. Look at example-header
– Dominic Xigen
Jun 28 at 10:29
ReferenceError: example is not defined
– matinict
Jun 28 at 11:13
ReferenceError: example is not defined
– matinict
Jun 28 at 11:13
knockout.js:3391 Uncaught ReferenceError: Unable to process binding "text: function()return example().active " Message: example is not defined (Chrome)
– matinict
Jun 28 at 11:19
knockout.js:3391 Uncaught ReferenceError: Unable to process binding "text: function()return example().active " Message: example is not defined (Chrome)
– matinict
Jun 28 at 11:19
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f279936%2fhow-can-use-customerdata-to-store-custom-value-in-magento-2%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown