• xTalk 1.1

    By Zeff Wheelock 1 decade ago

    Declan, it looks fantastic. I installed the Oct 17 xTalk Extension Library and was able to configure xTalk Forum 1.1. A few things: When creating categories or forums, I try and add a user. I search by first name and the name comes up as "John Smith/ORG1/DOMAIN John". When I select the name add add, a single letter comes up on the right side. In my case it was "P". When saving it, only P shows up as the forum owner.



    When launching xTalk Forum 1.1 in Notes, I get the following error:



    Unexpected runtime error

    The runtime has encountered an unexpected error.

    Error source

    Page Name:/home.xsp



    Exception

    Error while executing JavaScript action expression

    Script interpreter error, line=77, col=37: [TypeError] Exception occurred calling method NotesDatabase.getView(string) null

    at [/global.jss].initApplication()



    JavaScript code



    1: function checkAuth(){

    2: if (context.getUser().getCommonName() == "Anonymous"){

    3: sessionScope.put("entryPage",context.getUrl().getPath() + context.getUrl().getQueryString())

    4: context.redirectToPage("/login.xsp");

    5: }

    6: }

    7:

    8: function checkBrowser(){

    9: sessionScope.put("browserType","browser")

    10: // The following is commented out till the other interfaces are ready

    11: // var browserType = context.getUserAgent().getUserAgent();

    12: // if (browserType.match("iPhone")){

    13: // sessionScope.put("browserType","iPhone");}

    14: // if (browserType.match("iPad")){

    15: // sessionScope.put("browserType","iPad");}

    16: // if (browserType.match("Blackberry")){

    17: // sessionScope.put("browserType","blackberry");}

    18: // if (browserType.match("Android")){

    19: // sessionScope.put("browserType","Android");}

    20: }

    21:

    22: function checkTheme(browserName){

    23: if (browserName == "browser"){

    24: if (context.getSessionProperty("xsp.theme") != browserName + "" + applicationScope.blogTheme){

    25: context.setSessionProperty("xsp.theme",browserName+ "
    " + applicationScope.blogTheme);

    26: var thisPage = context.getUrl().getAddress();

    27: var thisPage = context.getUrl().toString();

    28: context.redirectToPage(thisPage);

    29: }

    30: }

    31: }

    32:

    33: function initSession(){

    34: // Quick Access To the Users Name.

    35: sessionScope.put("commonName",context.getUser().getCommonName());

    36: sessionScope.put("fullName",context.getUser().getFullName());

    37:

    38: // Quick Access To The Users Roles.

    39: sessionScope.put("showDebug",false);

    40: sessionScope.put("forumOwner",false);

    41:

    42: if(@Contains(context.getUser().getRoles(),"[DEBUG]") == @True()){

    43: sessionScope.put("showDebug",true);

    44: }

    45: if(@Contains(context.getUser().getRoles(),"[ForumOwner]") == @True()){

    46: sessionScope.put("forumOwner",true);

    47: }

    48:

    49: // Read or Setup User Profile

    50: var thisDB:NotesDatabase = sessionAsSigner.getDatabase(session.getServerName(),session.getCurrentDatabase().getFilePath());

    51: var userView:NotesView = thisDB.getView("lkp_UserProfiles");

    52: var userDoc:NotesDocument = userView.getDocumentByKey(sessionScope.commonName);

    53: if (userDoc == null){

    54: var userDoc:NotesDocument = thisDB.createDocument();

    55: userDoc.replaceItemValue("form","content_UserProfile");

    56: userDoc.replaceItemValue("user_Name",sessionScope.commonName);

    57: userDoc.replaceItemValue("user_UserName",sessionScope.commonName);

    58: var userDocAuthor:NotesItem = userDoc.getFirstItem("user_UserName");

    59: userDocAuthor.setAuthors(true);

    60: userDoc.replaceItemValue("user_Posts",0);

    61: userDoc.replaceItemValue("user_Replies",0);

    62: var curDate:NotesDateTime = session.createDateTime("Today");

    63: curDate.setNow();

    64: userDoc.replaceItemValue("user_LastDate",curDate);

    65: userDoc.replaceItemValue("user_JoinDate",curDate);

    66: userDoc.save();

    67: }

    68:

    69: sessionScope.userProfileUNID = userDoc.getUniversalID();

    70:

    71: sessionScope.put("init",true)

    72: }

    73:

    74: function initApplication(){

    75: // See if ExtendedAccess has been setup yet.

    76: var exDB:NotesDatabase = sessionAsSigner.getDatabase(session.getServerName(),session.getCurrentDatabase().getFilePath());

    77: var exView:NotesView = exDB.getView("lkp_ExtendedAccess");

    78: var exDoc:NotesDocument = exView.getFirstDocument();

    79: if (exDoc == null ){

    80: // No Extended Access Documents Exist So Create The Defaults.

    81: var ex1Doc:NotesDocument = exDB.createDocument();

    82: ex1Doc.replaceItemValue("form","fm_ExtendedAccess");

    83: ex1Doc.replaceItemValue("ex_Name","Everybody");

    84: ex1Doc.replaceItemValue("ex_Value","*");

    85: ex1Doc.save(true,true);

    86: var ex2Doc:NotesDocument = exDB.createDocument();

    87: ex2Doc.replaceItemValue("form","fm_ExtendedAccess");

    88: ex2Doc.replaceItemValue("ex_Name","Anonymous");

    89: ex2Doc.replaceItemValue("ex_Value","Anonymous");

    90: ex2Doc.save(true,true);

    91: }

    92:

    93:

    94:

    95: // Find The Active Blog Configuration Document.

    96: var configView:NotesView = database.getView("lkp_cfg_ActiveConfig");

    97: var configDoc:NotesDocument = configView.getFirstDocument();

    98: if (configDoc == null ){

    99: // Must be a new setup.

    100: // Build the initial Config Document.

    101: initialConfig();

    102: // Refresh The View.

    103: configView.refresh();

    104: // Open the new Config Document.

    105: var configDoc:NotesDocument = configView.getFirstDocument();

    106: }

    107: applicationScope.configUNID = configDoc.getUniversalID();

    108: // Basics

    109: applicationScope.forumName = configDoc.getItemValueString("cfg_Basic_ForumName");

    110: applicationScope.forumShortName = configDoc.getItemValueString("cfg_Basic_ForumShortName");

    111: applicationScope.blogFooter = configDoc.getItemValueString("cfg_basic_blogFooter");

    112: // Layout

    113: applicationScope.blogTheme = configDoc.getItemValueString("cfg_basic_blogTheme");

    114: // Login

    115: applicationScope.loginMarketTitle = configDoc.getItemValueString("cfg_login_market_title");

    116: applicationScope.loginMarketText = configDoc.getItemValueString("cfg_login_market_text");

    117: applicationScope.loginLegal1 = configDoc.getItemValueString("cfg_login_legal1");

    118: applicationScope.loginLegal2 = configDoc.getItemValueString("cfg_login_legal2");

    119: // Registration

    120: applicationScope.AppAllowReg = configDoc.getItemValueString("cfg_reg_enabled");

    121: applicationScope.AppRegDB = configDoc.getItemValueString("cfg_reg_directory");

    122: // Profiles

    123: applicationScope.AppProfileEdit = configDoc.getItemValueString("cfg_profiles_enabled");

    124: applicationScope.AppProfilePassword = configDoc.getItemValueString("cfg_profiles_passwordChange");

    125:

    126: applicationScope.put("init",true)

    127: }

    128:

    129: function initialConfig(){

    130: // Used For The First Time A Person Opens This Application.

    131: // Builds The Default Configuration.

    132: var thisDB:NotesDatabase = sessionAsSigner.getDatabase(session.getServerName(),session.getCurrentDatabase().getFilePath());

    133: var newConfigDoc:NotesDocument = thisDB.createDocument();

    134: newConfigDoc.replaceItemValue("Form","cfg_Config");

    135: // Basic

    136: newConfigDoc.replaceItemValue("cfg_Basic_ForumName","xTalk Forums");

    137: newConfigDoc.replaceItemValue("cfg_Basic_ForumShortName","xTalk Forums");

    138: newConfigDoc.replaceItemValue("cfg_basic_blogFooter","Powered By xTalk V1.1");

    139: // Layout

    140: newConfigDoc.replaceItemValue("cfg_basic_blogTheme","blue");

    141: // Login

    142: newConfigDoc.replaceItemValue("cfg_login_market_title","What Can You Do With xTalk?");

    143: newConfigDoc.replaceItemValue("cfg_login_market_text","xTalk : The multi-forum solution for IBM Lotus Domino.");

    144: newConfigDoc.replaceItemValue("cfg_login_legal1","Copyright Declan F Lynch");

    145: newConfigDoc.replaceItemValue("cfg_login_legal2","IBM, the IBM logo and Lotus are trademarks of IBM Corporation, in the United States, other countries, or both.");

    146: // Registration

    147: newConfigDoc.replaceItemValue("cfg_reg_enabled","false");

    148: newConfigDoc.replaceItemValue("cfg_reg_directory","");

    149: // Profiles

    150: newConfigDoc.replaceItemValue("cfg_profiles_enabled","false");

    151: newConfigDoc.replaceItemValue("cfg_profiles_passwordChange","false");

    152:

    153: newConfigDoc.save(true,true);

    154: }

    155:

    156: var Comments = (function() {

    157: return {

    158: getCommentCount: function(permaLink) {

    159: var commentCountKey = "comment_count" + permaLink;

    160: if (!applicationScope.containsKey(commentCountKey)) {

    161: var comments = database.getView("lkp_Comments").getAllEntriesByKey(permaLink, true);

    162: applicationScope.put(commentCountKey, comments.getCount());

    163: }

    164: return applicationScope.get(commentCountKey)

    165: },

    166: incrementCommentCount: function(permaLink) {

    167: var commentCountKey = "comment_count
    " + permaLink;

    168: if (applicationScope.containsKey(commentCountKey)) {

    169: applicationScope.put(commentCountKey, this.getCommentCount(permaLink) + 1);

    170: } else {

    171: applicationScope.put(commentCountKey, 1);

    172: }

    173: },

    174: refreshCommentCount: function(permaLink) {

    175: var commentCountKey = "comment_count_" + permaLink;

    176: var comments = database.getView("lkp_Comments").getAllEntriesByKey(permaLink, true);

    177: applicationScope.put(commentCountKey, comments.getCount());

    178: }

    179: };

    180:

    181: }());

    182:

    183: function @makeArray( object ){

    184: // from : http://dontpanic82.blogspot.com/

    185: if( typeof object === 'undefined' || object === null ){ return []; }

    186: if( typeof object.toArray !== 'undefined' ){

    187: return object.toArray();

    188: }

    189: if( object.constructor === Array ){ return object; }

    190: return [ object ];

    191: }



    ► ▼ Stack Trace



    com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript action expression

    com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(Unknown Source)<br/>
    com.ibm.xsp.component.UIViewRootEx.initBeforeContents(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.initComponent(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createTree(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerEx.createView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServlet.serviceView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServletEx.serviceView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServlet.service(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServletEx.service(Unknown Source)<br/>
    com.ibm.xsp.webapp.DesignerFacesServlet.service(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService.access$0(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)<br/>
    java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)<br/>
    java.util.concurrent.FutureTask.run(Unknown Source)<br/>
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)<br/>
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)<br/>
    java.lang.Thread.run(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceThread.run(Unknown Source)<br/>
    

    com.ibm.jscript.InterpretException: Script interpreter error, line=77, col=37: [TypeError] Exception occurred calling method NotesDatabase.getView(string)

    null

    com.ibm.xsp.script.WrapperDomino$fct_Database.call(Unknown Source)<br/>
    com.ibm.jscript.types.FBSObject.call(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTCall.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTVariableDecl.interpret(Unknown Source)<br/>
    com.ibm.jscript.std.FunctionObject._executeFunction(Unknown Source)<br/>
    com.ibm.jscript.std.FunctionObject.executeFunction(Unknown Source)<br/>
    com.ibm.jscript.std.FunctionObject.call(Unknown Source)<br/>
    com.ibm.jscript.types.FBSObject.call(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTCall.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTIf.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTProgram.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTProgram.interpretEx(Unknown Source)<br/>
    com.ibm.jscript.JSExpression._interpretExpression(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.access$1(Unknown Source)<br/>
    com.ibm.jscript.JSExpression$2.run(Unknown Source)<br/>
    java.security.AccessController.doPrivileged(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.interpretExpression(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.evaluateValue(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.evaluateValue(Unknown Source)<br/>
    com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(Unknown Source)<br/>
    com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(Unknown Source)<br/>
    com.ibm.xsp.component.UIViewRootEx.initBeforeContents(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.initComponent(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createTree(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerEx.createView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServlet.serviceView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServletEx.serviceView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServlet.service(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServletEx.service(Unknown Source)<br/>
    com.ibm.xsp.webapp.DesignerFacesServlet.service(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService.access$0(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)<br/>
    java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)<br/>
    java.util.concurrent.FutureTask.run(Unknown Source)<br/>
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)<br/>
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)<br/>
    java.lang.Thread.run(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceThread.run(Unknown Source)<br/>
    

    NotesException: Database HelpMe.nsf has not been opened yet

    lotus.domino.local.Database.getView(Unknown Source)<br/>
    com.ibm.xsp.script.WrapperDomino$fct_Database.call(Unknown Source)<br/>
    com.ibm.jscript.types.FBSObject.call(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTCall.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTVariableDecl.interpret(Unknown Source)<br/>
    com.ibm.jscript.std.FunctionObject._executeFunction(Unknown Source)<br/>
    com.ibm.jscript.std.FunctionObject.executeFunction(Unknown Source)<br/>
    com.ibm.jscript.std.FunctionObject.call(Unknown Source)<br/>
    com.ibm.jscript.types.FBSObject.call(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTCall.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTIf.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTProgram.interpret(Unknown Source)<br/>
    com.ibm.jscript.ASTTree.ASTProgram.interpretEx(Unknown Source)<br/>
    com.ibm.jscript.JSExpression._interpretExpression(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.access$1(Unknown Source)<br/>
    com.ibm.jscript.JSExpression$2.run(Unknown Source)<br/>
    java.security.AccessController.doPrivileged(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.interpretExpression(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.evaluateValue(Unknown Source)<br/>
    com.ibm.jscript.JSExpression.evaluateValue(Unknown Source)<br/>
    com.ibm.xsp.javascript.JavaScriptInterpreter.interpret(Unknown Source)<br/>
    com.ibm.xsp.binding.javascript.JavaScriptMethodBinding.invoke(Unknown Source)<br/>
    com.ibm.xsp.component.UIViewRootEx.initBeforeContents(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.initComponent(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createTree(Unknown Source)<br/>
    com.ibm.xsp.page.compiled.AbstractCompiledPage.createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl._createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(Unknown Source)<br/>
    com.ibm.xsp.application.ViewHandlerEx.createView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServlet.serviceView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServletEx.serviceView(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServlet.service(Unknown Source)<br/>
    com.ibm.xsp.webapp.FacesServletEx.service(Unknown Source)<br/>
    com.ibm.xsp.webapp.DesignerFacesServlet.service(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(Unknown Source)<br/>
    com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService.access$0(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceRequest.call(Unknown Source)<br/>
    java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)<br/>
    java.util.concurrent.FutureTask.run(Unknown Source)<br/>
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)<br/>
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)<br/>
    java.lang.Thread.run(Unknown Source)<br/>
    com.ibm.domino.xsp.module.nsf.NSFService$NsfServiceThread.run(Unknown Source)
    
    • Moving Forums and Editing Posts

      By Zeff Wheelock 1 decade ago

      I am able to move topics around, but unable to move forums around. Also, I added a post and tried to edit it and the Edit screen does not save when clicking Update Reply

    • Category or Forums access working

      By Zeff Wheelock 1 decade ago

      I recreated an xTalk forum and the category and forum access is now working as designed. I implemented the newest version of the XPages Extension Library and it works.