zanox MasterTag Developer Guide
Transcription
zanox MasterTag Developer Guide
MASTERTAG DEVELOPER GUIDE TABLE OF CONTENTS 1 2 3 4 5 Introduction ..................................................................................................................... 4 1.1 What is the zanox MasterTag? ............................................................................. 4 1.2 What is the zanox page type? .............................................................................. 4 Create a MasterTag application in the zanox Application Store ................................ 6 2.1 Basic application data ........................................................................................... 6 2.2 Application settings ............................................................................................. 10 2.2.1 What are application settings? ........................................................................... 10 2.2.2 Naming conventions for application settings ...................................................... 10 2.2.3 Create an application setting for your MasterTag application ............................ 11 2.3 "Hello World" sample application ........................................................................ 14 Develop an application ................................................................................................. 16 3.1 Create a basic code template ............................................................................. 16 3.1.1 Coding requirements .......................................................................................... 16 3.1.2 Local variables.................................................................................................... 17 3.1.3 Page type settings .............................................................................................. 17 3.2 Applications and external data ............................................................................ 18 3.2.1 Data retrieval methods ....................................................................................... 18 3.2.2 Reference of automatically transferred data ...................................................... 19 3.3 zanox helper functions ........................................................................................ 20 3.3.1 How do I use helper functions? .......................................................................... 20 3.3.2 Reference of zanox helper functions .................................................................. 21 3.4 Things you shouldn't do in your application code ............................................... 23 3.4.1 Requirement 1: Do not use external JavaScript libraries ................................... 23 3.4.2 Requirement 2: Do not use global JavaScript variables and /or functions......... 23 Test an application ........................................................................................................ 25 4.1 Create an empty test page ................................................................................. 25 4.2 Simulate application settings in your test environment ....................................... 27 Release an application ................................................................................................. 29 5.1 Optimise the application source code ................................................................. 29 5.2 Application approval............................................................................................ 29 5.3 MasterTag approval checklist ............................................................................. 33 ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 2 6 Tips for advanced users ............................................................................................... 34 6.1 Develop an application without generating a test code ...................................... 34 6.1.1 Speed up application development .................................................................... 34 6.1.2 Create an appropriate test page ......................................................................... 35 ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 3 1 Introduction 1.1 What is the zanox MasterTag? A zanox MasterTag is a set of 7 script containers which advertisers implement on their websites. These containers asynchronously load applications that provide value added services. For instance, advertisers could load retargeting or web analytics services into their MasterTags or use the MasterTags as generic container tags. In the following sections of this document you will learn how you can develop applications for the zanox MasterTag and provide them to zanox advertisers. 1.2 What is the zanox page type? Each of the 7 script containers can only be used on specific pages within the advertiser website. These pages are called zanox page types. The following page types exist: Page Type Description home This page type refers to the homepage of the advertiser website, shop, etc. product This page type refers to all pages where the user can find details on a selected product. search This page type refers to a page where the user can perform product searches and search results are listed. category This page type refers to all pages which list product categories. basket This page type refers to the page where the shopping basket is displayed to the user prior to purchase. checkout This page type refers to the sales confirmation page which is displayed to the user after purchase. generic This page type refers to any other pages on the advertiser’s website. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 4 If you develop a MasterTag application, it must be able to work on all of the above pages. The zanox page type is passed to the application as a setting at runtime. The first step you should do as a developer is to think about which page types your application must support. For instance, if an application has to retrieve data on the product page (e.g. the ID of the displayed product) and on the checkout page (e.g. check the product the user bought against the product the user viewed on the product page), it has to support the two page types product and checkout. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 5 2 Create a MasterTag application in the zanox Application Store 2.1 Basic application data Developers create and distribute MasterTag applications via the zanox Application Store. Note that you need to register with zanox as publisher to be able to log in to the zanox Application Store. To create a new MasterTag application in the zanox Application Store, proceed as follows: Step 1: Go to the zanox Application Store at http://apps.zanox.com. Step 2: Click on the button Connect with zanox and enter your login credentials (publisher account login name and password). Step 3: Click on the tab Developers in the upper menu bar. The developer area of the zanox Application Store opens. The tab Applications for Sales shows a list of all your applications you may want to make publicly available in the zanox Application Store. If you have not yet started developing, the list will be empty. Figure 1: Your applications in the zanox Application Store Step 4: To create a new application, click on the button New application A new menu bar opens underneath the list of applications. Step 5: Click on the tab General and enter the following basic application data: ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 6 Field Description Application Name of your application Application type For MasterTag applications select the application type Widget Description Short description of your application Detailed description More detailed description of your application Format Size of your application. Select Free Format if the application does not display data (for example a banner) on a webpage. Widget width Application width in pixels. Only required if Free Format was selected. Select 0 for applications that do not display anything on a webpage. Widget height Application height in pixels. See above. Programming language Programming language of your application (usually JavaScript) Search tags Enter the string “MasterTag” followed by a comma-separated list of zanox page types your application supports, for example: MasterTag,home,product,search,category,basket,checkout,generic Video URL URL with a tutorial video for your application, Documentation URL to external documentation of your application Website URL URL to your company’s website Version Version of your application ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 7 Figure 2: Basic information about your application ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 8 Step 6: Optionally click on the tab Application T & C to add some terms and conditions. These terms and conditions will be displayed to all users that get your application from the zanox Application Store. Figure 3: Terms and conditions of your application ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 9 Step 7: Finally, define the user group for your application. MasterTag applications are always developed for advertisers, so click on the tab Categories and select Applications for Advertisers. Figure 4: Application target group Step 8: Click the button Save to save your basic application data. The new application and its basic application data will be saved in your developer area of the zanox Application Store. 2.2 Application settings 2.2.1 What are application settings? Application settings are some kind of configuration parameters you may want to use for your MasterTag application. The values of the application settings are passed to your application at runtime and can be either static or computed dynamically by the zanox loader script (zanox.js script). Application settings are used by your MasterTag application to retrieve information from different page types of the advertiser’s website. Imagine a scenario where your application needs to retrieve the following information: On the product page: ID of the displayed product On the checkout page: Total amount of money the user spent on a sale In order to retrieve this information you will have to create two application settings. The next sections will show you how to create those settings. 2.2.2 Naming conventions for application settings If you create a new application setting, you have to follow a special naming convention. This is necessary so that advertisers can understand which application settings retrieve which information from which page types. Setting names should look like this: <prefix>_<name> Use camelCase for application setting names (e.g. mySuperSpecialSetting). The prefix must be one of the following strings (which match the names of the zanox page type, see section What is the zanox page type?): ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 10 Prefix name Description Example home Application setting that only retrieves information from the homepage of the advertiser’s website home_productId product Application setting that only retrieves information from the product page of the advertiser’s website product_productId search Application setting that only retrieves information from the search results page of the advertiser’s website search_searchString category Application setting that only retrieves information from the category page of the advertiser’s website category_categoryName basket Application setting that only retrieves information from the basket page of the advertiser’s website basket_products checkout Application setting that only retrieves information from the checkout page of the advertiser’s website checkout_totalAmount 2.2.3 Create an application setting for your MasterTag application To create a new application setting for your MasterTag application, proceed as follows: Step 1: Click on the MasterTag application from your list of applications for which you want to create a new application setting. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 11 Step 2: Click on the tab Widget Code, then click on the button New setting. Figure 5: Create an application setting for your MasterTag application A dialogue window opens. Step 3: Enter the name and the default value for the new application setting into the dialogue window. Name is the setting key which you use in your application source code to retrieve the setting value. For instance, a valid name could be "product_productID ". For more information on naming conventions see section Naming conventions for application settings. Value is the default value which is passed to your application if no other value was specified for this setting during the configuration of a specific MasterTag. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 12 You can also define your setting as mandatory. Advertisers must provide the values for mandatory settings in their live environments in order for the MasterTag application to function properly. Figure 6: Create an application setting ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 13 Step 4: Click the button Create to create the new application setting. The application setting is displayed in your list of settings available for the MasterTag application. Figure 7: Your application settings "Hello World" sample application 2.3 Now you can start writing your application code. This is the source code of a very simple hello world sample application: <script type="text/javascript"> zanox.setCallback("INSERT YOUR APPLICATION ID HERE", function(data) { var applicationId = data.app.id; var message = "Hello World! I'm application " + applicationId; alert( message ); }); </script> After loading the sample application displays a message which contains the application ID. In order for the sample application to work you need to perform the following steps: ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 14 Step 1: Replace the string "INSERT YOUR APPLICATION ID HERE" with your actual application ID first. You can find your application ID on the tab zanox Keys (see next section Create a basic code template). Step 2: Click on the tab Widget Code and copy and paste the code into the appropriate field in the zanox Application Store. Figure 8: Sample application code Step 3: Click the button Save to save the application code. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 15 3 Develop an application 3.1 Create a basic code template The most simple valid zanox MasterTag application would look like this: <script type="text/javascript"> zanox.setCallback("INSERT YOUR APPLICATION ID HERE", function(data) { // enter your code here }); </script> "INSERT YOUR APPLICATION ID HERE " has to be replaced with your actual zanox application ID. You can find your application ID on the tab zanox Keys. Figure 9: Access your application ID 3.1.1 Coding requirements As an application developer you are free to do what you want in your source code. However, you have to consider the following coding requirement: You have to call the JavaScript function "zanox.setCallback" once in your source code and pass the following parameters: Your zanox application ID The JavaScript callback function which will act as an entry point for your code. The JavaScript callback function will automatically be called when a HTML page with a MasterTag and your associated MasterTag application has been loaded. The callback function must accept one parameter (called "data" in the example above). The value of this parameter will be a JavaScript object at runtime which contains some metadata about your application as well as all the settings you have defined for your application with their actual values. You can find a full reference of all data passed to this function in the section Reference of automatically transferred data). ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 16 3.1.2 Local variables In your application code you often access the settings. To simplify this step you can create a local variable as shown below: <script type="text/javascript"> zanox.setCallback("INSERT HERE YOUR APPLICATION ID", function(data) { var settings = data.app.settings; // save a shortcut alert(settings["my_setting_key"]); // just for test }); </script> 3.1.3 Page type settings For a MasterTag application to function properly your application code must be able to identify the page type it is currently running on (see section What is the zanox page type? for more information). Your application must support a setting called "pageType" which will be used for that purpose. Below you will find an example of how to use the “pageTye” setting: <script type="text/javascript"> zanox.setCallback("INSERT HERE YOUR APPLICATION ID", function(data) { var settings = data.app.settings; var pageType = settings["pageType"]; // get pagetype if (pageType == null) return; // just to be sure switch (pageType) { case "basket": // app runs on basket page, do the following... break; case "category": // app runs on category page, do the following... break; case "checkout": // app runs on checkout page, do the following... break; ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 17 case "generic": // app runs on any other page, do the following... break; case "home": // app runs on home page, do the following... break; case "product": // app runs on product page, do the following... break; case "search": // app runs on search page, do the following... break; } }); </script> If you want to use CSS to style your application or use external JavaScript files, just either add HTML <style> or <script src="..."> tags to your source code. 3.2 Applications and external data 3.2.1 Data retrieval methods If your application needs external data to function properly, you can use the following methods to retrieve the required data: Access the browser DOM directly and parse the HTML document (only works if your application does not run inside an iFrame). Use the provided metadata that is automatically passed to your application. Use the provided settings that are automatically passed to your application. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 18 3.2.2 Reference of automatically transferred data The following JavaScript object is automatically passed to the application’s callback function you specify in the zanox.setCallback function call: var data = { "mediaslot" : { "id" : "MASTERTAG_ID", "height" : 0, "width" : 0 }, "adspace" : { "id" : 123 // id of ad space associated to mastertag }, "app" : { "id" : "APPID", // id of your app "height": 500, // height of your app (same as in Application Store) "width": 500, // width of your app (same as in Application Store) "container" : { "id" : "mycontainer" // container id of your app (see below) }, "settings" : { // "list" of all defined settings (keys + values) "key1" : "value1", "key2" : "value2" }, "connectIds" : { "developer" : "DEVELOPERCONNECTID", // connect ID of app developer "publisher" : "PUBLISHERCONNECTID" // connect ID customer account }, "renderMode" : "iframe" // app is placed in an "iframe" or "inline" in page } }; The application container ID has a special meaning. It is a string which contains the ID of a HTML element that surrounds your application inside the browser DOM. Usually, this would be a <div> element. To add content to the webpage it runs into, you need to modify the browser DOM (insert or manipulate some DOM nodes) accordingly. But first, you have to find the proper location where to insert your content. To add content (e.g. a banner) at the exact same position of the MasterTag code, you have to use the provided container ID to find the corresponding DOM node. Just call the JavaScript function ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 19 document.getElementByID("PROVIDED_CONTAINER_ID") to identify the DOM node. This works even if there is more than one MasterTag on the same page with the same associated application. In this case, your application’s callback function is called multiple times for each MasterTag and each time provides a different container ID. Find some examples below: To access the application container <div> use: var containerNode = document.getElementById( data.app.container.id ); To get the ID of the ad space which is associated to the MasterTag your application was assigned to use: var adspaceId = data.adspace.id; To access a specific setting value use: var pageType = data.app.settings["pageType"]; To iterate through all available settings use: for (var key in data.app.settings) { var value = data.app.settings[key]; alert(key + ":" + value); } 3.3 zanox helper functions 3.3.1 How do I use helper functions? You can access a zanox helper function via the global zanox JavaScript object. Its available in any page that includes the loader script (zanox.js script) regardless of whether the application is loaded inside an iFrame or not. See the next section for a complete reference of all available functions. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 20 3.3.2 Reference of zanox helper functions 3.3.2.1 Function: version() Description: Use this function to retrieve the current version of the zanox.js script. Parameters: None Returns: A string with the version number. Example: alert( zanox.version() ); 3.3.2.2 Function: load( url, onComplete ) Description: This function loads a JavaScript file from the provided URL, executes its content and calls the provided onComplete JavaScript function when finished. This function is the most useful of all helper functions. You can use it in your source code to load external JavaScript files at runtime as well as to make zanox API REST calls (which could also be treated as external JavaScript files). Parameters: Parameter Name Parameter Description url String that contains the URL to load an external Javascript file onComplete JavaScript function that is called after executing the file content Returns: Nothing Example: zanox.load( "http://www.domain.com/scripts/myscript.js" ); 3.3.2.3 Function: loadAll( urls, onComplete ) Description: This function loads all JavaScript files from the provided URLs, executes their content and calls the provided onComplete JavaScript function when finished. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 21 Parameters: Parameter Name Parameter Description urls String array of URLs to load external JavaScript files onComplete JavaScript function that is called after executing the file content Returns: Nothing Example: var myScripts = [ "http://www.domain.com/scripts/myscript1.js", "http://www.domain.com/scripts/myscript2.js" ]; zanox.loadAll( myScripts ); 3.3.2.4 Function: setCallback( appId, callback ) Description: This function must be called once you are in your application. It tells the zanox loader script (zanox.js script) to call the provided callback function after the application with the given application ID has been loaded. The provided callback function is used as an entry point into your application code. Parameters: Parameter Name Parameter Description appId Application ID from the zanox Application Store callback JavaScript function that is called after the app has been loaded Returns: Nothing Example: zanox.setCallback("APP_ID", function(data) { /* … */ } ); 3.3.2.5 Function: setInnerHTML( node, content ) Description: Use this function to manipulate the content of the provided DOM node. Basically, the function sets its value for innerHTML to the passed content. The function takes care of included script tags. If the content contains a <script src="..."> tag, the referenced external JavaScript file is loaded and executed. If the content contains inline scripts (via <script> tags), they are executed too. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 22 Parameters: Parameter Name Parameter Description node DOM node whose content you want to modify content New content (a HTML string) for the provided node Returns: Nothing Example: zanox.setInnerHTML( document.body, "<div>Hello World!</div>" ); 3.4 Things you shouldn't do in your application code If you have configured your application to run directly inside the parent page (the Load in iframe check box is unchecked in the zanox Application Store), you should take special care while coding your application because it might run on many different websites in different environments. Your application must not influence the existing functionality of a website. Hence, it is strongly recommended to pay attention to the below coding requirements. Please note: If your application runs in an iFrame instead, you can freely design the application code as the application will be isolated from the website it runs in. 3.4.1 Requirement 1: Do not use external JavaScript libraries Avoid using external JavaScript libraries like jquery, prototype, etc. Often, those libraries do not work together or unpredictably influence each other if they are used in parallel on the same HTML page. JavaScript errors might occur in your application or even in the parent page. As a developer you never know which other JavaScript frameworks are used by the webpage your application runs in. Hence, avoid the use of JavaScript frameworks where possible and use only plain JavaScript functionality instead. 3.4.2 Requirement 2: Do not use global JavaScript variables and /or functions Avoid using global JavaScript variables and/or functions. Using global JavaScript variables and/or functions in your source code may lead to an unpredictable behaviour of your application as you never know if the HTML page, which hosts your application, also uses the same variables or functions. If both share the same data, everything might go well, but in the worst case, one or both of them will not function properly anymore. Therefore only use local variables or functions. Use the JavaScript "var" statement every time you declare a variable. If you leave it out, the variable becomes global and might cause problems later. In terms of functions, we recommend to create one global JavaScript object which acts like a container for all your functions (sometimes also called a namespace object). Assign a unique name to the global JavaScript object to avoid conflicts. If you use the application code template defined earlier (see section Create a basic code template), declare your functions with the "function" keyword. These functions will be scoped to the anonymous callback function we pass to the "zanox.setCallback" method. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 23 Find an example below: <script type="text/javascript"> zanox.setCallback("INSERT HERE YOUR APPLICATION ID", function(data) { var myLocalVar = "Hello Local"; // local variable myGlobalVar = "Hello World"; // global, because var is missing! // this function is NOT global, so it's ok function sayHello() { alert( myLocalVar ); } sayHello(); }); </script> ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 24 4 Test an application 4.1 Create an empty test page If you want to test your application, you have to generate a test code first. To generate the test code proceed as follows: Step 1: Log in to the zanox Application Store and click on the MasterTag application from your list of applications for which you want to generate a test code. Step 2: Click on the tab Widget Code, then click the button Get the code. Figure 10: Access the application code ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 25 A dialogue window prompts you to one of your ad spaces for which you want to generate the code. Figure 11: Generate the application code Step 3: Click the button Generate code to pull the application code and place the generated code snippet on a HTML page. Step 4: We recommend to create an empty HTML page for testing as shown below: <html> <head> </head> <body> <!-put test code from Application Store here (XXXXXXXX is your application ID) --> <div class="zx_XXXXXXXXXXXXXX zx_mediaslot"> <script type="text/javascript"> window._zx = window._zx || []; window._zx.push({"id":"XXXXXXXXXXXXXX"}); ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 26 (function(d) { var s = d.createElement("script"); s.async = true; s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "...js"; var a = d.getElementsByTagName("script")[0]; a.parentNode.insertBefore(s, a); }(document)); </script> </div> </body> </html> Step 5: Save the HTML page anywhere you want (e.g. on your local hard drive) and open it in your browser. The application is now loaded from the zanox servers, executed and displayed in the browser after a short moment of time. 4.2 Simulate application settings in your test environment To test if your application settings work properly and if the code handles different value combinations, make some small changes to the generated code from the zanox Application Store. This will help you simulate how settings are passed. This line must be edited: window._zx.push({"id":"XXXXXXXXXXXXXX"}); The push function takes one JavasSript object as a parameter (written in JSON notation). This object usually contains only one property "id", whose value is the ID of the MasterTag to be loaded. To simulate passing of settings, add a new property to that object, called "settings". // same line as above, only formatted differently for better understanding window._zx.push({ "id" : "XXXXXXXXXXXXXX" }); Now modify the code (added code marked in red): window._zx.push({ "id" : "XXXXXXXXXXXXXX", "settings" : { } }); The value of the new "settings" property is itself also a JavaScript object. To simulate the passing of a new setting to your application, you have to add it to the "settings" object. For instance, if you want to pass the setting "my_setting_1" with the value "myValue_1", do the following: ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 27 window._zx.push({ "id" : "XXXXXXXXXXXXXX", "settings" : { "my_setting_1" : "myValue_1" } }); You can also pass a comma-separated list of settings. window._zx.push({ "id" : "XXXXXXXXXXXXXX", "settings" : { "my_setting_1" : "myValue_1", "my_setting_2" : "myValue_2", "my_setting_3" : "myValue_3" } }); Please keep in mind the following limitation: The above testing method will only work for settings which have been previously defined by you in the zanox Application Store (see section Create an application setting for your MasterTag). If you now click refresh in your browser, the setting values are passed to the application’s callback function as described above and your application should change its behaviour. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 28 5 Release an application 5.1 Optimise the application source code After you finished developing your application and you are sure it works like it should you can now release it to the public. But before you do that, you should minimise the size of your application source code by: Minifying the JavaScript code Removing all comments from the HTML, JavaScript and CSS code Removing all other unused code Minifying the JavaScript code is the most important step to optimise your source code. Minifying is done by removing comments and whitespaces (spaces, tabs etc.) from the code and, depending on the algorithm used, by compressing the source code afterwards. There are some tools available which may help you minifying your source code, for example YUI or Dojo Shrinksafe. If you prefer a simple website where you can paste your code, push a button and get your minified code back, use for example: http://jscompress.com/ http://dean.edwards.name/packer/ http://compressorrater.thruhere.net/ After optimising your applications source code, just update it in the zanox Application Store and you're ready for the final step. Application approval 5.2 The very last step to release your application to the public is to request approval by zanox. Only approved applications are available to users and clients in the zanox Application Store. To request approval proceed as follows: Step 1: Make sure that your application complies with the requirements set out in the MasterTag approval checklist. Step 2: Go to your developer area in the zanox Application Store and click on the tab Applications for Sale. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 29 Step 3: Select the application you want to release from the list of your available applications and click on it. Figure 12: Select your application for release ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 30 Step 4: Scroll down to the bottom of the page and click the button Save & submit. Figure 13: Save and submit your application ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 31 A confirmation dialogue opens. Figure 14: Confirm application submission Step 5: Click the button Submit to submit your application to the approval queue. The application is now reviewed and tested by zanox according to our code quality requirements. Once zanox approves your application you will receive an e-mail and the application will be publicly available in the zanox Application Store. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 32 5.3 MasterTag approval checklist Before sending a MasterTag application for approval, please make sure you have checked the following: 1 Is there an application description? 2 Is the application type set to "widget"? 3 Is the application set to "Application for Advertisers"? 4 Have you provided a logo? 5 Are there search tags in the format "MasterTag, product, basket, checkout"? 6 Have all "document.write" commands in the JavaScript widget code been eliminated? 7 Has the widget code been embedded once in a test page without causing any JavaScript errors? 8 Does the widget code begin with the tag "<script 'type=text/javascript'>"? 9 Does the widget code command zanox.getCallback(APP_ID) use the application's correct APP_ID? 10 Are the application settings formatted correctly according to the naming conventions in section 2.2.2? ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 33 6 Tips for advanced users 6.1 Develop an application without generating a test code 6.1.1 Speed up application development Most of the time, developing software is an iterative process. You change your source code and immediately afterwards want to see how the software’s behaviour has changed. This implies that you have to do the following steps over and over again: 1. Modify your applications source code 2. Open the zanox Application Store 3. Copy source code in the appropriate field in the developer area 4. Update 5. Open the browser 6. Refresh and check the new behaviour One way to optimise the development process is to reduce the steps which are required to update your application’s source code (steps 2, 3, 4). These steps are needed as your test page contains a MasterTag test code that only works in conjunction with the zanox backend. Wouldn't it be nice if you could just change your code and refresh your browser and skipt the update steps in the zanox Application Store? To do so, you have to create a special HTML test page which allows you to develop your application without the MasterTag test code. Instead, you do an integration test after you have finished developing (see next section for a detailed explanation). Advantages: You only have to generate a code in the zanox Application Store once when you do an integration test of your application. You do not have to update the applications source code in the zanox Application Store every time you want to check your source code behaviour. Instead, you just refresh the browser. You can easily debug your application, for instance with Firefox. Debugging can get very complicated if you use a MasterTag test code while developing. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 34 6.1.2 Create an appropriate test page Let’s assume, you have an empty HTML page like this: <html> <head> </head> <body> </body> </html> To prepare this page for testing proceed as follows: Step 1: Place your application’s source code on the page. If your source code is located in an external JavaScript file, use a <script src="...." /> tag. If want to copy your code into the test page, use a normal <script> tag. Step 2: If your application uses some of the loader script functionality (e.g. the JavaScript function zanox.load), include the loader script in your test page: <script src="http://static.zanox.com/scripts.zanox.js"></script> Step 3: Include a HTML element in your test page which acts as a container for your application (see section Reference of automatically transferred data). You can use the following sample code: <div id="testcontainer"></div> Step 4: Add some JavaScript code that simulates parts of the internal functionality of the zanox loader script. var data = { "mediaslot" : { "id" : "SOME_MASTERTAG_ID", "height" : 0, "width" : 0 }, "adspace" : { "id" : 123 }, "app" : { "id" : "MY_APP_ID", "height": 0, ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 35 "width": 0, "container" : { "id" : "testcontainer" }, "settings" : { // add your settings here }, "connectIds" : { "developer" : "DEVELOPER_CONNECT_ID", "publisher" : "PUBLISHER_CONNECT_ID" }, "renderMode" : "inline" } }; var zanox = zanox || {}; zanox.setCallback = function( appId, callback ) { callback(data); } The structure of the data object is exactly the same as described in section Reference of automatically transferred data. There is only one difference: You are creating this object manually right now. That means you have full control over what data is passed to your application. The most important lines of code in the sample above are: var zanox = zanox || {}; zanox.setCallback = function( appId, callback ) { callback(data); } As mentioned above, you have to call the “zanox.setCallback” function at least once in our application source code. The code above overwrites this function and immediately calls your application’s init function (callback function) passing the data object you have created manually (Basically, it simulates what the zanox loader script is doing internally). Hence, you do not need a MasterTag test code any more when developing a MasterTag application. ZANOX.de AG | MASTERTAG DEVELOPER GUIDE | LAST UPDATED 06/2012 | PAGE 36 ZANOX.de AG | Stralauer Allee 2 | 10245 Berlin | Deutschland +49 30 509691-0 | +49 30 509691-99 | info@zanox.com ZANOX.de AG | MASTERTAG DEVELOPER GUIDEwww.zanox.com | LAST UPDATED 06/2012 | PAGE 37 | blog.zanox.com | wiki.zanox.com