diff options
author | Kulanthaivel Palanichamy <kulanthaivel@codeaurora.org> | 2014-02-19 15:48:02 -0800 |
---|---|---|
committer | WebTech Code Review <code-review@localhost> | 2014-03-05 14:48:22 -0800 |
commit | 8ccd6721f604ba6f8537faebc8a125c98068d0ba (patch) | |
tree | 5259a90287cdecb987734ca67581df51b963fee2 /assets | |
parent | 9b1e988e881319bc0c4a7642653685781269d866 (diff) | |
download | android_packages_apps_Gello-8ccd6721f604ba6f8537faebc8a125c98068d0ba.tar.gz android_packages_apps_Gello-8ccd6721f604ba6f8537faebc8a125c98068d0ba.tar.bz2 android_packages_apps_Gello-8ccd6721f604ba6f8537faebc8a125c98068d0ba.zip |
Add assets for WML to HTML transformation using XSLT.
Change-Id: I8777f2409217e92b19a33d1afc32ce9ca0b7608e
Diffstat (limited to 'assets')
-rwxr-xr-x | assets/wml/swe_wml.css | 83 | ||||
-rwxr-xr-x | assets/wml/swe_wml.js | 649 | ||||
-rwxr-xr-x | assets/wml/swe_wml.xsl | 542 |
3 files changed, 1274 insertions, 0 deletions
diff --git a/assets/wml/swe_wml.css b/assets/wml/swe_wml.css new file mode 100755 index 00000000..f8e60858 --- /dev/null +++ b/assets/wml/swe_wml.css @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +p { + word-wrap: break-word; +} + +form { + display:inline; + margin-top: 0em; + margin-bottom: 0em; +} + +img { + max-width: 100%; + max-height: 100%; + width: auto; + height: auto; +} + +.wml_card +{ + display:none; +} + +.wml_body +{ + background:#dddddd; + margin:4px; +} + +.wml_card_title +{ + background:#777777; + border-top:2px solid #777777; + border-top-right-radius: 10px; + border-top-left-radius: 10px; + padding:5px; + color:white; + font-weight: bold; +} + +.wml_card_content +{ + border-left:2px solid #777777; + border-right:2px solid #777777; + border-bottom:2px solid #777777; + padding:10px 20px; + background:#ffffff; + border-bottom-right-radius: 10px; + border-bottom-left-radius: 10px; +} + +.wml_onevent +{ + display:none; +} diff --git a/assets/wml/swe_wml.js b/assets/wml/swe_wml.js new file mode 100755 index 00000000..92fa6ee4 --- /dev/null +++ b/assets/wml/swe_wml.js @@ -0,0 +1,649 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +var cardElements; +var currentActiveCard = null; +var defaultActiveCard = null; +// Forward navigation >= 0, backward navigation == -1, unknown navigation == -2 +var currentNavigationType = -2; +var blankRegEx = /^\s*$/; + +var WMLBrowser = { + name: "WMLBrowserContext", + variables: new Object(), + setVar: function (key, value) { + this.variables[key] = value; + }, + getVar: function (key) { + var value = this.variables[key]; + if (value == null) + value = ''; + return value; + }, + newContext: function () { + this.variables = new Object(); + }, +} + +function isBlank(str) { + return (!str || blankRegEx.test(str)); +} + +function isURLHash(str) { + return (!isBlank(str) && str.length > 1 && str.indexOf("#") == 0); +} + +function getIdFromURLHash(hash) { + return hash.substr(1); +} + +window.onhashchange = function() +{ + console.log("window.onhashchange currentNavigationType = " + currentNavigationType); + var newHash = window.location.hash; + if (!isURLHash(newHash)) { + currentActiveCard.style.display = "none"; + defaultActiveCard.style.display = "initial"; + currentActiveCard = defaultActiveCard; + } else { + showCardById(newHash.substr(1)); + } + updateWMLVariables(); + scheduleTimerTaskIfNeeded(currentActiveCard); + handleOnNavigationIntrinsicEvent(); +}; + +window.onload = function() +{ + // Consider all the load/reload on this deck as forward navigation. + currentNavigationType = 1; + var cardHash = window.location.hash; + console.log("window.onload card = " + cardHash); + cardElements = document.getElementsByClassName('wml_card'); + defaultActiveCard = cardElements[0]; + // All the cards are hidden by default. + // Show the active card onload. + if (isURLHash(cardHash)) { + var cardId = cardHash.substr(1); + for(var i=0, l=cardElements.length; i<l; i++) { + var card = cardElements[i]; + if (card.getAttribute("id") == cardId) { + currentActiveCard = card; + currentActiveCard.style.display = "initial"; + break; + } + } + } + if (!currentActiveCard) { + currentActiveCard = defaultActiveCard; + currentActiveCard.style.display = "initial"; + } + replaceVariablesInTextContentBySpan(); + fixTextContentInAnchorTasks(); + initializeSelectElements(); + scheduleTimerTaskIfNeeded(currentActiveCard); + handleOnNavigationIntrinsicEvent(); +}; + +function showCardById(cardId, onload) +{ + if (currentActiveCard && currentActiveCard.getAttribute("id") == cardId) { + // We have nothing to do. + return false; + } + for(var i=0, l=cardElements.length; i<l; i++) { + var card = cardElements[i]; + if (card.getAttribute("id") == cardId) { + currentActiveCard.style.display = "none"; + currentActiveCard = card; + currentActiveCard.style.display = "initial"; + return true; + } + } + return false; +} + +function handleOnNavigationIntrinsicEvent() { + var navigationType = currentNavigationType; + currentNavigationType = -2; + + if (navigationType >= 0) { + executeOnenterforwardTask(); + } else if (navigationType == -1) { + executeOnenterbackwardTask(); + } else { + console.log("WARNING: Cannot determine the navigation event type on this card!"); + } +} + +////////////////////////// WML Variables //////////////////////////////////////// +function replaceVariablesInTextContentBySpan() +{ + var pattern1 = /(\$\(([_a-z]{1}[_a-z0-9]*)([:]{1}((([e]{1})(scape)?)|(([n]{1})(oesc)?)|(([u]{1})(nesc)?)))?\))/gi; + var pattern2 = /(\$([_a-zA-z]{1}[_a-zA-Z0-9]*))/g; + var whitespace = /^\s*$/g; + var replacer = function () { + var name = arguments[2]; + var escape = ""; + if (arguments[12]) + escape = arguments[12]; + else if (arguments[9]) + escape = arguments[9]; + else if (arguments[6]) + escape = arguments[6]; + var wml_variable_span = "\<span\ data\-wml\_name\=\"" + name + "\"\ class\=\"wml_variable\" data\-wml\_escape\=\"" + escape + "\"\>\<\/span\>"; + console.log("replaceVariablesInTextContentBySpan() Found variable " + arguments[0]); + return wml_variable_span; + }; + + var textNodes = []; + var treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false); + while(treeWalker.nextNode()) { + textNodes.push(treeWalker.currentNode); + } + + for(var i=0, l=textNodes.length; i<l; i++) { + var curNode = textNodes[i]; + var text = curNode.nodeValue; + if (!(whitespace.test(text))) { + var replaced = false; + if (pattern1.test(text)) { + text = text.replace(pattern1, replacer); + replaced = true; + } + if (pattern2.test(text)) { + text = text.replace(pattern2, replacer); + replaced = true; + } + if (replaced) { + var mySpan = document.createElement("span"); + mySpan.innerHTML = text; + curNode.parentNode.replaceChild(mySpan, curNode); + } + } + } +} + +////////////////////////// WML Anchor Tasks //////////////////////////////////////// +// TODO: Optimize this brutal code +function fixTextContentInAnchorTasks() +{ + var anchorTasks = document.getElementsByClassName('wml_anchor_task'); + for(var i=0, l=anchorTasks.length; i<l; i++) { + var container; + var taskParent; + var task = anchorTasks[i]; + if (task.dataset.wml_task_type == 'wml_task_go') { + taskParent = task.parentNode; + container = taskParent.parentNode; + } else { + taskParent = task; + container = task.parentNode; + } + container.removeChild(taskParent); + var anchorText = container.innerHTML; + while (container.firstChild) { + container.removeChild(container.firstChild); + } + container.appendChild(taskParent); + console.log("fixTextContentInAnchorTasks: anchorText = " + anchorText); + task.innerHTML = anchorText + task.innerHTML; + } +} + +////////////////////////// WML Timer //////////////////////////////////////// +var activeScheduledTimer = null; +function scheduleTimerTaskIfNeeded(card) +{ + var timerElements = card.getElementsByClassName('wml_timer'); + if (timerElements.length > 0) { + var timeout = timerElements[0].dataset.wml_value; + activeScheduledTimer = window.setTimeout(executeTimerTask, timeout * 100); + console.log("Starting WML timer timeout = " + timeout); + } +} + +function cancelScheduledTimerTask() +{ + if (activeScheduledTimer != null) { + window.clearTimeout(clearTimeout); + activeScheduledTimer = null; + } +} + +////////////////////////////////// <select> & <option> //////////////////////// +var multiSelectSeparator = ";"; +var selectElementsMap = new Object(); +var WMLSelectElements = { + name: "WMLSelectElementsList", + options: new Object(), + setSelectedOptions: function (key, options) { + this.options[key] = options; + }, + getSelectedOptions: function (key) { + return this.options[key]; + }, +}; + +function initializeSelectElements() +{ + var selectElements = document.getElementsByClassName('wml_select'); + for(var i=0, l=selectElements.length; i<l; i++) { + var select = selectElements[i]; + var iname = select.dataset.wml_iname; + // Preselect options based on 'ivalue' + var ivalue = select.dataset.wml_ivalue; + if (!isBlank(ivalue)) { + var options = select.options; + var optionsCount = options.length; + var ivalueList = ivalue.split(multiSelectSeparator); + for(var j=0, ll=ivalueList.length; j<ll; j++) { + var index = parseInt(ivalueList[j], 10); + if (index > 0 && index <= optionsCount) { + options[index-1].selected = 'selected'; + } + } + } + + // Keep a copy of selected options to process 'onpick' events + var options = select.selectedOptions; + var optionsCount = options.length; + var optionsList = []; + for(var j=0; j<optionsCount; j++) { + optionsList.push(options[j]); + } + var uniqueId = "wml_select_" + i; + select.dataset.wml_unique_id = uniqueId; + WMLSelectElements.setSelectedOptions(uniqueId, optionsList); + } +} + +function handleSelectOnchangeEvent(select) +{ + refreshVariableInSelectElement(select); + var options = select.selectedOptions; + var optionsCount = options.length; + var uniqueId = select.dataset.wml_unique_id; + var oldSelectedOptions = WMLSelectElements.getSelectedOptions(uniqueId); + + // Update the copy of selected options before we do anything + var optionsList = []; + for(var j=0; j<optionsCount; j++) { + optionsList.push(options[j]); + } + WMLSelectElements.setSelectedOptions(uniqueId, optionsList); + + // process 'onpick' events if needed + for(var i=0; i<optionsCount; i++) { + var option = options[i]; + var onpick = option.dataset.wml_onpick; + if (!isBlank(onpick)) { + var selectedNewly = true; + for(var j=0; j<oldSelectedOptions.length; j++) { + if (option.isSameNode(oldSelectedOptions[j])) { + selectedNewly = false; + break; + } + } + if (selectedNewly) { + internal_executeOnpickTask(option); + return; + } + } + } +} + +function handleAOnClick(event, node) +{ + var href = node.href; + var search = node.search; + console.log("handleAOnClick <a> href = " + href); + refreshVariablesInControlElements(); + if (!isBlank(search)) { + node.search = substituteVariablesInURL(search); + } else { + node.href = href.split("?")[0]; + } + event.preventDefault(); + navigateToURL(node.href); + return false; +} + +//////////////////////// Variables ///////////////////////// +function substituteVariablesInURL(url) +{ + var pattern = /(((\%24)|(\$))\(([_a-z]{1}[_a-z0-9]*)([:]{1}((([e]{1})(scape)?)|(([n]{1})(oesc)?)|(([u]{1})(nesc)?)))?\))/gi; + var replacer = function () { + var name = arguments[2]; + // TODO: Do the URL escaping here + console.log("substituteVariablesInURL() found variable : " + arguments[0]); + return WMLBrowser.getVar(name); + }; + return url.replace(pattern, replacer); +} + +function substituteVariablesInPostfield(value) +{ + var pattern = /(\$\(([_a-z]{1}[_a-z0-9]*)([:]{1}((([e]{1})(scape)?)|(([n]{1})(oesc)?)|(([u]{1})(nesc)?)))?\))/gi; + var replacer = function () { + var name = arguments[2]; + // TODO: Do the URL escaping here + console.log("substituteVariablesInPostfield() found variable : " + arguments[0]); + return WMLBrowser.getVar(name); + }; + return value.replace(pattern, replacer); +} + +function refreshVariableInSelectElement(select) +{ + var options = select.selectedOptions; + var value = ""; + var ivalue = ""; + var optionsCount = options.length; + if (optionsCount > 0) { + var op = options[0]; + value = op.value; + ivalue = (op.index + 1); + for(var i=1; i<optionsCount; i++) { + op = options[i]; + value += multiSelectSeparator + op.value; + ivalue += multiSelectSeparator + (op.index + 1); + } + } + var name = select.name; + if (!isBlank(name)) { + WMLBrowser.setVar(name, value); + console.log("refreshVariableInSelectElement name = " + name + ", value = " + value); + } + var iname = select.dataset.wml_iname; + if (!isBlank(iname)) { + if (isBlank(ivalue)) { + // An index of zero indicates that no option is selected. + ivalue = "0"; + } + WMLBrowser.setVar(iname, ivalue); + console.log("refreshVariableInSelectElement iname = " + iname + ", ivalue = " + ivalue); + } +} + +function refreshVariablesInControlElements() +{ + var inputElements = currentActiveCard.getElementsByClassName('wml_input'); + for(var i=0, l=inputElements.length; i<l; i++) { + var input = inputElements[i]; + WMLBrowser.setVar(input.name, input.value); + console.log("refreshVariablesInControlElements <input> name = " + input.name + ", value = " + input.value); + } + + var selectElements = currentActiveCard.getElementsByClassName('wml_select'); + for(var i=0, l=selectElements.length; i<l; i++) { + var select = selectElements[i]; + refreshVariableInSelectElement(selectElements[i]); + } +} + +function updateVariableInPostfields(form) +{ + var postfields = currentActiveCard.getElementsByClassName('wml_postfield'); + for(var i=0, l=postfields.length; i<l; i++) { + var input = postfields[i]; + input.value = substituteVariablesInPostfield(input.value); + console.log("updateVariableInPostfields <postfield> name = " + input.name + ", value = " + input.value); + } +} + +/////////////// Navigation //////////////////// +function navigateToURL(url) +{ + console.log("navigateToURL: url = " + url); + cancelScheduledTimerTask(); + currentNavigationType = 1; + window.location = url; +} + +function navigateToCard(card) +{ + console.log("navigateToCard: card = " + card); + cancelScheduledTimerTask(); + currentNavigationType = 1; + window.location.hash = card; +} + +function navigateBack() +{ + console.log("navigateBack: currentState = "); + console.log(window.history.state); + cancelScheduledTimerTask(); + currentNavigationType = -1; + window.history.back(); +} + +////////////// WML Tasks ////////////////////// +//<refresh> + +function updateWMLVariables() +{ + var wmlVariables = currentActiveCard.getElementsByClassName('wml_variable'); + for(var i=0, l=wmlVariables.length; i<l; i++) { + var varElement = wmlVariables[i]; + // Handle the variable escaping option here + var value = WMLBrowser.getVar(varElement.dataset.wml_name); + // TODO: Handle nested variable substitution on 'value' + var conversion = varElement.dataset.wml_escape; + if (!isBlank(value) && !isBlank(conversion)) { + if (conversion == "e" || conversion == "E") { + value = encodeURIComponent(value); + } else if (conversion == "u" || conversion == "U") { + value = decodeURIComponent(value); + } + } + varElement.innerHTML = value; + } +} + +function internal_executeRefreshTask(root) +{ + console.log("internal_executeRefreshTask"); + var setvarElements = root.getElementsByClassName('wml_setvar'); + for(var i=0, l=setvarElements.length; i<l; i++) { + var setvar = setvarElements[i]; + WMLBrowser.setVar(setvar.dataset.wml_name, setvar.dataset.wml_value); + console.log("<setvar> " + setvar.dataset.wml_name + " = " + setvar.dataset.wml_value); + } + updateWMLVariables(); +} + +function executeRefreshTask(event, node) +{ + event.preventDefault(); + internal_executeRefreshTask(node.parentNode); + return false; +} + +// <prev> +function internal_executePrevTask(node) +{ + console.log("internal_executePrevTask"); + internal_executeRefreshTask(node.parentNode); + navigateBack(); +} + +function executePrevTask(event, node) +{ + event.preventDefault(); + internal_executePrevTask(node); + return false; +} +// <option onpick="..."> +function internal_executeOnpickTask(option) +{ + var href = option.dataset.wml_onpick; + console.log("internal_executeOnpickTask href = " + href); + //internal_executeRefreshTask(option.parentNode); + //refreshVariablesInControlElements(); + if (isURLHash(href)) { + navigateToCard(href); + return true; + } + navigateToURL(href); + return true; +} + +//<go> +function internal_executeGoTask(form) +{ + var href = form.dataset.wml_href; + console.log("internal_executeGoTask href = " + href); + internal_executeRefreshTask(form.parentNode); + refreshVariablesInControlElements(); + if (isURLHash(href)) { + navigateToCard(href); + return true; + } + // Substitute variables in <postfield> 'value' attributes before form submission. + updateVariableInPostfields(); + form.submit(); + return false; +} + +function executeGoTask(event, form) +{ + event.preventDefault(); + internal_executeGoTask(form); + return false; +} + +//<onevent> +function executeTimerTask() +{ + console.log("executeTimerTask()"); + activeScheduledTimer = null; + // Handle <card ontimer="..."> event first + var ontimer = currentActiveCard.dataset.wml_ontimer; + if (!isBlank(ontimer)) + { + navigateToURL(ontimer); + return; + } + // Handle <onevent type="timer">... here + var tasks = currentActiveCard.getElementsByClassName('wml_onevent_ontimer'); + if (tasks.length > 0) { + var onevent = tasks[0]; + if (onevent.dataset.wml_task_type == 'wml_task_go') + return internal_executeGoTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_refresh') + return internal_executeRefreshTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_prev') + return internal_executePrevTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_noop') + return; + } + // Handle <template timer="..."> event at the end + var templates = currentActiveCard.getElementsByClassName('wml_template'); + if (templates.length > 0) { + var ontimer = templates[0].dataset.wml_ontimer; + if (!isBlank(ontimer)) + { + navigateToURL(ontimer); + return; + } + } +} + +function executeOnenterforwardTask() +{ + console.log("executeOnenterforwardTask()"); + // Handle <card onenterforward="..."> event first + var onef = currentActiveCard.dataset.wml_onenterforward; + if (!isBlank(onef)) + { + navigateToURL(onef); + return; + } + // Handle <onevent type="onenterforward">... here + var tasks = currentActiveCard.getElementsByClassName('wml_onevent_onenterforward'); + if (tasks.length > 0) { + var onevent = tasks[0]; + if (onevent.dataset.wml_task_type == 'wml_task_go') + return internal_executeGoTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_refresh') + return internal_executeRefreshTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_prev') + return internal_executePrevTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_noop') + return; + } + // Handle <template onenterforward="..."> event at the end + var templates = currentActiveCard.getElementsByClassName('wml_template'); + if (templates.length > 0) { + var onef = templates[0].dataset.wml_onenterforward; + if (!isBlank(onef)) + { + navigateToURL(onef); + return; + } + } +} + +function executeOnenterbackwardTask() +{ + console.log("executeOnenterbackwardTask()"); + // Handle <card onenterforward="..."> event first + var oneb = currentActiveCard.dataset.wml_onenterbackward; + if (!isBlank(oneb)) + { + navigateToURL(oneb); + return; + } + // Handle <onevent type="onenterbackward">... here + var tasks = currentActiveCard.getElementsByClassName('wml_onevent_onenterbackward'); + if (tasks.length > 0) { + var onevent = tasks[0]; + if (onevent.dataset.wml_task_type == 'wml_task_go') + return internal_executeGoTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_refresh') + return internal_executeRefreshTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_prev') + return internal_executePrevTask(onevent); + else if (onevent.dataset.wml_task_type == 'wml_task_noop') + return; + } + // Handle <template onenterbackward="..."> event at the end + var templates = currentActiveCard.getElementsByClassName('wml_template'); + if (templates.length > 0) { + var oneb = templates[0].dataset.wml_onenterbackward; + if (!isBlank(oneb)) + { + navigateToURL(oneb); + return; + } + } +} + + diff --git a/assets/wml/swe_wml.xsl b/assets/wml/swe_wml.xsl new file mode 100755 index 00000000..f5918247 --- /dev/null +++ b/assets/wml/swe_wml.xsl @@ -0,0 +1,542 @@ +<!-- + # Copyright (c) 2014, The Linux Foundation. All rights reserved. + # + # Redistribution and use in source and binary forms, with or without + # modification, are permitted provided that the following conditions are + # met: + # * Redistributions of source code must retain the above copyright + # notice, this list of conditions and the following disclaimer. + # * Redistributions in binary form must reproduce the above + # copyright notice, this list of conditions and the following + # disclaimer in the documentation and/or other materials provided + # with the distribution. + # * Neither the name of The Linux Foundation nor the names of its + # contributors may be used to endorse or promote products derived + # from this software without specific prior written permission. + # + # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<xsl:output method="html" omit-xml-declaration="no" indent="yes"/> + +<xsl:variable name="wml_card">wml_card</xsl:variable> +<xsl:variable name="wml_select">wml_select</xsl:variable> +<xsl:variable name="wml_input">wml_input</xsl:variable> +<xsl:variable name="wml_timer">wml_timer</xsl:variable> +<xsl:variable name="wml_setvar">wml_setvar</xsl:variable> +<xsl:variable name="wml_postfield">wml_postfield</xsl:variable> +<xsl:variable name="wml_anchor_task">wml_anchor_task</xsl:variable> +<xsl:variable name="wml_anchor_go">wml_anchor_go</xsl:variable> +<xsl:variable name="wml_anchor_prev">wml_anchor_prev</xsl:variable> +<xsl:variable name="select_onchange_handler">handleSelectOnchangeEvent(this)</xsl:variable> +<xsl:variable name="wml_empty_str"></xsl:variable> +<xsl:variable name="wml_noop_href">javascript:void();</xsl:variable> +<xsl:variable name="wml_template">wml_template</xsl:variable> +<xsl:variable name="wml_onevent">wml_onevent</xsl:variable> +<xsl:variable name="wml_task_go">wml_task_go</xsl:variable> +<xsl:variable name="wml_task_refresh">wml_task_refresh</xsl:variable> +<xsl:variable name="wml_task_prev">wml_task_prev</xsl:variable> +<xsl:variable name="wml_task_noop">wml_task_noop</xsl:variable> + + + <xsl:template match="/"> + <xsl:apply-templates /> + </xsl:template> + + <xsl:template match="wml"> + <html> + <head> + <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"></meta> + <link rel="stylesheet" href="file:///android_asset/wml/swe_wml.css" type="text/css"></link> + <script src="file:///android_asset/wml/swe_wml.js" type="text/javascript"></script> + </head> + <body class="wml_body"> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </body> + </html> + </xsl:template> + + <xsl:template match="card"> + <div> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_card, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_card"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@onenterforward"><xsl:attribute name="data-wml_onenterforward"><xsl:value-of select="@onenterforward"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@onenterbackward"><xsl:attribute name="data-wml_onenterbackward"><xsl:value-of select="@onenterbackward"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@ontimer"><xsl:attribute name="data-wml_ontimer"><xsl:value-of select="@ontimer"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@newcontext"><xsl:attribute name="data-wml_newcontext"><xsl:value-of select="@newcontext"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@ordered"><xsl:attribute name="data-wml_ordered"><xsl:value-of select="@ordered"/></xsl:attribute></xsl:when></xsl:choose> + <div class="wml_card_title"><center><xsl:value-of select="@title" /></center></div> + <div class="wml_card_content"> + <xsl:apply-templates /> + <xsl:for-each select="/wml/template"> + <span> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_template, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_template"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@onenterforward"><xsl:attribute name="data-wml_onenterforward"><xsl:value-of select="@onenterforward"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@onenterbackward"><xsl:attribute name="data-wml_onenterbackward"><xsl:value-of select="@onenterbackward"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@ontimer"><xsl:attribute name="data-wml_ontimer"><xsl:value-of select="@ontimer"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </span> + </xsl:for-each> + </div> + </div> + </xsl:template> + + <xsl:template match="head|template|style|link|script" /> + + <xsl:template match="p"> + <p> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@align"><xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@mode"><xsl:attribute name="data-wml_mode"><xsl:value-of select="@mode"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </p> + </xsl:template> + + <xsl:template match="br"> + <br> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </br> + </xsl:template> + + <xsl:template match="pre"> + <pre> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </pre> + </xsl:template> + + <xsl:template match="b"> + <b> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </b> + </xsl:template> + + <xsl:template match="big"> + <big> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </big> + </xsl:template> + + <xsl:template match="em"> + <em> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </em> + </xsl:template> + + <xsl:template match="i"> + <i> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </i> + </xsl:template> + + <xsl:template match="small"> + <small> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </small> + </xsl:template> + + <xsl:template match="strong"> + <strong> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </strong> + </xsl:template> + + <xsl:template match="u"> + <u> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </u> + </xsl:template> + + <xsl:template match="a"> + <a onclick="handleAOnClick(event, this)"> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@href"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </a> + </xsl:template> + + <xsl:template match="img"> + <img> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@alt"><xsl:attribute name="alt"><xsl:value-of select="@alt"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@src"><xsl:attribute name="src"><xsl:value-of select="@src"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@align"><xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@height"><xsl:attribute name="height"><xsl:value-of select="@height"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@width"><xsl:attribute name="width"><xsl:value-of select="@width"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@localsrc"><xsl:attribute name="data-wml_localsrc"><xsl:value-of select="@localsrc"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@vspace"><xsl:attribute name="data-wml_vspace"><xsl:value-of select="@vspace"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@hspace"><xsl:attribute name="data-wml_hspace"><xsl:value-of select="@hspace"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </img> + </xsl:template> + + <xsl:template match="table"> + <table> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@align"><xsl:attribute name="data-wml_align"><xsl:value-of select="@align"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@columns"><xsl:attribute name="data-wml_columns"><xsl:value-of select="@columns"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </table> + </xsl:template> + + <xsl:template match="tr"> + <tr> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@align"><xsl:attribute name="align"><xsl:value-of select="@align"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </tr> + </xsl:template> + + <xsl:template match="td"> + <td> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </td> + </xsl:template> + + <xsl:template match="select"> + <select> + <xsl:choose><xsl:when test="@multiple = 'true'"><xsl:attribute name="multiple"></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="onchange"><xsl:value-of select="$select_onchange_handler"/></xsl:attribute> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_select, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_select"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@name"><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@iname"><xsl:attribute name="data-wml_iname"><xsl:value-of select="@iname"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@ivalue"><xsl:attribute name="data-wml_ivalue"><xsl:value-of select="@ivalue"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </select> + </xsl:template> + + <xsl:template match="option"> + <option> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@title"><xsl:attribute name="title"><xsl:value-of select="@title"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@onpick"><xsl:attribute name="data-wml_onpick"><xsl:value-of select="@onpick"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </option> + </xsl:template> + + <xsl:template match="optgroup"> + <optgroup> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="@class"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@title"><xsl:attribute name="label"><xsl:value-of select="@title"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </optgroup> + </xsl:template> + + <xsl:template match="postfield"> + <input type="hidden"> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_postfield, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_postfield"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@name"><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:when></xsl:choose> + </input> + </xsl:template> + + <xsl:template match="input"> + <input> + <xsl:choose> + <xsl:when test="@type"><xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="type"><xsl:value-of select="'text'"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_input, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_input"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@name"><xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:when></xsl:choose> + </input> + </xsl:template> + + <xsl:template match="timer"> + <span> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_timer, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_timer"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@name"><xsl:attribute name="data-wml_name"><xsl:value-of select="@name"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@value"><xsl:attribute name="data-wml_value"><xsl:value-of select="@value"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:apply-templates /> + </span> + </xsl:template> + + <xsl:template match="setvar"> + <span> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_setvar, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_setvar"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@name"><xsl:attribute name="data-wml_name"><xsl:value-of select="@name"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@value"><xsl:attribute name="data-wml_value"><xsl:value-of select="@value"/></xsl:attribute></xsl:when></xsl:choose> + </span> + </xsl:template> + + <xsl:template match="do"> + <div> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="do/go"> + <form> + <xsl:attribute name="action"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:choose><xsl:when test="@href"><xsl:attribute name="data-wml_href"><xsl:value-of select="@href"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@method"><xsl:attribute name="method"><xsl:value-of select="@method"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="method"><xsl:value-of select="'get'"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:apply-templates /> + <input type="button" onclick="executeGoTask(event, this.parentNode)"> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="../@label"><xsl:attribute name="value"><xsl:value-of select="../@label"/></xsl:attribute></xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="../@name"><xsl:attribute name="value"><xsl:value-of select="../@name" /></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="value"><xsl:value-of select="'OK'"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </input> + </form> + </xsl:template> + + <xsl:template match="do/refresh"> + <input type="button" onclick="executeRefreshTask(event, this)"> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="../@label"><xsl:attribute name="value"><xsl:value-of select="../@label"/></xsl:attribute></xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="../@name"><xsl:attribute name="value"><xsl:value-of select="../@name" /></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="value"><xsl:value-of select="'Refresh'"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </input> + <span> + <xsl:apply-templates /> + </span> + </xsl:template> + + <xsl:template match="do/prev"> + <input type="button" onclick="executePrevTask(event, this)"> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="../@label"><xsl:attribute name="value"><xsl:value-of select="../@label"/></xsl:attribute></xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="../@name"><xsl:attribute name="value"><xsl:value-of select="../@name" /></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="value"><xsl:value-of select="'Back'"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </input> + <xsl:apply-templates /> + </xsl:template> + + <xsl:template match="do/noop"> + <span></span> + </xsl:template> + + <xsl:template match="anchor"> + <div> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="anchor/go"> + <form> + <xsl:attribute name="action"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:choose><xsl:when test="@href"><xsl:attribute name="data-wml_href"><xsl:value-of select="@href"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@method"><xsl:attribute name="method"><xsl:value-of select="@method"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="method"><xsl:value-of select="'get'"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <a onclick="executeGoTask(event, this.parentNode)"> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_anchor_task, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_anchor_task"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="@href"><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-wml_task_type"><xsl:value-of select="$wml_task_go"/></xsl:attribute> + <xsl:apply-templates /> + </a> + </form> + </xsl:template> + + <xsl:template match="anchor/prev"> + <xsl:apply-templates /> + <a href="javascript:void(0);" onclick="executePrevTask(event, this)"> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_anchor_task, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_anchor_task"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-wml_task_type"><xsl:value-of select="$wml_task_prev"/></xsl:attribute> + </a> + </xsl:template> + + <xsl:template match="anchor/refresh"> + <a href="javascript:void(0);" onclick="executeRefreshTask(event, this)"> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_anchor_task, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="$wml_anchor_task"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-wml_task_type"><xsl:value-of select="$wml_task_refresh"/></xsl:attribute> + <xsl:apply-templates /> + </a> + </xsl:template> + + <xsl:template match="onevent"> + <div> + <xsl:attribute name="class"><xsl:value-of select="$wml_onevent"/></xsl:attribute> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="onevent/go"> + <form> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type)"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="../@type"><xsl:attribute name="data-wml_onevent_type"><xsl:value-of select="../@type"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-wml_task_type"><xsl:value-of select="$wml_task_go"/></xsl:attribute> + <xsl:attribute name="action"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:choose><xsl:when test="@href"><xsl:attribute name="data-wml_href"><xsl:value-of select="@href"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@method"><xsl:attribute name="method"><xsl:value-of select="@method"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="method"><xsl:value-of select="'get'"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:apply-templates /> + </form> + </xsl:template> + + <xsl:template match="onevent/refresh"> + <span> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type)"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="../@type"><xsl:attribute name="data-wml_onevent_type"><xsl:value-of select="../@type"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-wml_task_type"><xsl:value-of select="$wml_task_refresh"/></xsl:attribute> + <xsl:apply-templates /> + </span> + </xsl:template> + + <xsl:template match="onevent/prev"> + <span> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type)"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="../@type"><xsl:attribute name="data-wml_onevent_type"><xsl:value-of select="../@type"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-wml_task_type"><xsl:value-of select="$wml_task_prev"/></xsl:attribute> + <xsl:apply-templates /> + </span> + </xsl:template> + + <xsl:template match="onevent/noop"> + <span> + <xsl:choose><xsl:when test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose> + <xsl:when test="@class"><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type, ' ', @class)"/></xsl:attribute></xsl:when> + <xsl:otherwise><xsl:attribute name="class"><xsl:value-of select="concat($wml_onevent, '_', ../@type)"/></xsl:attribute></xsl:otherwise> + </xsl:choose> + <xsl:choose><xsl:when test="@lang"><xsl:attribute name="lang"><xsl:value-of select="@lang"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:choose><xsl:when test="../@type"><xsl:attribute name="data-wml_onevent_type"><xsl:value-of select="../@type"/></xsl:attribute></xsl:when></xsl:choose> + <xsl:attribute name="data-wml_task_type"><xsl:value-of select="$wml_task_noop"/></xsl:attribute> + <xsl:apply-templates /> + </span> + </xsl:template> + +</xsl:stylesheet> |