Administrator
|
Hi Hans,
It seems to me that it's ok from a licensing POV, just wanted to check with you about commented out lines > +#janrain.apiKey=9640f5bddc863ec419067d4bd07f9d15e45c177f > +#janrain.baseUrl=https://ofbizdemo.rpxnow.com > +#janrain.appName=ofbizdemo I guess it's ok, right? BTW I checked for Google Map, it seems using API v2 OOTB is still not a problem http://code.google.com/apis/maps/signup.html Thanks Jacques > Author: hansbak > Date: Tue Dec 27 07:39:43 2011 > New Revision: 1224876 > > URL: http://svn.apache.org/viewvc?rev=1224876&view=rev > Log: > implement the basic janrain package, which enables the login via most social sites, but can not recognize if the same user if > logged in from 2 different sites. By default this function is disabled and will not change the functionality of the OFBiz login > procedure in any way > > Added: > ofbiz/trunk/specialpurpose/ecommerce/README (with props) > ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/ > ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java (with props) > Modified: > ofbiz/trunk/specialpurpose/ecommerce/build.xml > ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties > ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/customer/NewCustomer.groovy > ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml > ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/newcustomer.ftl > ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/login.ftl > > Added: ofbiz/trunk/specialpurpose/ecommerce/README > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/README?rev=1224876&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/README (added) > +++ ofbiz/trunk/specialpurpose/ecommerce/README Tue Dec 27 07:39:43 2011 > @@ -0,0 +1,31 @@ > +How to use Janrain Engage Social Login. > +====================================== > + > +1.Get API Key from http://www.janrain.com/products/engage/social-login. > +2.Configure file setting : ecommerce.properties you can put it > + Example: > + -------------------------------------------------------------------------------- > + # -- Enable janrain engage (Y/ N) default N > + janrain.enabled=N > + > + # -- Janrain api key (secret) > + janrain.apiKey=exampleKey > + > + # -- Janrain application domain > + janrain.baseUrl=https://example.rpxnow.com > + > + # -- Janrain application name > + janrain.appName=exampleAppName > + -------------------------------------------------------------------------------- > +3.Restart the server. > + > + > +How to test Janrain Engage Social Login. > +======================================= > + > +1. Go to Login screen. > +2. Look the Social Login Widget and you can use these existing accounts to sign-in to your website. > +3. First time if account does not exists then system will create new account. > +4. After account existing in the system you can use "Social Login Widget" to login account. > + > +=================================================================================================== > > Propchange: ofbiz/trunk/specialpurpose/ecommerce/README > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: ofbiz/trunk/specialpurpose/ecommerce/README > ------------------------------------------------------------------------------ > svn:mime-type = text/plain > > Modified: ofbiz/trunk/specialpurpose/ecommerce/build.xml > URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/build.xml?rev=1224876&r1=1224875&r2=1224876&view=diff > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/build.xml (original) > +++ ofbiz/trunk/specialpurpose/ecommerce/build.xml Tue Dec 27 07:39:43 2011 > @@ -41,10 +41,12 @@ under the License. > <fileset dir="../../framework/service/build/lib" includes="*.jar"/> > <fileset dir="../../framework/minilang/build/lib" includes="*.jar"/> > <fileset dir="../../framework/common/build/lib" includes="*.jar"/> > + <fileset dir="../../framework/webapp/build/lib" includes="*.jar"/> > <fileset dir="../../applications/party/build/lib" includes="*.jar"/> > <fileset dir="../../applications/product/build/lib" includes="*.jar"/> > <fileset dir="../../applications/marketing/build/lib" includes="*.jar"/> > <fileset dir="../../applications/order/build/lib" includes="*.jar"/> > <fileset dir="../../applications/accounting/build/lib" includes="*.jar"/> > + <fileset dir="../../applications/securityext/build/lib" includes="*.jar"/> > </path> > </project> > > Modified: ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties?rev=1224876&r1=1224875&r2=1224876&view=diff > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties (original) > +++ ofbiz/trunk/specialpurpose/ecommerce/config/ecommerce.properties Tue Dec 27 07:39:43 2011 > @@ -17,3 +17,24 @@ > # under the License. > ############################################################################### > convertProductPriceCurrency=true > + > +############################################ > +# Janrain Engage > +############################################ > +#example config > +#janrain.apiKey=9640f5bddc863ec419067d4bd07f9d15e45c177f > +#janrain.baseUrl=https://ofbizdemo.rpxnow.com > +#janrain.appName=ofbizdemo > +############################################ > + > +# -- Enabled janrain engage (Y/ N) default N > +janrain.enabled=N > + > +# -- Janrain api key (secret) > +janrain.apiKey= > + > +# -- Janrain application domain > +janrain.baseUrl= > + > +# -- Janrain application name > +janrain.appName= > > Added: ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java?rev=1224876&view=auto > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java (added) > +++ ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java Tue Dec 27 07:39:43 2011 > @@ -0,0 +1,248 @@ > +/******************************************************************************* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with 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. > + *******************************************************************************/ > +package org.ofbiz.ecommerce.janrain; > + > +import java.io.BufferedReader; > +import java.io.IOException; > +import java.io.InputStreamReader; > +import java.io.OutputStreamWriter; > +import java.io.UnsupportedEncodingException; > +import java.net.HttpURLConnection; > +import java.net.MalformedURLException; > +import java.net.URL; > +import java.net.URLEncoder; > +import java.util.ArrayList; > +import java.util.HashMap; > +import java.util.Iterator; > +import java.util.List; > +import java.util.Map; > + > +import javax.servlet.http.HttpServletRequest; > +import javax.servlet.http.HttpServletResponse; > +import javax.xml.parsers.ParserConfigurationException; > +import javax.xml.xpath.XPath; > +import javax.xml.xpath.XPathConstants; > +import javax.xml.xpath.XPathExpressionException; > +import javax.xml.xpath.XPathFactory; > + > +import javolution.util.FastMap; > + > +import org.ofbiz.base.util.Debug; > +import org.ofbiz.base.util.UtilHttp; > +import org.ofbiz.base.util.UtilMisc; > +import org.ofbiz.base.util.UtilProperties; > +import org.ofbiz.base.util.UtilValidate; > +import org.ofbiz.base.util.UtilXml; > +import org.ofbiz.entity.Delegator; > +import org.ofbiz.entity.GenericEntityException; > +import org.ofbiz.entity.GenericValue; > +import org.ofbiz.webapp.control.LoginWorker; > +import org.w3c.dom.Document; > +import org.w3c.dom.Element; > +import org.w3c.dom.NodeList; > +import org.xml.sax.SAXException; > + > +/** > + * Java Helper Class for Janrain Engage > + */ > +public class JanrainHelper { > + > + public static final String module = JanrainHelper.class.getName(); > + private static String apiKey = UtilProperties.getPropertyValue("ecommerce.properties", "janrain.apiKey"); > + private static String baseUrl = UtilProperties.getPropertyValue("ecommerce.properties", "janrain.baseUrl"); > + public JanrainHelper(String apiKey, String baseUrl) { > + while (baseUrl.endsWith("/")) > + baseUrl = baseUrl.substring(0, baseUrl.length() - 1); > + this.apiKey = apiKey; > + this.baseUrl = baseUrl; > + } > + public String getApiKey() { return apiKey; } > + public String getBaseUrl() { return baseUrl; } > + public static Element authInfo(String token) { > + Map<String, Object> query = new HashMap<String, Object>(); > + query.put("token", token); > + return apiCall("auth_info", query); > + } > + public HashMap<String, List<String>> allMappings() { > + Element rsp = apiCall("all_mappings", null); > + Element mappings_node = (Element)rsp.getFirstChild(); > + HashMap<String, List<String>> result = new HashMap<String, List<String>>(); > + NodeList mappings = getNodeList("/rsp/mappings/mapping", rsp); > + for (int i = 0; i < mappings.getLength(); i++) { > + Element mapping = (Element)mappings.item(i); > + List<String> identifiers = new ArrayList<String>(); > + NodeList rk_list = getNodeList("primaryKey", mapping); > + NodeList id_list = getNodeList("identifiers/identifier", mapping); > + String remote_key = ((Element)rk_list.item(0)).getTextContent(); > + for (int j = 0; j < id_list.getLength(); j++) { > + Element ident = (Element) id_list.item(j); > + identifiers.add(ident.getTextContent()); > + } > + result.put(remote_key, identifiers); > + } > + return result; > + } > + private NodeList getNodeList(String xpath_expr, Element root) { > + XPathFactory factory = XPathFactory.newInstance(); > + XPath xpath = factory.newXPath(); > + try { > + return (NodeList) xpath.evaluate(xpath_expr, root, XPathConstants.NODESET); > + } catch (XPathExpressionException e) { > + return null; > + } > + } > + public List<String> mappings(Object primaryKey) { > + Map<String, Object> query = new HashMap<String, Object>(); > + query.put("primaryKey", primaryKey); > + Element rsp = apiCall("mappings", query); > + Element oids = (Element)rsp.getFirstChild(); > + List<String> result = new ArrayList<String>(); > + NodeList nl = oids.getChildNodes(); > + for (int i = 0; i < nl.getLength(); i++) { > + Element e = (Element)nl.item(i); > + result.add(e.getTextContent()); > + } > + return result; > + } > + public void map(String identifier, Object primaryKey) { > + Map<String, Object> query = new HashMap<String, Object>(); > + query.put("identifier", identifier); > + query.put("primaryKey", primaryKey); > + apiCall("map", query); > + } > + public void unmap(String identifier, Object primaryKey) { > + Map<String, Object> query = new HashMap<String, Object>(); > + query.put("identifier", identifier); > + query.put("primaryKey", primaryKey); > + apiCall("unmap", query); > + } > + private static Element apiCall(String methodName, Map<String, Object> partialQuery) { > + Map<String, Object> query = null; > + if (partialQuery == null) { > + query = new HashMap<String, Object>(); > + } else { > + query = new HashMap<String, Object>(partialQuery); > + } > + query.put("format", "xml"); > + query.put("apiKey", apiKey); > + StringBuffer sb = new StringBuffer(); > + for (Iterator it = query.entrySet().iterator(); it.hasNext();) { > + if (sb.length() > 0) sb.append('&'); > + try { > + Map.Entry e = (Map.Entry)it.next(); > + sb.append(URLEncoder.encode(e.getKey().toString(), "UTF-8")); > + sb.append('='); > + sb.append(URLEncoder.encode(e.getValue().toString(), "UTF-8")); > + } catch (UnsupportedEncodingException e) { > + throw new RuntimeException("Unexpected encoding error", e); > + } > + } > + String data = sb.toString(); > + try { > + URL url = new URL(baseUrl + "/api/v2/" + methodName); > + HttpURLConnection conn = (HttpURLConnection)url.openConnection(); > + conn.setRequestMethod("POST"); > + conn.setDoOutput(true); > + conn.connect(); > + OutputStreamWriter osw = new OutputStreamWriter( > + conn.getOutputStream(), "UTF-8"); > + osw.write(data); > + osw.close(); > + > + BufferedReader post = new BufferedReader(new InputStreamReader(conn.getInputStream())); > + String line = ""; > + StringBuilder buf = new StringBuilder(); > + while ((line = post.readLine()) != null) { > + buf.append(line); > + } > + post.close(); > + Document tagXml = UtilXml.readXmlDocument(buf.toString()); > + Element response = (Element) tagXml.getDocumentElement(); > + if (!response.getAttribute("stat").equals("ok")) { > + throw new RuntimeException("Unexpected API error"); > + } > + return response; > + } catch (MalformedURLException e) { > + throw new RuntimeException("Unexpected URL error", e); > + } catch (IOException e) { > + throw new RuntimeException("Unexpected IO error", e); > + } catch (ParserConfigurationException e) { > + throw new RuntimeException("Unexpected XML error", e); > + } catch (SAXException e) { > + throw new RuntimeException("Unexpected XML error", e); > + } > + } > + > + public static String janrainCheckLogin(HttpServletRequest request, HttpServletResponse response){ > + Delegator delegator = (Delegator) request.getAttribute("delegator"); > + String token = request.getParameter("token"); > + String errMsg = ""; > + if (UtilValidate.isNotEmpty(token)) { > + JanrainHelper janrainHelper = new JanrainHelper(apiKey, baseUrl); > + Element authInfo = janrainHelper.authInfo(token); > + Element profileElement = UtilXml.firstChildElement(authInfo, "profile"); > + Element nameElement = UtilXml.firstChildElement(profileElement, "name"); > + > + // profile element > + String displayName = UtilXml.elementValue(UtilXml.firstChildElement(profileElement, "displayName")); > + String email = UtilXml.elementValue(UtilXml.firstChildElement(profileElement, "email")); > + String identifier = UtilXml.elementValue(UtilXml.firstChildElement(profileElement, "identifier")); > + String preferredUsername = UtilXml.elementValue(UtilXml.firstChildElement(profileElement, "preferredUsername")); > + String providerName = UtilXml.elementValue(UtilXml.firstChildElement(profileElement, "providerName")); > + String url = UtilXml.elementValue(UtilXml.firstChildElement(profileElement, "url")); > + > + // name element > + String givenName = UtilXml.elementValue(UtilXml.firstChildElement(nameElement, "givenName")); > + String familyName = UtilXml.elementValue(UtilXml.firstChildElement(nameElement, "familyName")); > + String formatted = UtilXml.elementValue(UtilXml.firstChildElement(nameElement, "formatted")); > + > + if (UtilValidate.isEmpty("preferredUsername")) { > + errMsg = UtilProperties.getMessage("SecurityextUiLabels", "loginevents.username_not_found_reenter", > UtilHttp.getLocale(request)); > + request.setAttribute("_ERROR_MESSAGE_", errMsg); > + return "error"; > + } > + > + Map<String, String> result = FastMap.newInstance(); > + result.put("displayName", displayName); > + result.put("email", email); > + result.put("identifier", identifier); > + result.put("preferredUsername", preferredUsername); > + result.put("providerName", providerName); > + result.put("url", url); > + result.put("givenName", givenName); > + result.put("familyName", familyName); > + result.put("formatted", formatted); > + request.setAttribute("userInfoMap", result); > + > + try { > + GenericValue userLogin = delegator.findByPrimaryKeyCache("UserLogin", UtilMisc.toMap("userLoginId", > preferredUsername)); > + if (UtilValidate.isNotEmpty(userLogin)) { > + LoginWorker.doBasicLogin(userLogin, request); > + LoginWorker.autoLoginSet(request, response); > + return "success"; > + } else { > + return "userLoginMissing"; > + } > + } catch (GenericEntityException e) { > + Debug.logError(e, "Error finding the userLogin for distributed cache clear", module); > + } > + } > + return "success"; > + } > +} > > Propchange: ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java > ------------------------------------------------------------------------------ > svn:eol-style = native > > Propchange: ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java > ------------------------------------------------------------------------------ > svn:keywords = Date Rev Author URL Id > > Propchange: ofbiz/trunk/specialpurpose/ecommerce/src/org/ofbiz/ecommerce/janrain/JanrainHelper.java > ------------------------------------------------------------------------------ > svn:mime-type = text/plain > > Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/customer/NewCustomer.groovy > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/customer/NewCustomer.groovy?rev=1224876&r1=1224875&r2=1224876&view=diff > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/customer/NewCustomer.groovy (original) > +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/actions/customer/NewCustomer.groovy Tue Dec 27 07:39:43 2011 > @@ -16,6 +16,7 @@ > * specific language governing permissions and limitations > * under the License. > */ > + > import org.ofbiz.base.util.UtilProperties; > import org.ofbiz.base.util.UtilMisc; > import org.ofbiz.product.store.ProductStoreWorker; > @@ -49,3 +50,21 @@ if (previousParams) { > previousParams = ""; > } > context.previousParams = previousParams; > + > +//the parameters from janrain > +userInfoMap = request.getAttribute("userInfoMap"); > +if (!userInfoMap) { > + userInfoMap = request.getSession().getAttribute("userInfoMap"); > +} > +if (userInfoMap) { > + if (userInfoMap.givenName && userInfoMap.familyName) { > + requestParameters.USER_FIRST_NAME = userInfoMap.givenName; > + requestParameters.USER_LAST_NAME = userInfoMap.familyName; > + } else if (userInfoMap.formatted) { > + requestParameters.USER_FIRST_NAME = userInfoMap.formatted; > + } > + requestParameters.CUSTOMER_EMAIL = userInfoMap.email; > + requestParameters.preferredUsername = userInfoMap.preferredUsername; > + requestParameters.USERNAME = userInfoMap.preferredUsername; > + request.getSession().setAttribute("userInfoMap", userInfoMap); > +} > > Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml?rev=1224876&r1=1224875&r2=1224876&view=diff > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml (original) > +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/WEB-INF/controller.xml Tue Dec 27 07:39:43 2011 > @@ -2012,7 +2012,7 @@ under the License. > <security https="true" auth="false"/> > <response name="success" type="view" value="showShoppingList" save-current-view="true"/> > </request-map> > - > + > <!-- Product Tags --> > <request-map uri="addProductTags"> > <security https="false" auth="false"/> > @@ -2020,7 +2020,16 @@ under the License. > <response name="success" type="view-last" save-current-view="true"/> > <response name="error" type="view-last" save-current-view="true"/> > </request-map> > - > + > + <!-- ============== Janrain Engage ============== --> > + <request-map uri="janrainCheckLogin"> > + <security https="true" auth="false"/> > + <event type="java" path="org.ofbiz.ecommerce.janrain.JanrainHelper" invoke="janrainCheckLogin"/> > + <response name="success" type="view" value="main"/> > + <response name="error" type="view" value="login"/> > + <response name="userLoginMissing" type="request" value="newcustomer"/> > + </request-map> > + > <!-- End of Request Mappings --> > > <!-- View Mappings --> > > Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/newcustomer.ftl > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/newcustomer.ftl?rev=1224876&r1=1224875&r2=1224876&view=diff > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/newcustomer.ftl (original) > +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/customer/newcustomer.ftl Tue Dec 27 07:39:43 2011 > @@ -342,15 +342,22 @@ will generally always be reserved for th > <legend><#if getUsername>${uiLabelMap.CommonUsername}</#if></legend> > <#if getUsername> > <@fieldErrors fieldName="USERNAME"/> > - <div class="form-row inline"> > - <label for="UNUSEEMAIL"> > - <input type="checkbox" class="checkbox" name="UNUSEEMAIL" id="UNUSEEMAIL" value="on" onclick="setEmailUsername();" > onfocus="setLastFocused(this);"/> ${uiLabelMap.EcommerceUseEmailAddress} > - </label> > - </div> > + <#if !requestParameters.preferredUsername?has_content> > + <div class="form-row inline"> > + <label for="UNUSEEMAIL"> > + <input type="checkbox" class="checkbox" name="UNUSEEMAIL" id="UNUSEEMAIL" value="on" onclick="setEmailUsername();" > onfocus="setLastFocused(this);"/> ${uiLabelMap.EcommerceUseEmailAddress} > + </label> > + </div> > + </#if> > > <div> > <label for="USERNAME">${uiLabelMap.CommonUsername}*</label> > - <input type="text" name="USERNAME" id="USERNAME" value="${requestParameters.USERNAME?if_exists}" > onfocus="clickUsername();" onchange="changeEmail();"/> > + <#if requestParameters.preferredUsername?has_content> > + <input type="text" name="showUserName" id="showUserName" value="${requestParameters.USERNAME?if_exists}" > disabled="disabled"/> > + <input type="hidden" name="USERNAME" id="USERNAME" value="${requestParameters.USERNAME?if_exists}"/> > + <#else> > + <input type="text" name="USERNAME" id="USERNAME" value="${requestParameters.USERNAME?if_exists}" > onfocus="clickUsername();" onchange="changeEmail();"/> > + </#if> > </div> > </#if> > </fieldset> > > Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/login.ftl > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/login.ftl?rev=1224876&r1=1224875&r2=1224876&view=diff > ============================================================================== > --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/login.ftl (original) > +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/login.ftl Tue Dec 27 07:39:43 2011 > @@ -16,35 +16,102 @@ KIND, either express or implied. See th > specific language governing permissions and limitations > under the License. > --> > +<#assign janrainEnabled = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("ecommerce.properties", > "janrain.enabled")> > +<#assign appName = Static["org.ofbiz.base.util.UtilProperties"].getPropertyValue("ecommerce.properties", "janrain.appName")> > +<#if janrainEnabled == "Y"> > +<script type="text/javascript"> > +(function() { > + if (typeof window.janrain !== 'object') window.janrain = {}; > + window.janrain.settings = {}; > + > + janrain.settings.tokenUrl = '<@ofbizUrl fullPath="true" secure="true">janrainCheckLogin</@ofbizUrl>'; > > + function isReady() { janrain.ready = true; }; > + if (document.addEventListener) { > + document.addEventListener("DOMContentLoaded", isReady, false); > + } else { > + window.attachEvent('onload', isReady); > + } > + > + var e = document.createElement('script'); > + e.type = 'text/javascript'; > + e.id = 'janrainAuthWidget'; > + > + if (document.location.protocol === 'https:') { > + e.src = 'https://rpxnow.com/js/lib/${appName}/engage.js'; > + } else { > + e.src = 'http://widget-cdn.rpxnow.com/js/lib/${appName}/engage.js'; > + } > + > + var s = document.getElementsByTagName('script')[0]; > + s.parentNode.insertBefore(e, s); > +})(); > +</script> > <h1>${uiLabelMap.CommonLogin}</h1> > <div class="screenlet"> > <div class="screenlet-title-bar"><h3>${uiLabelMap.CommonRegistered}</h3></div> > <div class="screenlet-body"> > - <form method="post" action="<@ofbizUrl>login</@ofbizUrl>" name="loginform" class="horizontal"> > - <fieldset> > - <div> > - <label for="userName">${uiLabelMap.CommonUsername}</label> > - <input type="text" id="userName" name="USERNAME" value="<#if > requestParameters.USERNAME?has_content>${requestParameters.USERNAME}<#elseif > autoUserLogin?has_content>${autoUserLogin.userLoginId}</#if>"/> > - </div> > -<#if autoUserLogin?has_content> > - <p>(${uiLabelMap.CommonNot} ${autoUserLogin.userLoginId}? <a > href="<@ofbizUrl>${autoLogoutUrl}</@ofbizUrl>">${uiLabelMap.CommonClickHere}</a>)</p> > -</#if> > - <div> > - <label for="password">${uiLabelMap.CommonPassword}:</label> > - <input type="password" id="password" name="PASSWORD" value=""/> > - </div> > - <div> > - <input type="submit" class="button" value="${uiLabelMap.CommonLogin}"/> > - </div> > - <div> > - <label for="newcustomer_submit">${uiLabelMap.CommonMayCreateNewAccountHere}:</label> > - <a href="<@ofbizUrl>newcustomer</@ofbizUrl>">${uiLabelMap.CommonMayCreate}</a> > - </div> > - </fieldset> > - </form> > + <table width="100%" class="Signlogin"> > + <tr> > + <td> > + <form method="post" action="<@ofbizUrl>login</@ofbizUrl>" name="loginform" class="horizontal"> > + <fieldset> > + <div> > + <label for="userName">${uiLabelMap.CommonUsername}</label> > + <input type="text" id="userName" name="USERNAME" value="<#if > requestParameters.USERNAME?has_content>${requestParameters.USERNAME}<#elseif > autoUserLogin?has_content>${autoUserLogin.userLoginId}</#if>"/> > + </div> > + <#if autoUserLogin?has_content> > + <p>(${uiLabelMap.CommonNot} ${autoUserLogin.userLoginId}? <a > href="<@ofbizUrl>${autoLogoutUrl}</@ofbizUrl>">${uiLabelMap.CommonClickHere}</a>)</p> > + </#if> > + <div> > + <label for="password">${uiLabelMap.CommonPassword}:</label> > + <input type="password" id="password" name="PASSWORD" value=""/> > + </div> > + <div> > + <input type="submit" class="button" value="${uiLabelMap.CommonLogin}"/> > + </div> > + <div> > + <label for="newcustomer_submit">${uiLabelMap.CommonMayCreateNewAccountHere}:</label> > + <a href="<@ofbizUrl>newcustomer</@ofbizUrl>">${uiLabelMap.CommonMayCreate}</a> > + </div> > + </fieldset> > + </form> > + </td> > + <td><div id="janrainEngageEmbed"></div></td> > + </tr> > + </table> > </div> > </div> > +<#else> > +<h1>${uiLabelMap.CommonLogin}</h1> > +<div class="screenlet"> > + <div class="screenlet-title-bar"><h3>${uiLabelMap.CommonRegistered}</h3></div> > + <div class="screenlet-body"> > + <form method="post" action="<@ofbizUrl>login</@ofbizUrl>" name="loginform" class="horizontal"> > + <fieldset> > + <div> > + <label for="userName">${uiLabelMap.CommonUsername}</label> > + <input type="text" id="userName" name="USERNAME" value="<#if > requestParameters.USERNAME?has_content>${requestParameters.USERNAME}<#elseif > autoUserLogin?has_content>${autoUserLogin.userLoginId}</#if>"/> > + </div> > + <#if autoUserLogin?has_content> > + <p>(${uiLabelMap.CommonNot} ${autoUserLogin.userLoginId}? <a > href="<@ofbizUrl>${autoLogoutUrl}</@ofbizUrl>">${uiLabelMap.CommonClickHere}</a>)</p> > + </#if> > + <div> > + <label for="password">${uiLabelMap.CommonPassword}:</label> > + <input type="password" id="password" name="PASSWORD" value=""/> > + </div> > + <div> > + <input type="submit" class="button" value="${uiLabelMap.CommonLogin}"/> > + </div> > + <div> > + <label for="newcustomer_submit">${uiLabelMap.CommonMayCreateNewAccountHere}:</label> > + <a href="<@ofbizUrl>newcustomer</@ofbizUrl>">${uiLabelMap.CommonMayCreate}</a> > + </div> > + </fieldset> > + </form> > + </div> > +</div> > +</#if> > > <div class="screenlet"> > <div class="screenlet-title-bar"><h3>${uiLabelMap.CommonForgotYourPassword}</h3></div> > > |
Free forum by Nabble | Edit this page |