// //============================================================================= /// <summary> /// editor for page content inline editing /// </summary> /// <param name="core"></param> /// <param name="rootPageId"></param> /// <param name="OrderByClause"></param> /// <param name="AllowPageList"></param> /// <param name="AllowReturnLink"></param> /// <param name="ArchivePages"></param> /// <param name="contactMemberID"></param> /// <param name="childListSortMethodId"></param> /// <param name="main_AllowChildListComposite"></param> /// <param name="ArchivePage"></param> /// <returns></returns> internal static string getQuickEditing(CoreController core) { string result = ""; try { int childListSortMethodId = core.doc.pageController.page.childListSortMethodId; int contactMemberId = core.doc.pageController.page.contactMemberId; int rootPageId = core.doc.pageController.pageToRootList.Last().id; core.html.addStyleLink("" + cdnPrefix + "quickEditor/styles.css", "Quick Editor"); // // -- First Active Record - Output Quick Editor form Models.Domain.ContentMetadataModel cdef = Models.Domain.ContentMetadataModel.createByUniqueName(core, PageContentModel.tableMetadata.contentName); var pageContentTable = DbBaseModel.create <TableModel>(core.cpParent, cdef.id); var editLock = WorkflowController.getEditLock(core, pageContentTable.id, core.doc.pageController.page.id); WorkflowController.recordWorkflowStatusClass authoringStatus = WorkflowController.getWorkflowStatus(core, PageContentModel.tableMetadata.contentName, core.doc.pageController.page.id); PermissionController.UserContentPermissions userContentPermissions = PermissionController.getUserContentPermissions(core, cdef); bool AllowMarkReviewed = DbBaseModel.containsField <PageContentModel>("DateReviewed"); string OptionsPanelAuthoringStatus = core.session.getAuthoringStatusMessage(false, editLock.isEditLocked, editLock.editLockByMemberName, encodeDate(editLock.editLockExpiresDate), authoringStatus.isWorkflowApproved, authoringStatus.workflowApprovedMemberName, authoringStatus.isWorkflowSubmitted, authoringStatus.workflowSubmittedMemberName, authoringStatus.isWorkflowDeleted, authoringStatus.isWorkflowInserted, authoringStatus.isWorkflowModified, authoringStatus.workflowModifiedByMemberName); // // Set Editing Authoring Control // WorkflowController.setEditLock(core, pageContentTable.id, core.doc.pageController.page.id); // // SubPanel: Authoring Status // string leftButtonCommaList = ""; leftButtonCommaList = leftButtonCommaList + "," + ButtonCancel; if (userContentPermissions.allowSave) { leftButtonCommaList = leftButtonCommaList + "," + ButtonSave + "," + ButtonOK; } if (userContentPermissions.allowDelete && (core.doc.pageController.pageToRootList.Count == 1)) { // // -- allow delete and not root page leftButtonCommaList = leftButtonCommaList + "," + ButtonDelete; } if (userContentPermissions.allowAdd) { leftButtonCommaList = leftButtonCommaList + "," + ButtonAddChildPage; } int page_ParentId = 0; if ((page_ParentId != 0) && userContentPermissions.allowAdd) { leftButtonCommaList = leftButtonCommaList + "," + ButtonAddSiblingPage; } if (AllowMarkReviewed) { leftButtonCommaList = leftButtonCommaList + "," + ButtonMarkReviewed; } if (!string.IsNullOrEmpty(leftButtonCommaList)) { leftButtonCommaList = leftButtonCommaList.Substring(1); leftButtonCommaList = core.html.getPanelButtons(leftButtonCommaList); } if (!core.doc.userErrorList.Count.Equals(0)) { result += "" + "\r<tr>" + cr2 + "<td colspan=2 class=\"qeRow\"><div class=\"qeHeadCon\">" + ErrorController.getUserError(core) + "</div></td>" + "\r</tr>"; } if (!userContentPermissions.allowSave) { result += "" + "\r<tr>" + cr2 + "<td colspan=\"2\" class=\"qeRow\">" + getQuickEditingBody(core, PageContentModel.tableMetadata.contentName, "", true, true, rootPageId, !userContentPermissions.allowSave, true, PageContentModel.tableMetadata.contentName, false, contactMemberId) + "</td>" + "\r</tr>"; } else { result += "" + "\r<tr>" + cr2 + "<td colspan=\"2\" class=\"qeRow\">" + getQuickEditingBody(core, PageContentModel.tableMetadata.contentName, "", true, true, rootPageId, !userContentPermissions.allowSave, true, PageContentModel.tableMetadata.contentName, false, contactMemberId) + "</td>" + "\r</tr>"; } result += "\r<tr>" + cr2 + "<td class=\"qeRow qeLeft\" style=\"padding-top:10px;\">Name</td>" + cr2 + "<td class=\"qeRow qeRight\">" + HtmlController.inputText_Legacy(core, "name", core.doc.pageController.page.name, 1, 0, "", false, !userContentPermissions.allowSave) + "</td>" + "\r</tr>" + ""; string pageList = " (there are no parent pages)"; // // ----- Parent pages // if (core.doc.pageController.pageToRootList.Count > 1) { pageList = "<ul class=\"qeListUL\"><li class=\"qeListLI\">Current Page</li></ul>"; foreach (PageContentModel testPage in Enumerable.Reverse(core.doc.pageController.pageToRootList)) { string pageCaption = testPage.name; if (string.IsNullOrEmpty(pageCaption)) { pageCaption = "no name #" + GenericController.encodeText(testPage.id); } pageCaption = "<a href=\"" + PageContentController.getPageLink(core, testPage.id, "") + "\">" + pageCaption + "</a>"; pageList = "<ul class=\"qeListUL\"><li class=\"qeListLI\">" + pageCaption + pageList + "</li></ul>"; } } result += "" + "\r<tr>" + cr2 + "<td class=\"qeRow qeLeft\" style=\"padding-top:26px;\">Parent Pages</td>" + cr2 + "<td class=\"qeRow qeRight\"><div class=\"qeListCon\">" + pageList + "</div></td>" + "\r</tr>"; // // ----- Child pages // AddonModel addon = DbBaseModel.create <AddonModel>(core.cpParent, addonGuidChildList); CPUtilsBaseClass.addonExecuteContext executeContext = new CPUtilsBaseClass.addonExecuteContext { addonType = CPUtilsBaseClass.addonContext.ContextPage, hostRecord = new CPUtilsBaseClass.addonExecuteHostRecordContext { contentName = PageContentModel.tableMetadata.contentName, fieldName = "", recordId = core.doc.pageController.page.id }, argumentKeyValuePairs = GenericController.convertQSNVAArgumentstoDocPropertiesList(core, core.doc.pageController.page.childListInstanceOptions), instanceGuid = PageChildListInstanceId, errorContextMessage = "calling child page addon in quick editing editor" }; pageList = core.addon.execute(addon, executeContext); if (GenericController.strInstr(1, pageList, "<ul", 1) == 0) { pageList = "(there are no child pages)"; } result += "\r<tr>" + cr2 + "<td class=\"qeRow qeLeft\" style=\"padding-top:36px;\">Child Pages</td>" + cr2 + "<td class=\"qeRow qeRight\"><div class=\"qeListCon\">" + pageList + "</div></td>" + "\r</tr>"; result = "" + "\r<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">" + GenericController.nop(result) + "\r</table>"; result = "" + leftButtonCommaList + result + leftButtonCommaList; result = core.html.getPanel(result); // // Form Wrapper // result += "" + HtmlController.inputHidden("Type", FormTypePageAuthoring) + HtmlController.inputHidden("ID", core.doc.pageController.page.id) + HtmlController.inputHidden("ContentName", PageContentModel.tableMetadata.contentName); result = HtmlController.formMultipart(core, result, core.webServer.requestQueryString, "", "ccForm"); result = "<div class=\"ccCon\">" + result + "</div>"; } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //======================================================================== // public static void processJoinForm(CoreController core) { try { string ErrorMessage = ""; string FirstName = null; string LastName = null; string FullName = null; string Email = null; int errorCode = 0; // string loginForm_Username = ""; string loginForm_Password = ""; loginForm_Username = core.docProperties.getText("username"); loginForm_Password = core.docProperties.getText("password"); // if (!GenericController.encodeBoolean(core.siteProperties.getBoolean("AllowMemberJoin", false))) { ErrorController.addUserError(core, "This site does not accept public main_MemberShip."); } else { if (!core.session.isNewCredentialOK(loginForm_Username, loginForm_Password, ref ErrorMessage, ref errorCode)) { ErrorController.addUserError(core, ErrorMessage); } else { if (!(!core.doc.userErrorList.Count.Equals(0))) { using (var csData = new CsModel(core)) { csData.open("people", "ID=" + DbController.encodeSQLNumber(core.session.user.id)); if (!csData.ok()) { LogController.logError(core, new Exception("Could not open the current members account to set the username and password.")); } else { if ((csData.getText("username") != "") || (csData.getText("password") != "") || (csData.getBoolean("admin")) || (csData.getBoolean("developer"))) { // // if the current account can be logged into, you can not join 'into' it // core.session.logout(); } FirstName = core.docProperties.getText("firstname"); LastName = core.docProperties.getText("lastname"); FullName = FirstName + " " + LastName; Email = core.docProperties.getText("email"); csData.set("FirstName", FirstName); csData.set("LastName", LastName); csData.set("Name", FullName); csData.set("username", loginForm_Username); csData.set("password", loginForm_Password); core.session.authenticateById(core.session.user.id, core.session); } csData.close(); } } } } PersonModel.invalidateCacheOfRecord <PersonModel>(core.cpParent, core.session.user.id); } catch (Exception ex) { LogController.logError(core, ex); throw; } }
// // ==================================================================================================== /// <summary> /// process and return the default login form. If processing is successful, a blank response is returned /// </summary> /// <param name="core"></param> /// <returns></returns> public static string getLoginForm_Default(CoreController core) { string result = ""; try { // bool needLoginForm = true; string formType = core.docProperties.getText("type"); if (formType == FormTypeLogin) { // // -- process a previous login for instance, and return blank if it is successful (legacy workflow) if (processLoginFormDefault(core)) { result = ""; needLoginForm = false; } } else if (formType == FormTypeSendPassword) { // // -- process send password processSendPasswordForm(core); result += "<p>If this email was found on the system an email was sent with login instructions.</p>"; } if (needLoginForm) { string loginForm; // // -- select the correct html from resources bool allowAutoLogin = core.siteProperties.getBoolean("AllowAutoLogin", false); if (core.siteProperties.getBoolean("allowEmailLogin", false)) { if (allowAutoLogin) { loginForm = Properties.Resources.defaultLogin_email_autoLogin_html; } else { loginForm = Properties.Resources.defaultLogin_email_html; } } else { if (allowAutoLogin) { loginForm = Properties.Resources.defaultLogin_autoLogin_html; } else { loginForm = Properties.Resources.defaultLogin_html; } } // // -- add user errors loginForm = loginForm.Replace("{message}", ErrorController.getUserError(core)); if (!core.doc.errorList.Count.Equals(0)) { } // // -- create the action query string QueryString = GenericController.modifyQueryString(core.webServer.requestQueryString, RequestNameHardCodedPage, "", false); QueryString = GenericController.modifyQueryString(QueryString, "requestbinary", "", false); loginForm += HtmlController.inputHidden("Type", FormTypeLogin); loginForm += HtmlController.inputHidden("email", core.session.user.email); result += HtmlController.form(core, loginForm, QueryString); // // ----- Password Form if (core.siteProperties.getBoolean("allowPasswordEmail", true)) { result += getSendPasswordForm(core); } // result = HtmlController.div(result, "ccLoginFormCon"); } } catch (Exception ex) { LogController.logError(core, ex); throw; } return(result); }
// //==================================================================================================== /// <summary> /// Send the Member his username and password /// </summary> /// <param name="Email"></param> /// <returns></returns> public static bool sendPassword(CoreController core, string Email, ref string returnUserMessage) { bool result = false; returnUserMessage = ""; try { const string passwordChrs = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678999999"; const int passwordChrsLength = 62; // string workingEmail = GenericController.encodeText(Email); // string Message = ""; string FromAddress = ""; string subject = ""; if (string.IsNullOrEmpty(workingEmail)) { ErrorController.addUserError(core, "Please enter your email address before requesting your username and password."); } else { int atPtr = GenericController.strInstr(1, workingEmail, "@"); if (atPtr < 2) { // // email not valid // ErrorController.addUserError(core, "Please enter a valid email address before requesting your username and password."); } else { string EMailName = strMid(workingEmail, 1, atPtr - 1); // LogController.addSiteActivity(core, "password request for email " + workingEmail, core.session.user.id, core.session.user.organizationId); // bool allowEmailLogin = core.siteProperties.getBoolean("allowEmailLogin", false); int recordCnt = 0; using (var csData = new CsModel(core)) { string sqlCriteria = "(email=" + DbController.encodeSQLText(workingEmail) + ")"; sqlCriteria = sqlCriteria + "and((dateExpires is null)or(dateExpires>" + DbController.encodeSQLDate(core.dateTimeNowMockable) + "))"; csData.open("People", sqlCriteria, "ID", true, core.session.user.id, "username,password", 1); if (!csData.ok()) { // // valid login account for this email not found // if (encodeText(strMid(workingEmail, atPtr + 1)).ToLowerInvariant() == "contensive.com") { // // look for expired account to renew // csData.close(); csData.open("People", "((email=" + DbController.encodeSQLText(workingEmail) + "))", "ID"); if (csData.ok()) { // // renew this old record // csData.set("developer", "1"); csData.set("admin", "1"); if (csData.getDate("dateExpires") > DateTime.MinValue) { csData.set("dateExpires", core.dateTimeNowMockable.AddDays(7).Date.ToString()); } } else { // // inject support record // csData.close(); csData.insert("people"); csData.set("name", "Contensive Support"); csData.set("email", workingEmail); csData.set("developer", "1"); csData.set("admin", "1"); csData.set("dateExpires", core.dateTimeNowMockable.AddDays(7).Date.ToString()); } } else { ErrorController.addUserError(core, "No current user was found matching this email address. Please try again. "); } } if (csData.ok()) { FromAddress = core.siteProperties.getText("EmailFromAddress", "info@" + core.webServer.requestDomain); subject = "Password Request at " + core.webServer.requestDomain; Message = ""; while (csData.ok()) { bool updateUser = false; if (string.IsNullOrEmpty(Message)) { Message = "This email was sent in reply to a request at " + core.webServer.requestDomain + " for the username and password associated with this email address. "; Message += "If this request was made by you, please return to the login screen and use the following:\r\n"; Message += Environment.NewLine; } else { Message += Environment.NewLine; Message += "Additional user accounts with the same email address: \r\n"; } // // username // string Username = csData.getText("Username"); bool usernameOK = true; int Ptr = 0; if (!allowEmailLogin) { if (Username != Username.Trim()) { Username = Username.Trim(); updateUser = true; } if (string.IsNullOrEmpty(Username)) { usernameOK = false; Ptr = 0; while (!usernameOK && (Ptr < 100)) { Username = EMailName + encodeInteger(Math.Floor(encodeNumber(Microsoft.VisualBasic.VBMath.Rnd() * 9999))); usernameOK = !core.session.isLoginOK(Username, "test"); Ptr = Ptr + 1; } if (usernameOK) { updateUser = true; } } Message += " username: "******"Password"); if (Password.Trim() != Password) { Password = Password.Trim(); updateUser = true; } if (string.IsNullOrEmpty(Password)) { for (Ptr = 0; Ptr <= 8; Ptr++) { int Index = encodeInteger(Microsoft.VisualBasic.VBMath.Rnd() * passwordChrsLength); Password = Password + strMid(passwordChrs, Index, 1); } updateUser = true; } Message += " password: "******"username", Username); csData.set("password", Password); } recordCnt = recordCnt + 1; } csData.goNext(); } } } } } if (result) { string sendStatus = ""; EmailController.queueAdHocEmail(core, "Password Email", core.session.user.id, workingEmail, FromAddress, subject, Message, "", "", "", true, false, 0, ref sendStatus); } } catch (Exception ex) { LogController.logError(core, ex); throw; } return(result); }