incubator-cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bfede...@apache.org
Subject [1/2] git commit: Add tooltips to form fields
Date Mon, 22 Oct 2012 22:20:21 GMT
Updated Branches:
  refs/heads/master d3040de21 -> 8bb273de8


Add tooltips to form fields

-Adds tooltips to all dialog-based form fields, to describe what each
 field represents. The tooltip appears on focus of the field, and
 hides once the field is blurred.

-Documentation content is pulled from a new namespace
 'cloudStack.docs', under docs.js. A new attribute, 'docID' is then
 specified on each createForm field to link the field to a specific
 tooltip string.

-If no docID is specified, then no tooltip is rendered.

-This only applies to the 'generic' forms that are rendered using the
 createForm widget

-This still needs to be localized

Conflicts:
	ui/index.jsp
	ui/scripts/configuration.js
	ui/scripts/network.js
	ui/scripts/ui/dialog.js
	ui/scripts/vpc.js


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/8bb273de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/8bb273de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/8bb273de

Branch: refs/heads/master
Commit: 8bb273de8f3e51b85934c7d9b9c5c9804c3a6c29
Parents: d3040de
Author: Brian Federle <brian.federle@citrix.com>
Authored: Mon Oct 22 14:45:59 2012 -0700
Committer: Brian Federle <brian.federle@citrix.com>
Committed: Mon Oct 22 15:18:22 2012 -0700

----------------------------------------------------------------------
 ui/css/cloudstack3.css           |   32 ++
 ui/index.jsp                     |    5 +-
 ui/scripts/accounts.js           |   36 ++-
 ui/scripts/configuration.js      |   64 +++-
 ui/scripts/docs.js               |  748 +++++++++++++++++++++++++++++++++
 ui/scripts/domains.js            |    2 +
 ui/scripts/network.js            |   26 +-
 ui/scripts/storage.js            |   10 +-
 ui/scripts/system.js             |  147 +++++--
 ui/scripts/templates.js          |   15 +-
 ui/scripts/ui/dialog.js          |   24 +-
 ui/scripts/ui/widgets/toolTip.js |  160 +++++++
 ui/scripts/vpc.js                |   34 ++-
 13 files changed, 1222 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/css/cloudstack3.css
----------------------------------------------------------------------
diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css
index 05acb74..8c97ca1 100644
--- a/ui/css/cloudstack3.css
+++ b/ui/css/cloudstack3.css
@@ -9478,6 +9478,38 @@ div.panel.ui-dialog div.list-view div.fixed-header {
   background: #DFE1E3;
 }
 
+/*Tooltip*/
+.tooltip-box {
+  width: 15%;
+  height: auto;
+  display: inline-block, padding: 4px;
+  background: #FFFFFF;
+  border: 1px solid #BEB8B8;
+  padding: 10px;
+  /*+border-radius:4px;*/
+  -moz-border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -khtml-border-radius: 4px;
+  border-radius: 4px;
+  margin-left: 23px;
+  /*+box-shadow:0px 1px 12px #353535;*/
+  -moz-box-shadow: 0px 1px 12px #353535;
+  -webkit-box-shadow: 0px 1px 12px #353535;
+  -o-box-shadow: 0px 1px 12px #353535;
+  box-shadow: 0px 1px 12px #353535;
+}
+
+.tooltip-box .arrow {
+  width: 19px;
+  height: 30px;
+  background: url(../images/sprites.png) -585px -947px;
+  /*+placement:shift -16px 3px;*/
+  position: relative;
+  left: -16px;
+  top: 3px;
+  position: absolute;
+}
+
 /*Tagger*/
 .tagger {
   width: 94%;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/index.jsp
----------------------------------------------------------------------
diff --git a/ui/index.jsp b/ui/index.jsp
index daebfaa..35be67e 100644
--- a/ui/index.jsp
+++ b/ui/index.jsp
@@ -1608,7 +1608,7 @@ under the License.
     <script type="text/javascript" src="scripts/ui/widgets/treeView.js?t=<%=now%>"></script>
     <script type="text/javascript" src="scripts/ui/widgets/notifications.js?t=<%=now%>"></script> 
     <script type="text/javascript" src="scripts/ui/widgets/tagger.js?t=<%=now%>"></script>
-    
+    <script type="text/javascript" src="scripts/ui/widgets/toolTip.js?t=<%=now%>"></script>
     <script type="text/javascript" src="scripts/cloud.core.callbacks.js?t=<%=now%>"></script>
     <script type="text/javascript" src="scripts/sharedFunctions.js?t=<%=now%>"></script>
     <script type="text/javascript" src="scripts/ui-custom/login.js?t=<%=now%>"></script>
@@ -1642,7 +1642,8 @@ under the License.
     <script type="text/javascript" src="scripts/ui-custom/physicalResources.js?t=<%=now%>"></script>
     <script type="text/javascript" src="scripts/ui-custom/zoneWizard.js?t=<%=now%>"></script>
     <script type="text/javascript" src="scripts/system.js?t=<%=now%>"></script>
-    <script type="text/javascript" src="scripts/domains.js?t=<%=now%>"></script>   
+    <script type="text/javascript" src="scripts/domains.js?t=<%=now%>"></script>
+    <script type="text/javascript" src="scripts/docs.js?t=<%=now%>"></script>
   </body>
 </html>
 <jsp:include page="dictionary.jsp" />

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/accounts.js
----------------------------------------------------------------------
diff --git a/ui/scripts/accounts.js b/ui/scripts/accounts.js
index 5158eb0..0535df4 100644
--- a/ui/scripts/accounts.js
+++ b/ui/scripts/accounts.js
@@ -79,13 +79,15 @@
                 fields: {
                   username: {
                     label: 'label.username',
-                    validation: { required: true }
+                    validation: { required: true },
+                    docID: 'helpAccountUsername'
                   },
                   password: {
                     label: 'label.password',
                     validation: { required: true },
                     isPassword: true,
-                    id: 'password'
+                    id: 'password',
+                    docID: 'helpAccountPassword'
                   },
                   'password-confirm': {
                     label: 'label.confirm.password',
@@ -93,22 +95,27 @@
                       required: true,
                       equalTo: '#password'
                     },
-                    isPassword: true
+                    isPassword: true,
+                    docID: 'helpAccountConfirmPassword'
                   },
                   email: {
                     label: 'label.email',
-                    validation: { required: true, email:true }
+                    validation: { required: true, email:true },
+                    docID: 'helpAccountEmail'
                   },
                   firstname: {
                     label: 'label.first.name',
-                    validation: { required: true }
+                    validation: { required: true },
+                    docID: 'helpAccountFirstName'
                   },
                   lastname: {
                     label: 'label.last.name',
-                    validation: { required: true }
+                    validation: { required: true },
+                    docID: 'helpAccountLastName'
                   },
                   domainid: {
                     label: 'label.domain',
+                    docID: 'helpAccountDomain',
                     validation: { required: true },
                     select: function(args) {
                       var data = {};
@@ -139,10 +146,12 @@
                     }
                   },
                   account: {
-                    label: 'label.account'
+                    label: 'label.account',
+                    docID: 'helpAccountAccount'
                   },
                   accounttype: {
                     label: 'label.type',
+                    docID: 'helpAccountType',
                     validation: { required: true },
                     select: function(args) {
                       var items = [];
@@ -153,6 +162,7 @@
                   },
                   timezone: {
                     label: 'label.timezone',
+                    docID: 'helpAccountTimezone',
                     select: function(args) {
                       var items = [];
                       items.push({id: "", description: ""});
@@ -163,6 +173,7 @@
                   },
                   networkdomain: {
                     label: 'label.network.domain',
+                    docID: 'helpAccountNetworkDomain',
                     validation: { required: false }
                   }
                 }
@@ -754,16 +765,19 @@
                 fields: {
                   username: {
                     label: 'label.username',
-                    validation: { required: true }
+                    validation: { required: true },
+                    docID: 'helpUserUsername'
                   },
                   password: {
                     label: 'label.password',
                     isPassword: true,
                     validation: { required: true },
-                    id: 'password'
+                    id: 'password',
+                    docID: 'helpUserPassword'
                   },
                   'password-confirm': {
                     label: 'label.confirm.password',
+                    docID: 'helpUserConfirmPassword',
                     validation: {
                       required: true,
                       equalTo: '#password'
@@ -772,18 +786,22 @@
                   },
                   email: {
                     label: 'label.email',
+                    docID: 'helpUserEmail',
                     validation: { required: true, email: true }
                   },
                   firstname: {
                     label: 'label.first.name',
+                    docID: 'helpUserFirstName',
                     validation: { required: true }
                   },
                   lastname: {
                     label: 'label.last.name',
+                    docID: 'helpUserLastName',
                     validation: { required: true }
                   },
                   timezone: {
                     label: 'label.timezone',
+                    docID: 'helpUserTimezone',
                     select: function(args) {
                       var items = [];
                       items.push({id: "", description: ""});

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/configuration.js
----------------------------------------------------------------------
diff --git a/ui/scripts/configuration.js b/ui/scripts/configuration.js
index 450a343..0e77d37 100644
--- a/ui/scripts/configuration.js
+++ b/ui/scripts/configuration.js
@@ -59,14 +59,17 @@
                 fields: {
                   name: {
                     label: 'label.name',
+                    docID: 'helpComputeOfferingName',
                     validation: { required: true }
                   },
                   description: {
                     label: 'label.description',
+                    docID: 'helpComputeOfferingDescription',
                     validation: { required: true }
                   },
                   storageType: {
                     label: 'label.storage.type',
+                    docID: 'helpComputeOfferingStorageType',
                     select: function(args) {
                       var items = [];
                       items.push({id: 'shared', description: 'shared'});
@@ -76,6 +79,7 @@
                   },
                   cpuNumber: {
                     label: 'label.num.cpu.cores',
+                    docID: 'helpComputeOfferingCPUCores',
                     validation: {
                       required: true,
                       number: true
@@ -83,6 +87,7 @@
                   },
                   cpuSpeed: {
                     label: 'label.cpu.mhz',
+                    docID: 'helpComputeOfferingCPUMHz',
                     validation: {
                       required: true,
                       number: true
@@ -90,6 +95,7 @@
                   },
                   memory: {
                     label: 'label.memory.mb',
+                    docID: 'helpComputeOfferingMemory',
                     validation: {
                       required: true,
                       number: true
@@ -97,6 +103,7 @@
                   },
                   networkRate: {
                     label: 'label.network.rate',
+                    docID: 'helpComputeOfferingNetworkRate',
                     validation: {
                       required: false, //optional
                       number: true
@@ -104,28 +111,34 @@
                   },
                   offerHA: {
                     label: 'label.offer.ha',
+                    docID: 'helpComputeOfferingHA',
                     isBoolean: true,
                     isChecked: false
                   },
                   storageTags: {
-                    label: 'label.storage.tags'
+                    label: 'label.storage.tags',
+                    docID: 'helpComputeOfferingStorageType'
                   },
                   hostTags: {
-                    label: 'label.host.tags'
+                    label: 'label.host.tags',
+                    docID: 'helpComputeOfferingHostTags'
                   },
                   cpuCap: {
                     label: 'label.CPU.cap',
                     isBoolean: true,
-                    isChecked: false
+                    isChecked: false,
+                    docID: 'helpComputeOfferingCPUCap'
                   },
                   isPublic: {
                     label: 'label.public',
                     isBoolean: true,
                     isReverse: true,
-                    isChecked: true
+                    isChecked: true,
+                    docID: 'helpComputeOfferingPublic'
                   },
                   domainId: {
                     label: 'label.domain',
+                    docID: 'helpComputeOfferingDomain',
                     dependsOn: 'isPublic',
                     select: function(args) {		
                       $.ajax({
@@ -383,14 +396,17 @@
                 fields: {
                   name: {
                     label: 'label.name',
-                    validation: { required: true }
+                    validation: { required: true },
+                    docID: 'helpSystemOfferingName'
                   },
                   description: {
                     label: 'label.description',
-                    validation: { required: true }
+                    validation: { required: true },
+                    docID: 'helpSystemOfferingDescription'
                   },																		
 									systemvmtype: {
                     label: 'label.system.vm.type',
+                    docID: 'helpSystemOfferingVMType',
                     select: function(args) {
                       var items = [];											
                       items.push({id: 'domainrouter', description: dictionary['label.domain.router']}); 
@@ -401,6 +417,7 @@
                   },									
                   storageType: {
                     label: 'label.storage.type',
+                    docID: 'helpSystemOfferingStorageType',
                     select: function(args) {
                       var items = [];
                       items.push({id: 'shared', description: 'shared'});
@@ -410,6 +427,7 @@
                   },
                   cpuNumber: {
                     label: 'label.num.cpu.cores',
+                    docID: 'helpSystemOfferingCPUCores',
                     validation: {
                       required: true,
                       number: true
@@ -417,6 +435,7 @@
                   },
                   cpuSpeed: {
                     label: 'label.cpu.mhz',
+                    docID: 'helpSystemOfferingCPUMHz',
                     validation: {
                       required: true,
                       number: true
@@ -424,6 +443,7 @@
                   },
                   memory: {
                     label: 'label.memory.mb',
+                    docID: 'helpSystemOfferingMemory',
                     validation: {
                       required: true,
                       number: true
@@ -431,6 +451,7 @@
                   },
                   networkRate: {
                     label: 'label.network.rate',
+                    docID: 'helpSystemOfferingNetworkRate',
                     validation: {
                       required: false, //optional
                       number: true
@@ -438,25 +459,30 @@
                   },
                   offerHA: {
                     label: 'label.offer.ha',
+                    docID: 'helpSystemOfferingHA',
                     isBoolean: true,
                     isChecked: false
                   },
                   storageTags: {
-                    label: 'label.storage.tags'
+                    label: 'label.storage.tags',
+                    docID: 'helpSystemOfferingStorageTags'
                   },
                   hostTags: {
-                    label: 'label.host.tags'
+                    label: 'label.host.tags',
+                    docID: 'helpSystemOfferingHostTags'
                   },
                   cpuCap: {
                     label: 'label.CPU.cap',
                     isBoolean: true,
-                    isChecked: false
+                    isChecked: false,
+                    docID: 'helpSystemOfferingCPUCap'
                   },
                   isPublic: {
                     label: 'label.public',
                     isBoolean: true,
                     isReverse: true,
-                    isChecked: true
+                    isChecked: true,
+                    docID: 'helpSystemOfferingPublic'
                   },
                   domainId: {
                     label: 'label.domain',
@@ -768,14 +794,17 @@
                 fields: {
                   name: {
                     label: 'label.name',
+                    docID: 'helpDiskOfferingName',
                     validation: { required: true }
                   },
                   description: {
                     label: 'label.description',
+                    docID: 'helpDiskOfferingDescription',
                     validation: { required: true }
                   },
                   storageType: {
                     label: 'label.storage.type',
+                    docID: 'helpDiskOfferingStorageType',
                     select: function(args) {
                       var items = [];
                       items.push({id: 'shared', description: 'shared'});
@@ -785,23 +814,27 @@
                   },
                   isCustomized: {
                     label: 'label.custom.disk.size',
+                    docID: 'helpDiskOfferingCustomDiskSize',
                     isBoolean: true,
                     isReverse: true,
                     isChecked: false
                   },
                   disksize: {
                     label: 'label.disk.size.gb',
+                    docID: 'helpDiskOfferingDiskSize',
                     dependsOn: 'isCustomized',
                     validation: { required: true, number: true }
                   },
                   tags: {
-                    label: 'label.storage.tags'
+                    label: 'label.storage.tags',
+                    docID: 'helpDiskOfferingStorageTags'
                   },
                   isPublic: {
                     label: 'label.public',
                     isBoolean: true,
                     isReverse: true,
-                    isChecked: true
+                    isChecked: true,
+                    docID: 'helpDiskOfferingPublic'
                   },
                   domainId: {
                     label: 'label.domain',
@@ -1247,11 +1280,11 @@
 									args.$form.change();
 								},				
                 fields: {
-                  name: { label: 'label.name', validation: { required: true } },
+                  name: { label: 'label.name', validation: { required: true }, docID: 'helpNetworkOfferingName' },
 
                   displayText: { label: 'label.description', validation: { required: true } },
 
-                  networkRate: { label: 'label.network.rate' },
+                  networkRate: { label: 'label.network.rate.megabytes', docID: 'helpNetworkOfferingNetworkRate' },
 
 									/*
                   trafficType: {
@@ -1268,6 +1301,7 @@
 
                   guestIpType: {
                     label: 'label.guest.type',
+                    docID: 'helpNetworkOfferingGuestType',
                     select: function(args) {
                       args.response.success({
                         data: [
@@ -1289,7 +1323,7 @@
                     }
                   },
 
-                  specifyVlan: { label: 'label.specify.vlan', isBoolean: true },
+                  specifyVlan: { label: 'label.specify.vlan', isBoolean: true, docID: 'helpNetworkOfferingSpecifyVLAN' },
 
                   useVpc: {
                     label: 'VPC',

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/docs.js
----------------------------------------------------------------------
diff --git a/ui/scripts/docs.js b/ui/scripts/docs.js
new file mode 100755
index 0000000..277bebe
--- /dev/null
+++ b/ui/scripts/docs.js
@@ -0,0 +1,748 @@
+// Copyright 2012 Citrix Systems, Inc. Licensed under the
+// Apache License, Version 2.0 (the "License"); you may not use this
+// file except in compliance with the License.  Citrix Systems, Inc.
+// reserves all rights not expressly granted by the License.
+// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Automatically generated by addcopyright.py at 04/03/2012
+
+
+cloudStack.docs = {
+  // Add account
+  helpAccountUsername: {
+  desc: 'Any desired login ID. Must be unique in the current domain. The same username can exist in other domains, including sub-domains.',
+    externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountPassword: {
+  desc: 'Any desired password',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountConfirmPassword: {
+  desc: 'Type the same password again',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountEmail: {
+  desc: 'The account\'s email address',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountFirstName: {
+  desc: 'The first name, also known as the given name, of a person; or the first part of the entity represented by the account, such as a customer or department',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountLastName: {
+  desc: 'The last name, also known as the family name, of a person; or the second part of the name of a customer or department',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountDomain: {
+  desc: 'Domain in which the account is to be created',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountAccount: {
+  desc: 'Multiple users can exist in an account. Set the parent account name here.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountType: {
+  desc: 'Root admin can access all resources. Domain admin can access the domain\'s users, but not physical servers. User sees only their own resources, such as VMs.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountTimezone: {
+  desc: 'Set the time zone that corresponds to the account\'s locale',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpAccountNetworkDomain: {
+  desc: 'If you want to assign a special domain name to the account\'s guest VM network, specify the DNS suffix',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add cluster
+  helpClusterZone: {
+  desc: 'The zone in which you want to create the cluster',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpClusterHypervisor: {
+  desc: 'The type of hypervisor software that runs on the hosts in this cluster. All hosts in a cluster run the same hypervisor.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpClusterPod: {
+  desc: 'The pod in which you want to create the cluster',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpClusterName: {
+  desc: 'Any desired cluster name. Used for display only.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpClustervCenterHost: {
+	  desc: 'The hostname or IP address of the vCenter server',
+	  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpClustervCenterUsername: {
+	  desc: 'ID of a user with all administrative privileges on vCenter',
+	  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpClustervCenterPassword: {
+	  desc: 'Password of the user in Username',
+	  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpClustervCenterDatacenter: {
+	  desc: 'The vCenter datacenter that the cluster is in. For example, cloud.dc.VM',
+	  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add compute offering
+  helpComputeOfferingName: {
+  desc: 'Any desired name for the offering',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingDescription: {
+  desc: 'A short description of the offering that can be displayed to users',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingStorageType: {
+  desc: 'Type of disk for the VM. Local storage is attached to the hypervisor host where the VM is running. Shared storage is accessible via NFS.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingCPUCores: {
+  desc: 'The number of cores which should be allocated to a VM with this offering',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingCPUMHz: {
+  desc: 'The CPU speed of the cores that the VM is allocated. For example, 2000 provides a 2 GHz clock.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingMemory: {
+  desc: 'The amount of memory in megabytes to allocate for the system VM. For example, 2048 provides 2 GB RAM.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingNetworkRate: {
+  desc: 'Allowed data transfer rate in MB per second',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingHA: {
+  desc: 'If yes, the administrator can choose to have the VM be monitored and as highly available as possible',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingStorageTags: {
+  desc: 'Comma-separated list of attributes that should be associated with the primary storage used by the VM. For example "ssd,blue".',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingHostTags: {
+  desc: 'Any tags that you use to organize your hosts',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingCPUCap: {
+  desc: 'If yes, the system will limit the level of CPU usage even if spare capacity is available',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingPublic: {
+  desc: 'Yes makes the offering available to all domains. No limits the scope to a subdomain; you will be prompted for the subdomain\'s name.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpComputeOfferingDomain: {
+    desc: 'The domain to associate this compute offering with'
+  },
+  // Add disk offering
+  helpDiskOfferingName: {
+  desc: 'Any desired name for the offering',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpDiskOfferingDescription: {
+  desc: 'A short description of the offering that can be displayed to users',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpDiskOfferingStorageType: {
+  desc: 'Type of disk for the VM. Local is attached to the hypervisor host where the VM is running. Shared is storage accessible via NFS.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpDiskOfferingCustomDiskSize: {
+  desc: 'If checked, the user can set their own disk size. If not checked, the root administrator must define a value in Disk Size.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpDiskOfferingDiskSize: {
+  desc: 'Appears only if Custom Disk Size is not selected. Define the volume size in GB.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpDiskOfferingStorageTags: {
+  desc: 'Comma-separated list of attributes that should be associated with the primary storage for this disk. For example "ssd,blue".',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpDiskOfferingPublic: {
+  desc: 'Yes makes the offering available to all domains. No limits the scope to a subdomain; you will be prompted for the subdomain\'s name.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add domain
+  helpDomainName: {
+  desc: 'Any desired name for the new sub-domain. Must be unique within the current domain.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpDomainNetworkDomain: {
+  desc: 'If you want to assign a special domain name to this domain\'s guest VM network, specify the DNS suffix',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add F5
+  helpF5IPAddress: {
+  desc: 'The IP address of the device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5Username: {
+  desc: 'A user ID with valid authentication credentials that provide to access the device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5Password: {
+  desc: 'The password for the user ID provided in Username',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5Type: {
+  desc: 'The type of device that is being added',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5PublicInterface: {
+  desc: 'Interface of device that is configured to be part of the public network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5PrivateInterface: {
+  desc: 'Interface of device that is configured to be part of the private network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5Retries: {
+  desc: 'Number of times to attempt a command on the device before considering the operation failed. Default is 2.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5Mode: {
+  desc: 'Side by side mode is supported for the F5.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5Dedicated: {
+  desc: 'Check this box to dedicate the device to a single account. The value in the Capacity field will be ignored.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpF5Capacity: {
+  desc: 'Number of guest networks/accounts that will share this device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add guest network
+  helpGuestNetworkName: {
+  desc: 'The name of the network. This will be user-visible.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkDisplayText: {
+  desc: 'The description of the network. This will be user-visible.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZone: {
+  desc: 'The name of the zone this network applies to. The administrator must configure the IP range for the guest networks in each zone.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkNetworkOffering: {
+  desc: 'If the administrator has configured multiple network offerings, select the one you want to use for this network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkGateway: {
+  desc: 'The gateway that the guests should use.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkNetmask: {
+  desc: 'The netmask in use on the subnet the guests will use.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add guest network from zone
+  helpGuestNetworkZoneName: {
+  desc: 'The name of the network. This will be user-visible.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneDescription: {
+  desc: 'The description of the network. This will be user-visible.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneVLANID: {
+  desc: 'The VLAN tag for this network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneScope: {
+  desc: 'Scope',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneNetworkOffering: {
+  desc: 'If the administrator has configured multiple network offerings, select the one you want to use for this network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneGateway: {
+  desc: 'The gateway that the guests should use.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneNetmask: {
+  desc: 'The netmask in use on the subnet the guests will use.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneStartIP: {
+  desc: 'The first IP address to define a range that can be assigned to guests. We strongly recommend the use of multiple NICs.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneEndIP: {
+  desc: 'The final IP address to define a range that can be assigned to guests. We strongly recommend the use of multiple NICs.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpGuestNetworkZoneNetworkDomain: {
+  desc: 'If you want to assign a special domain name to this guest VM network, specify the DNS suffix',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add host
+  helpHostZone: {
+  desc: 'The zone where you want to add the host',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpHostPod: {
+  desc: 'The pod where you want to add the host',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpHostCluster: {
+  desc: 'The cluster where you want to add the host',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpHostName: {
+  desc: 'The DNS name or IP address of the host',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpHostUsername: {
+  desc: 'Usually root',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpHostPassword: {
+  desc: 'The password for the user named in Username. The password was set during hypervisor installation on the host.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpHostTags: {
+  desc: 'Any labels that you use to categorize hosts for ease of maintenance or to enable HA.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add Netscaler
+  helpNetScalerIPAddress: {
+  desc: 'The IP address of the device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerUsername: {
+  desc: 'A user ID with valid authentication credentials that provide to access the device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerPassword: {
+  desc: 'The password for the user ID provided in Username',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerType: {
+  desc: 'The type of device that is being added',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerPublicInterface: {
+  desc: 'Interface of device that is configured to be part of the public network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerPrivateInterface: {
+  desc: 'Interface of device that is configured to be part of the private network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerRetries: {
+  desc: 'Number of times to attempt a command on the device before considering the operation failed. Default is 2.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerDedicated: {
+  desc: 'Check this box to dedicate the device to a single account. The value in the Capacity field will be ignored.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetScalerCapacity: {
+  desc: 'Number of guest networks/accounts that will share this device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add network offering
+  helpNetworkOfferingName: {
+  desc: 'Any desired name for the network offering',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetworkOfferingNetworkRate: {
+  desc: 'Allowed data transfer rate in MB per second',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetworkOfferingTrafficType: {
+  desc: 'The type of network traffic that will be carried on the network',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetworkOfferingGuestType: {
+  desc: 'Choose whether the guest network is isolated or shared.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpNetworkOfferingSpecifyVLAN: {
+  desc: '(Isolated guest networks only) Indicate whether a VLAN should be specified when this offering is used',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add pod
+  helpPodZone: {
+  desc: 'The zone where you want to add the pod',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPodName: {
+  desc: 'Set a name for the pod',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPodGateway: {
+  desc: 'The gateway for the hosts in the pod',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPodNetmask: {
+  desc: 'The network prefix that defines the pod\'s subnet. Use CIDR notation.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPodStartIP: {
+  desc: 'The first IP address to define a range in the management network that is used to manage various system VMs',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPodEndIP: {
+  desc: 'The last IP address to define a range in the management network that is used to manage various system VMs',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add primary storage
+  helpPrimaryStorageZone: {
+  desc: 'The zone in which you want to create the primary storage',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStoragePod: {
+  desc: 'The pod in which you want to create the primary storage',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageCluster: {
+  desc: 'The cluster in which you want to create the primary storage',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageName: {
+  desc: 'The name of the storage device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageProtocol: {
+  desc: 'For XenServer, choose NFS, iSCSI, or PreSetup. For KVM, choose NFS or SharedMountPoint. For vSphere, choose VMFS (iSCSI or FiberChannel) or NFS.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageServer: {
+  desc: 'NFS, iSCSI, or PreSetup: IP address or DNS name of the storage device. VMFS: IP address or DNS name of the vCenter server.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStoragePath: {
+  desc: 'NFS: exported path from the server. VMFS: /datacenter name/datastore name. SharedMountPoint: path where primary storage is mounted, such as "/mnt/primary"',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageSRNameLabel: {
+  desc: 'The name-label of the SR that has been set up independently of the cloud management system',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageTargetIQN: {
+  desc: 'In iSCSI, this is the IQN of the target. For example, iqn.1986-03.com.sun:02:01ec9bb549-1271378984',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageLun: {
+  desc: 'In iSCSI, this is the LUN number. For example, 3.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpPrimaryStorageTags: {
+  desc: 'Comma-separated list of tags for this storage device. Must be the same set or a superset of the tags on your disk offerings.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add secondary storage
+  helpSecondaryStorageZone: {
+  desc: 'The zone in which you want to create the secondary storage',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSecondaryStorageNFSServer: {
+  desc: 'The IP address of the server',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSecondaryStoragePath: {
+  desc: 'The exported path from the server',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add SRX
+  helpSRXIPAddress: {
+  desc: 'The IP address of the device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXUsername: {
+  desc: 'A user ID with valid authentication credentials that provide to access the device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXPassword: {
+  desc: 'The password for the user ID provided in Username',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXType: {
+  desc: 'The type of device that is being added',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXPublicInterface: {
+  desc: 'Interface of device that is configured to be part of the public network. For example, ge-0/0/2',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXPrivateInterface: {
+  desc: 'Interface of device that is configured to be part of the private network. For example, ge-0/0/1',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXUsageInterface: {
+  desc: 'Interface used to meter traffic. If you don\'t want to use the public interface, specify a different interface name here.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXRetries: {
+  desc: 'Number of times to attempt a command on the device before considering the operation failed. Default is 2.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXTimeout: {
+  desc: 'The time to wait for a command on the SRX before considering it failed. Default is 300 seconds.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXMode: {
+  desc: 'Side by side mode is supported for the SRX.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXPublicNetwork: {
+  desc: 'The name of the public network on the SRX. For example, trust.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXPrivateNetwork: {
+  desc: 'The name of the private network on the SRX. For example, untrust.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXDedicated: {
+  desc: 'Check this box to dedicate the device to a single account. The value in the Capacity field will be ignored.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSRXCapacity: {
+  desc: 'Number of guest networks/accounts that will share this device',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add system service offering
+  helpSystemOfferingName: {
+  desc: 'Any desired name for the offering',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingDescription: {
+  desc: 'A short description of the offering that can be displayed to the root administrator',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingVMType: {
+  desc: 'The type of system VM that is being offered',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingStorageType: {
+  desc: 'Type of disk for the system VM. Local storage is attached to the host where the system VM is running. Shared storage is accessible via NFS.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingCPUCores: {
+  desc: 'The number of cores which should be allocated to a system VM with this offering',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingCPUMHz: {
+  desc: 'The CPU speed of the cores that the system VM is allocated. For example, 2000 would provide for a 2 GHz clock.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingMemory: {
+  desc: 'The amount of memory in megabytes to allocate for the system VM. For example, 2048 provides 2 GB RAM.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingNetworkRate: {
+  desc: 'Allowed data transfer rate in MB per second',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingHA: {
+  desc: 'If yes, the administrator can choose to have the system VM be monitored and as highly available as possible',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingStorageTags: {
+  desc: 'Comma-separated list of attributes that should be associated with the primary storage used by the system VM. For example "ssd,blue".',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingHostTags: {
+  desc: 'Any tags that you use to organize your hosts',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingCPUCap: {
+  desc: 'If yes, the system will limit the level of CPU usage even if spare capacity is available',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpSystemOfferingPublic: {
+  desc: 'Yes makes the offering available to all domains. No limits the scope to a subdomain; you will be prompted for the subdomain\'s name.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add tier
+  helpTierName: {
+  desc: 'A unique name for the tier',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpTierNetworkOffering: {
+  desc: 'If the administrator has configured multiple network offerings, select the one you want to use for this tier',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpTierGateway: {
+  desc: 'The gateway for the tier. Must be in the Super CIDR range of the VPC and not overlapping the CIDR of any other tier in this VPC.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpTierNetmask: {
+  desc: 'Netmask for the tier. For example, with VPC CIDR of 10.0.0.0/16 and network tier CIDR of 10.0.1.0/24, gateway is 10.0.1.1 and netmask is 255.255.255.0',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add user
+  helpUserUsername: {
+  desc: 'Any desired user ID. Must be unique in the current domain. The same username can exist in other domains, including sub-domains.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUserPassword: {
+  desc: 'Any desired user password',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUserConfirmPassword: {
+  desc: 'Type the same password again',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUserEmail: {
+  desc: 'The user\'s email address',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUserFirstName: {
+  desc: 'The user\'s first name, also known as the given name',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUserLastName: {
+  desc: 'The user\'s last name, also known as the family name',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUserTimezone: {
+  desc: 'Set the time zone that corresponds to the user\'s locale',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add volume
+  helpVolumeName: {
+    desc: 'Give the volume a unique name so you can find it later.',
+    externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVolumeAvailabilityZone: {
+    desc: 'Where do you want the storage to reside? This should be close to the VM that will use the volume.',
+    externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVolumeDiskOffering: {
+    desc: 'Choose the characteristics of the storage.',
+    externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add VPC
+  helpVPCName: {
+  desc: 'A name for the new VPC',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCDescription: {
+  desc: 'Display text about the VPC',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCZone: {
+  desc: 'Zone where you want the VPC to be available',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCSuperCIDR: {
+  desc: 'CIDR range for all the tiers within a VPC. Each tier\'s CIDR must be within the Super CIDR.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCDomain: {
+  desc: 'If you want to assign a special domain name to this VPC\'s guest VM network, specify the DNS suffix',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Add VPC gateway
+  helpVPCGatewayPhysicalNetwork: {
+  desc: 'Name of a physical network that has been created in the zone',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCGatewayVLAN: {
+  desc: 'The VLAN associated with the VPC gateway',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCGatewayIP: {
+  desc: 'The IP address associated with the VPC gateway',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCGatewayGateway: {
+  desc: 'The gateway through which the traffic is routed to and from the VPC',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpVPCGatewayNetmask: {
+  desc: 'The netmask associated with the VPC gateway',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Copy template
+  helpCopyTemplateDestination: {
+  desc: 'The zone to which you want to copy the template',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Register template
+  helpRegisterTemplate: {
+  desc: '',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Register template
+  helpRegisterTemplateName: {
+  desc: 'A unique name for the template. This will be visible to users, so choose something descriptive.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateDescription: {
+  desc: 'Display text describing the template. This will be visible to users, so choose something descriptive.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateURL: {
+  desc: 'The Management Server will download the file from the specified URL, such as http://my.web.server/filename.vhd.gz',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateZone: {
+  desc: 'Choose the zone where you want the template to be available, or All Zones to make it available throughout the cloud',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateHypervisor: {
+  desc: 'The hypervisor software from which this template is being imported; this determines the value of Format',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateFormat: {
+  desc: 'The data format of the template upload file',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateOSType: {
+  desc: 'Operating system of the VM represented by the template. If the OS type of the template is not listed, choose Other.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateExtractable: {
+  desc: 'Whether the template is extractable or not',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplatePasswordEnabled: {
+  desc: 'Check this if the template has the password change script installed.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplatePublic: {
+  desc: 'Check this to make the template accessible to all users. The template will appear in the Community Templates list.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpRegisterTemplateFeatured: {
+  desc: 'Check this to make the template more prominent for users. The template will appear in the Featured Templates list.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  // Upload volume
+  helpUploadVolumeName: {
+  desc: 'A unique name for the volume. This will be visible to users, so choose something descriptive.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUploadVolumeZone: {
+  desc: 'Choose the zone where you want to store the volume. VMs running on hosts in this zone can attach the volume.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUploadVolumeFormat: {
+  desc: 'The disk image format of the volume. XenServer is VHD, VMware is OVA, and KVM is QCOW2.',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUploadVolumeURL: {
+  desc: 'Secure HTTP or HTTPS URL that can be used to get the disk. File type must match Format. For example, if Format is VHD, http://yourFileServerIP/userdata/myDataDisk.vhd',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  },
+  helpUploadVolumeChecksum: {
+  desc: 'Use the hash that you created at the start of the volume upload procedure',
+  externalLink: 'http://docs.citrix.com/cloudplatform'
+  }
+};

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/domains.js
----------------------------------------------------------------------
diff --git a/ui/scripts/domains.js b/ui/scripts/domains.js
index 7249cc4..e663339 100644
--- a/ui/scripts/domains.js
+++ b/ui/scripts/domains.js
@@ -226,10 +226,12 @@
               fields: {
                 name: {
                   label: 'label.name',
+                  docID: 'helpDomainName',
                   validation: { required: true }
                 },
                 networkdomain: {
                   label: 'label.network.domain',
+                  docID: 'helpDomainNetworkDomain',
                   validation: { required: false }
                 }
               }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/network.js
----------------------------------------------------------------------
diff --git a/ui/scripts/network.js b/ui/scripts/network.js
index c445481..d434265 100644
--- a/ui/scripts/network.js
+++ b/ui/scripts/network.js
@@ -253,12 +253,12 @@
                 title: 'label.add.guest.network',
                 desc: 'message.add.guest.network',
                 fields: {
-                  name: { label: 'label.name', validation: { required: true } },
-                  displayText: { label: 'label.display.text', validation: { required: true }},
+                  name: { label: 'label.name', validation: { required: true }, docID: 'helpGuestNetworkName' },
+                  displayText: { label: 'label.display.text', validation: { required: true }, docID: 'helpGuestNetworkDisplayText'},
                   zoneId: {
                     label: 'label.zone',
                     validation: { required: true },
-
+                    docID: 'helpGuestNetworkZone',
 
                     select: function(args) {
                       $.ajax({
@@ -283,7 +283,8 @@
                   networkOfferingId: {
                     label: 'label.network.offering',
                     validation: { required: true },
-										dependsOn: 'zoneId',
+                    dependsOn: 'zoneId',
+                    docID: 'helpGuestNetworkNetworkOffering',
                     select: function(args) {
                       $.ajax({
                         url: createURL('listVPCs'),
@@ -367,8 +368,8 @@
                     }
                   },
 
-                  guestGateway: { label: 'label.guest.gateway' },
-                  guestNetmask: { label: 'label.guest.netmask' },
+                  guestGateway: { label: 'label.guest.gateway', docID: 'helpGuestNetworkGateway' },
+                  guestNetmask: { label: 'label.guest.netmask', docID: 'helpGuestNetworkNetmask' },
                   networkDomain: { label: 'label.network.domain' }
                 }
               },
@@ -3826,16 +3827,19 @@
                   }
                 },
                 fields: {
-                  name: { 
-									  label: 'label.name', 
-										validation: { required: true } 
-									},   
+                  name: {
+                    label: 'label.name',
+                    docID: 'helpVPCName',
+                    validation: { required: true }
+                  },
                   displaytext: {
                     label: 'label.description',
+                    docID: 'helpVPCDescription',
                     validation: { required: true }
                   },
                   zoneid: {
                     label: 'label.zone',
+                    docID: 'helpVPCZone',
                     validation: { required: true },
                     select: function(args) {
                       var data = { listAll: true };
@@ -3861,9 +3865,11 @@
                   },
                   cidr: {
                     label: 'label.super.cidr.for.guest.networks',
+                    docID: 'helpVPCSuperCIDR',
                     validation: { required: true }
                   },
                   networkdomain: {
+                    docID: 'helpVPCDomain',
                     label: 'label.DNS.domain.for.guest.networks'
                   }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/storage.js
----------------------------------------------------------------------
diff --git a/ui/scripts/storage.js b/ui/scripts/storage.js
index 5b47b70..fc8f528 100644
--- a/ui/scripts/storage.js
+++ b/ui/scripts/storage.js
@@ -70,11 +70,13 @@
                 desc: 'message.add.volume',
                 fields: {
                   name: {
+                    docID: 'helpVolumeName',
                     label: 'label.name',
                     validation: { required: true }
                   },
                   availabilityZone: {
                     label: 'label.availability.zone',
+                    docID: 'helpVolumeAvailabilityZone',
                     select: function(args) {
                       $.ajax({
                         url: createURL("listZones&available=true"),
@@ -89,6 +91,7 @@
                   },
                   diskOffering: {
                     label: 'label.disk.offering',
+                    docID: 'helpVolumeDiskOffering',
                     select: function(args) {
                       $.ajax({
                         url: createURL("listDiskOfferings"),
@@ -191,10 +194,12 @@
                 fields: {
                   name: {
                     label: 'label.name',
-                    validation: { required: true }
+                    validation: { required: true },
+                    docID: 'helpUploadVolumeName'
                   },
                   availabilityZone: {
                     label: 'label.availability.zone',
+                    docID: 'helpUploadVolumeZone',
                     select: function(args) {
                       $.ajax({
                         url: createURL("listZones&available=true"),
@@ -209,6 +214,7 @@
                   },
                   format: {
 									  label: 'label.format',
+                    docID: 'helpUploadVolumeFormat',
 										select: function(args) {
 										  var items = [];
                       items.push({ id: 'RAW', description: 'RAW' });
@@ -220,9 +226,11 @@
 									},
 									url: {
 									  label: 'label.url',
+                    docID: 'helpUploadVolumeURL',
 										validation: { required: true }
 									},
                   checksum : {
+                    docID: 'helpUploadVolumeChecksum',
                     label: 'label.checksum'
                   }                  
                 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/system.js
----------------------------------------------------------------------
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index 95dc25c..ef172c1 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -1088,19 +1088,23 @@
 
                         fields: {
                           name: {
+                            docID: 'helpGuestNetworkZoneName',
                             label: 'label.name',
                             validation: { required: true }
                           },
                           description: {
                             label: 'label.description',
+                            docID: 'helpGuestNetworkZoneDescription',
                             validation: { required: true }
                           },
                           vlanId: {
-                            label: 'label.vlan.id'
+                            label: 'label.vlan.id',
+                            docID: 'helpGuestNetworkZoneVLANID'
                           },
 
                           scope: {
                             label: 'label.scope',
+                            docID: 'helpGuestNetworkZoneScope',
                             select: function(args) {
                               var array1 = [];
 															array1.push({id: 'zone-wide', description: 'All'});
@@ -1184,7 +1188,9 @@
                               args.response.success({data: items});
                             }
                           },
-                          subdomainaccess: { label: 'label.subdomain.access', isBoolean: true, isHidden: true },
+                          subdomainaccess: {
+                            label: 'label.subdomain.access', isBoolean: true, isHidden: true,
+                          },
                           account: { label: 'label.account' },
 
 													projectId: {
@@ -1209,6 +1215,7 @@
 
                           networkOfferingId: {
                             label: 'label.network.offering',
+                            docID: 'helpGuestNetworkZoneNetworkOffering',
                             dependsOn: 'scope',
                             select: function(args) {
 															$.ajax({
@@ -1349,17 +1356,28 @@
                             }
                           },
 
-                          guestGateway: { label: 'label.guest.gateway' },
-                          guestNetmask: { label: 'label.guest.netmask' },
+                          guestGateway: {
+                            label: 'label.guest.gateway',
+                            docID: 'helpGuestNetworkZoneGateway'
+                          },
+                          guestNetmask: {
+                            label: 'label.guest.netmask',
+                            docID: 'helpGuestNetworkZoneNetmask'
+                          },
                           guestStartIp: { 
 													  label: 'label.guest.start.ip', 
-														validation: { required: true } 
+														validation: { required: true },
+                            docID: 'helpGuestNetworkZoneStartIP'
 													},
                           guestEndIp: { 
 													  label: 'label.guest.end.ip', 
-														validation: { required: true } 
+														validation: { required: true },
+                            docID: 'helpGuestNetworkZoneEndIP'
 													},
-                          networkdomain: { label: 'label.network.domain' }
+                          networkdomain: {
+                            label: 'label.network.domain',
+                            docID: 'helpGuestNetworkZoneNetworkDomain'
+                          }
                         }
                       },
 
@@ -3006,17 +3024,21 @@
 									preFilter: cloudStack.preFilter.addLoadBalancerDevice,	
                   fields: {
                     ip: {
-                      label: 'label.ip.address'
+                      label: 'label.ip.address',
+                      docID: 'helpNetScalerIPAddress'
                     },
                     username: {
-                      label: 'label.username'
+                      label: 'label.username',
+                      docID: 'helpNetScalerUsername'
                     },
                     password: {
                       label: 'label.password',
-                      isPassword: true
+                      isPassword: true,
+                      docID: 'helpNetScalerPassword'
                     },
                     networkdevicetype: {
                       label: 'label.type',
+                      docID: 'helpNetScalerType',
                       select: function(args) {
                         var items = [];
                         items.push({id: "NetscalerMPXLoadBalancer", description: "NetScaler MPX LoadBalancer"});
@@ -3026,14 +3048,17 @@
                       }
                     },
                     publicinterface: {
-                      label: 'label.public.interface'
+                      label: 'label.public.interface',
+                      docID: 'helpNetScalerPublicInterface'
                     },
                     privateinterface: {
-                      label: 'label.private.interface'
+                      label: 'label.private.interface',
+                      docID: 'helpNetScalerPrivateInterface'
                     },
                     numretries: {
                       label: 'label.numretries',
-                      defaultValue: '2'
+                      defaultValue: '2',
+                      docID: 'helpNetScalerRetries'
                     },
                     // inline: {
                     //   label: 'Mode',
@@ -3047,11 +3072,13 @@
                     dedicated: {
                       label: 'label.dedicated',
                       isBoolean: true,
-                      isChecked: false
+                      isChecked: false,
+                      docID: 'helpNetScalerDedicated'
                     },
 										capacity: {
                       label: 'label.capacity',											
-                      validation: { required: false, number: true }
+                      validation: { required: false, number: true },
+                      docID: 'helpNetScalerCapacity'
                     }
                   }
                 },
@@ -3241,17 +3268,21 @@
 									preFilter: cloudStack.preFilter.addLoadBalancerDevice,	
                   fields: {
                     ip: {
-                      label: 'label.ip.address'
+                      label: 'label.ip.address',
+                      docID: 'helpF5IPAddress'
                     },
                     username: {
-                      label: 'label.username'
+                      label: 'label.username',
+                      docID: 'helpF5Username'
                     },
                     password: {
                       label: 'label.password',
+                      docID: 'helpF5Password',
                       isPassword: true
                     },
                     networkdevicetype: {
                       label: 'label.type',
+                      docID: 'helpF5Type',
                       select: function(args) {
                         var items = [];
                         items.push({id: "F5BigIpLoadBalancer", description: "F5 Big Ip Load Balancer"});
@@ -3259,19 +3290,23 @@
                       }
                     },
                     publicinterface: {
-                      label: 'label.public.interface'
+                      label: 'label.public.interface',
+                      docID: 'helpF5PublicInterface'
                     },
                     privateinterface: {
-                      label: 'label.private.interface'
+                      label: 'label.private.interface',
+                      docID: 'helpF5PrivateInterface'
                     },
                     numretries: {
                       label: 'label.numretries',
+                      docID: 'helpF5Retries',
                       defaultValue: '2'
                     },
 										//Inline Mode has been moved from Add F5 Device to Create Network Offering (both backend and UI)
 										/*
                     inline: {
                       label: 'Mode',
+                      docID: 'helpF5Mode',
                       select: function(args) {
                         var items = [];
                         items.push({id: "false", description: "side by side"});
@@ -3282,11 +3317,13 @@
                     */										
                     dedicated: {
                       label: 'label.dedicated',
+                      docID: 'helpF5Dedicated',
                       isBoolean: true,
                       isChecked: false
                     },
 										capacity: {
                       label: 'label.capacity',
+                      docID: 'helpF5Capacity',
                       validation: { required: false, number: true }
                     }
                   }
@@ -3476,17 +3513,21 @@
                   title: 'label.add.SRX.device',
                   fields: {
                     ip: {
-                      label: 'label.ip.address'
+                      label: 'label.ip.address',
+                      docID: 'helpSRXIPAddress'
                     },
                     username: {
-                      label: 'label.username'
+                      label: 'label.username',
+                      docID: 'helpSRXUsername'
                     },
                     password: {
                       label: 'label.password',
-                      isPassword: true
+                      isPassword: true,
+                      docID: 'helpSRXPassword'
                     },
                     networkdevicetype: {
                       label: 'label.type',
+                      docID: 'helpSRXType',
                       select: function(args) {
                         var items = [];
                         items.push({id: "JuniperSRXFirewall", description: "Juniper SRX Firewall"});
@@ -3494,24 +3535,30 @@
                       }
                     },
                     publicinterface: {
-                      label: 'label.public.interface'
+                      label: 'label.public.interface',
+                      docID: 'helpSRXPublicInterface'
                     },
                     privateinterface: {
-                      label: 'label.private.interface'
+                      label: 'label.private.interface',
+                      docID: 'helpSRXPrivateInterface'
                     },
                     usageinterface: {
-                      label: 'Usage interface'
+                      label: 'Usage interface',
+                      docID: 'helpSRXUsageInterface'
                     },
                     numretries: {
                       label: 'label.numretries',
-                      defaultValue: '2'
+                      defaultValue: '2',
+                      docID: 'helpSRXRetries'
                     },
                     timeout: {
                       label: 'label.timeout',
-                      defaultValue: '300'
+                      defaultValue: '300',
+                      docID: 'helpSRXTimeout'
                     },
                     inline: {
                       label: 'Mode',
+                      docID: 'helpSRXMode',
                       select: function(args) {
                         var items = [];
                         items.push({id: "false", description: "side by side"});
@@ -3521,20 +3568,24 @@
                     },
                     publicnetwork: {
                       label: 'label.public.network',
-                      defaultValue: 'untrusted'
+                      defaultValue: 'untrusted',
+                      docID: 'helpSRXPublicNetwork'
                     },
                     privatenetwork: {
                       label: 'label.private.network',
-                      defaultValue: 'trusted'
+                      defaultValue: 'trusted',
+                      docID: 'helpSRXPrivateNetwork'
                     },
                     capacity: {
                       label: 'label.capacity',
-                      validation: { required: false, number: true }
+                      validation: { required: false, number: true },
+                      docID: 'helpSRXCapacity'
                     },
                     dedicated: {
                       label: 'label.dedicated',
                       isBoolean: true,
-                      isChecked: false
+                      isChecked: false,
+                      docID: 'helpSRXDedicated'
                     }
                   }
                 },
@@ -6776,6 +6827,7 @@
                 fields: {
                   zoneid: {
                     label: 'Zone',
+                    docID: 'helpPodZone',
                     validation: { required: true },
                     select: function(args) {
                       var data = args.context.zones ?
@@ -6801,22 +6853,27 @@
                   },
                   podname: {
                     label: 'label.pod.name',
+                    docID: 'helpPodName',
                     validation: { required: true }
                   },
                   reservedSystemGateway: {
                     label: 'label.reserved.system.gateway',
+                    docID: 'helpPodGateway',
                     validation: { required: true }
                   },
                   reservedSystemNetmask: {
                     label: 'label.reserved.system.netmask',
+                    docID: 'helpPodNetmask',
                     validation: { required: true }
                   },
                   reservedSystemStartIp: {
                     label: 'label.start.reserved.system.IP',
+                    docID: 'helpPodStartIP',
                     validation: { required: true }
                   },
                   reservedSystemEndIp: {
                     label: 'label.end.reserved.system.IP',
+                    docID: 'helpPodEndIP',
                     validation: { required: false }
                   }
                 }
@@ -7131,6 +7188,7 @@
                 fields: {
                   zoneid: {
                     label: 'Zone',
+                    docID: 'helpClusterZone',
                     validation: { required: true },
                     select: function(args) {
                       var data = args.context.zones ?
@@ -7156,6 +7214,7 @@
                   },
                   hypervisor: {
                     label: 'label.hypervisor',
+                    docID: 'helpClusterHypervisor',
                     select: function(args) {
                       var vSwitchEnabled = false;
 
@@ -7224,6 +7283,7 @@
                   },
                   podId: {
                     label: 'label.pod',
+                    docID: 'helpClusterPod',
                     dependsOn: 'zoneid',
                     select: function(args) {
                       $.ajax({
@@ -7246,25 +7306,30 @@
                   },
                   name: {
                     label: 'label.cluster.name',
+                    docID: 'helpClusterName',
                     validation: { required: true }
                   },
 
                   //hypervisor==VMWare begins here
                   vCenterHost: {
                     label: 'label.vcenter.host',
+                    docID: 'helpClustervCenterHost',
                     validation: { required: true }
                   },
                   vCenterUsername: {
                     label: 'label.vcenter.username',
+                    docID: 'helpClustervCenterUsername',
                     validation: { required: true }
                   },
                   vCenterPassword: {
                     label: 'label.vcenter.password',
+                    docID: 'helpClustervCenterPassword',
                     validation: { required: true },
                     isPassword: true
                   },
                   vCenterDatacenter: {
                     label: 'label.vcenter.datacenter',
+                    docID: 'helpClustervCenterDatacenter',
                     validation: { required: true }
                   },
                   vsmipaddress: {
@@ -7797,6 +7862,7 @@
                 title: 'label.add.host',
                 fields: {
                   zoneid: {
+                    docID: 'helpHostZone',
                     label: 'Zone',
                     validation: { required: true },
                     select: function(args) {
@@ -7825,6 +7891,7 @@
                   //always appear (begin)
                   podId: {
                     label: 'label.pod',
+                    docID: 'helpHostPod',
                     validation: { required: true },
                     dependsOn: 'zoneid',
                     select: function(args) {
@@ -7849,6 +7916,7 @@
 
                   clusterId: {
                     label: 'label.cluster',
+                    docID: 'helpHostCluster',
                     validation: { required: true },
                     dependsOn: 'podId',
                     select: function(args) {
@@ -7973,18 +8041,21 @@
                   //input_group="general" starts here
                   hostname: {
                     label: 'label.host.name',
+                    docID: 'helpHostName',
                     validation: { required: true },
                     isHidden: true
                   },
 
                   username: {
                     label: 'label.username',
+                    docID: 'helpHostUsername',
                     validation: { required: true },
                     isHidden: true
                   },
 
                   password: {
                     label: 'label.password',
+                    docID: 'helpHostPassword',
                     validation: { required: true },
                     isHidden: true,
                     isPassword: true
@@ -8039,6 +8110,7 @@
                   //always appear (begin)
                   hosttags: {
                     label: 'label.host.tags',
+                    docID: 'helpHostTags',
                     validation: { required: false }
                   }
                   //always appear (end)
@@ -8481,6 +8553,7 @@
                 fields: {
                   zoneid: {
                     label: 'Zone',
+                    docID: 'helpPrimaryStorageZone',
                     validation: { required: true },
                     select: function(args) {
                       var data = args.context.zones ?
@@ -8507,6 +8580,7 @@
                   podId: {
                     label: 'label.pod',
                     dependsOn: 'zoneid',
+                    docID: 'helpPrimaryStoragePod',
                     validation: { required: true },
                     select: function(args) {
                       $.ajax({
@@ -8527,6 +8601,7 @@
 
                   clusterId: {
                     label: 'label.cluster',
+                    docID: 'helpPrimaryStorageCluster',
                     validation: { required: true },
                     dependsOn: 'podId',
                     select: function(args) {
@@ -8551,11 +8626,13 @@
 
                   name: {
                     label: 'label.name',
+                    docID: 'helpPrimaryStorageName',
                     validation: { required: true }
                   },
 
                   protocol: {
                     label: 'label.protocol',
+                    docID: 'helpPrimaryStorageProtocol',
                     validation: { required: true },
                     dependsOn: 'clusterId',
                     select: function(args) {
@@ -8808,6 +8885,7 @@
 
                   server: {
                     label: 'label.server',
+                    docID: 'helpPrimaryStorageServer',
                     validation: { required: true },
                     isHidden: true
                   },
@@ -8815,6 +8893,7 @@
                   //nfs
                   path: {
                     label: 'label.path',
+                    docID: 'helpPrimaryStoragePath',
                     validation: { required: true },
                     isHidden: true
                   },
@@ -8822,11 +8901,13 @@
                   //iscsi
                   iqn: {
                     label: 'label.target.iqn',
+                    docID: 'helpPrimaryStorageTargetIQN',
                     validation: { required: true },
                     isHidden: true
                   },
                   lun: {
                     label: 'label.LUN.number',
+                    docID: 'helpPrimaryStorageLun',
                     validation: { required: true },
                     isHidden: true
                   },
@@ -8875,6 +8956,7 @@
                   //always appear (begin)
                   storageTags: {
                     label: 'label.storage.tags',
+                    docID: 'helpPrimaryStorageTags',
                     validation: { required: false }
                   }
                   //always appear (end)
@@ -9240,6 +9322,7 @@
                 fields: {
                   zoneid: {
                     label: 'Zone',
+                    docID: 'helpSecondaryStorageZone',
                     validation: { required: true },
                     select: function(args) {
                       var data = args.context.zones ?
@@ -9265,10 +9348,12 @@
                   },
                   nfsServer: {
                     label: 'label.nfs.server',
+                    docID: 'helpSecondaryStorageNFSServer',
                     validation: { required: true }
                   },
                   path: {
                     label: 'label.path',
+                    docID: 'helpSecondaryStoragePath',
                     validation: { required: true }
                   }
                 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/templates.js
----------------------------------------------------------------------
diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js
index a9fb371..80268fd 100644
--- a/ui/scripts/templates.js
+++ b/ui/scripts/templates.js
@@ -88,23 +88,28 @@
                 }
               },
               createForm: {
-                title: 'label.action.register.template',                
+                title: 'label.action.register.template',
+                docID:'helpNetworkOfferingName',                
                 preFilter: cloudStack.preFilter.createTemplate,
                 fields: {
                   name: {
                     label: 'label.name',
+                    docID:'helpRegisterTemplateName',
                     validation: { required: true }
                   },
                   description: {
                     label: 'label.description',
+                    docID: 'helpRegisterTemplateDescription',
                     validation: { required: true }
                   },
                   url: {
                     label: 'URL',
+                    docID: 'helpRegisterTemplateURL',
                     validation: { required: true }
                   },
                   zone: {
                     label: 'label.zone',
+                    docID: 'helpRegisterTemplateZone',
                     select: function(args) {
                       $.ajax({
                         url: createURL("listZones&available=true"),
@@ -126,6 +131,7 @@
                   },
                   hypervisor: {
                     label: 'label.hypervisor',
+                    docID: 'helpRegisterTemplateHypervisor',
                     dependsOn: 'zone',
                     select: function(args) {
                       if(args.zone == null)
@@ -207,6 +213,7 @@
 
                   format: {
                     label: 'label.format',
+                    docID: 'helpRegisterTemplateFormat',
                     dependsOn: 'hypervisor',
                     select: function(args) {
                       var items = [];
@@ -236,6 +243,7 @@
 
                   osTypeId: {
                     label: 'label.os.type',
+                    docID: 'helpRegisterTemplateOSType',
                     select: function(args) {
                       $.ajax({
                         url: createURL("listOsTypes"),
@@ -251,22 +259,26 @@
 
                   isExtractable: {
                     label: "extractable",
+                    docID: 'helpRegisterTemplateExtractable',
                     isBoolean: true
                   },
 
                   isPasswordEnabled: {
                     label: "label.password.enabled",
+                    docID: 'helpRegisterTemplatePasswordEnabled',
                     isBoolean: true
                   },
 
                   isPublic: {
                     label: "label.public",
+                    docID: 'helpRegisterTemplatePublic',
                     isBoolean: true,
                     isHidden: true
                   },
 
                   isFeatured: {
                     label: "label.featured",
+                    docID: 'helpRegisterTemplateFeatured',
                     isBoolean: true,
                     isHidden: true
                   }
@@ -461,6 +473,7 @@
                   fields: {
                     destinationZoneId: {
                       label: 'label.destination.zone',
+                      docID: 'helpCopyTemplateDestination',
                       validation: { required: true },
                       select: function(args) {
                         $.ajax({

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8bb273de/ui/scripts/ui/dialog.js
----------------------------------------------------------------------
diff --git a/ui/scripts/ui/dialog.js b/ui/scripts/ui/dialog.js
index 3c32eb7..89da8bb 100644
--- a/ui/scripts/ui/dialog.js
+++ b/ui/scripts/ui/dialog.js
@@ -362,10 +362,23 @@
 				else
           $input.data('validation-rules', {});
 
-          var fieldLabel = field.label;
-          var inputId = $input.attr('id') ? $input.attr('id') : fieldLabel.replace(/\./g,'_');
-          $input.attr('id', inputId);
-          $name.find('label').attr('for', inputId);
+        var fieldLabel = field.label;
+        var inputId = $input.attr('id') ? $input.attr('id') : fieldLabel.replace(/\./g,'_');
+        
+        $input.attr('id', inputId);
+        $name.find('label').attr('for', inputId);
+
+        // Tooltip
+        if (field.docID) {
+          $input.toolTip({
+            docID: field.docID,
+            tooltip:'.tooltip-box',
+            mode:'focus'
+          });
+        }
+        /*     $input.blur(function() {
+         console.log('tooltip remove->' + $input.attr('name'));
+         });*/
       });
      
       var getFormValues = function() {
@@ -417,6 +430,7 @@
       return $formContainer.dialog({
         dialogClass: 'create-form',
         closeOnEscape: false,
+        draggable: false,
         width: 400,
         title: _l(args.form.title),
         open: function() {
@@ -432,6 +446,7 @@
               if (!complete($formContainer)) { return false; }
 
               $('div.overlay').remove();
+              $('.tooltip-box').remove();
               $formContainer.remove();
               $(this).dialog('destroy');
 
@@ -445,6 +460,7 @@
             'class': 'cancel',
             click: function() {
               $('div.overlay').remove();
+              $('.tooltip-box').remove();
               $formContainer.remove();
               $(this).dialog('destroy');
 


Mime
View raw message