// public static string get(CoreController core) { try { StringBuilderLegacyController result_reset = new StringBuilderLegacyController(); result_reset.add(AdminUIController.getHeaderTitleDescription("IIS Reset", "Reset the webserver.")); // // Process the form // string Button = core.docProperties.getText("button"); if (Button == ButtonIISReset) { // // // LogController.logDebug(core, "Restarting IIS"); core.webServer.redirect("" + cdnPrefix + "Popup/WaitForIISReset.htm", "Redirect to iis reset"); Thread.Sleep(2000); var cmdDetail = new TaskModel.CmdDetailClass { addonId = 0, addonName = "GetForm_IISReset", args = new Dictionary <string, string>() }; TaskSchedulerController.addTaskToQueue(core, cmdDetail, false); } // // Display form // return(AdminUIController.getToolForm(core, result_reset.text, ButtonCancel + "," + ButtonIISReset)); } catch (Exception ex) { LogController.logError(core, ex); return(string.Empty); } }
//============================================================================= /// <summary> /// Go through all Content Definitions and create appropriate tables and fields. /// </summary> /// <returns></returns> public static string get(CoreController core) { string returnValue = ""; try { Processor.Models.Domain.ContentMetadataModel metadata = null; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); string[,] ContentNameArray = null; int ContentNameCount = 0; string TableName = null; string ButtonList; // ButtonList = ButtonCancel + "," + ButtonRun; // Stream.add(AdminUIController.getHeaderTitleDescription("Synchronize Tables to Content Definitions", "This tools goes through all Content Definitions and creates any necessary Tables and Table Fields to support the Definition.")); // if (core.docProperties.getText("Button") != "") { // // Run Tools // Stream.add("Synchronizing Tables to Content Definitions<br>"); using (var csData = new CsModel(core)) { csData.open("Content", "", "", false, 0, "id"); if (csData.ok()) { do { metadata = Processor.Models.Domain.ContentMetadataModel.create(core, csData.getInteger("id")); TableName = metadata.tableName; Stream.add("Synchronizing Content " + metadata.name + " to table " + TableName + "<br>"); using (var db = new DbController(core, metadata.dataSourceName)) { db.createSQLTable(TableName); if (metadata.fields.Count > 0) { foreach (var keyValuePair in metadata.fields) { ContentFieldMetadataModel field = keyValuePair.Value; Stream.add("...Field " + field.nameLc + "<br>"); db.createSQLTableField(TableName, field.nameLc, field.fieldTypeId); } } } csData.goNext(); } while (csData.ok()); ContentNameArray = csData.getRows(); ContentNameCount = ContentNameArray.GetUpperBound(1) + 1; } } } returnValue = AdminUIController.getToolForm(core, Stream.text, ButtonList); } catch (Exception ex) { LogController.logError(core, ex); throw; } return(returnValue); }
// public static string get(CoreController core) { try { var result_guid = new StringBuilderLegacyController(); result_guid.add(AdminUIController.getHeaderTitleDescription("Create GUID", "Use this tool to create a GUID. This is useful when creating new Addons.")); // // Process the form string Button = core.docProperties.getText("button"); if (Button.Equals(ButtonCancel)) { return(string.Empty); } // result_guid.add(HtmlController.inputText_Legacy(core, "GUID", GenericController.getGUID(), 1, 80)); // // Display form return(AdminUIController.getToolForm(core, result_guid.text, ButtonCancel + "," + ButtonCreateGUId)); } catch (Exception ex) { LogController.logError(core, ex); return(string.Empty); } }
// //======================================================================== /// <summary> /// Display a field in the admin index form /// </summary> /// <param name="core"></param> /// <param name="adminData"></param> /// <param name="fieldName"></param> /// <param name="CS"></param> /// <param name="IsLookupFieldValid"></param> /// <param name="IsEmailContent"></param> /// <returns></returns> public static string getGridCell(CoreController core, AdminDataModel adminData, string fieldName, CsModel csData, bool IsLookupFieldValid, bool IsEmailContent) { try { var Stream = new StringBuilderLegacyController(); var field = adminData.adminContent.fields[fieldName.ToLowerInvariant()]; if (field.password) { // // -- do not list password fields Stream.add("****"); } else { int Pos = 0; switch (field.fieldTypeId) { case CPContentBaseClass.FieldTypeIdEnum.File: case CPContentBaseClass.FieldTypeIdEnum.FileImage: { string filename = csData.getText(field.nameLc); filename = GenericController.strReplace(filename, "\\", "/"); Pos = filename.LastIndexOf("/") + 1; if (Pos != 0) { filename = filename.Substring(Pos); } Stream.add(filename); break; } case CPContentBaseClass.FieldTypeIdEnum.Lookup: { if (IsLookupFieldValid) { Stream.add(csData.getText("LookupTable" + field.id + "Name")); } else if (field.lookupList != "") { string[] lookups = field.lookupList.Split(','); int LookupPtr = csData.getInteger(field.nameLc) - 1; if (LookupPtr <= lookups.GetUpperBound(0)) { if (LookupPtr >= 0) { Stream.add(lookups[LookupPtr]); } } } else { Stream.add(" "); } break; } case CPContentBaseClass.FieldTypeIdEnum.MemberSelect: { if (IsLookupFieldValid) { Stream.add(csData.getText("LookupTable" + field.id + "Name")); } else { Stream.add(csData.getText(field.nameLc)); } break; } case CPContentBaseClass.FieldTypeIdEnum.Boolean: { if (csData.getBoolean(field.nameLc)) { Stream.add("yes"); } else { Stream.add("no"); } break; } case CPContentBaseClass.FieldTypeIdEnum.Currency: { string fieldValueText = csData.getText(field.nameLc); if (string.IsNullOrWhiteSpace(fieldValueText)) { Stream.add(fieldValueText); break; } Stream.add(string.Format("{0:C}", csData.getNumber(field.nameLc))); break; } case CPContentBaseClass.FieldTypeIdEnum.LongText: case CPContentBaseClass.FieldTypeIdEnum.HTML: case CPContentBaseClass.FieldTypeIdEnum.HTMLCode: { string fieldValueText = csData.getText(field.nameLc); if (fieldValueText.Length > 50) { fieldValueText = fieldValueText.left(50) + "[more]"; } Stream.add(fieldValueText); break; } case CPContentBaseClass.FieldTypeIdEnum.FileText: case CPContentBaseClass.FieldTypeIdEnum.FileCSS: case CPContentBaseClass.FieldTypeIdEnum.FileXML: case CPContentBaseClass.FieldTypeIdEnum.FileJavascript: case CPContentBaseClass.FieldTypeIdEnum.FileHTML: case CPContentBaseClass.FieldTypeIdEnum.FileHTMLCode: { string filename = csData.getText(field.nameLc); if (!string.IsNullOrEmpty(filename)) { string Copy = core.cdnFiles.readFileText(filename); Stream.add(Copy); } break; } case CPContentBaseClass.FieldTypeIdEnum.Redirect: case CPContentBaseClass.FieldTypeIdEnum.ManyToMany: { Stream.add("n/a"); break; } case CPContentBaseClass.FieldTypeIdEnum.Date: { // // -- if minvalue, use blank, if no time-part, do short-date DateTime cellValueDate = csData.getDate(field.nameLc); if (cellValueDate.Equals(DateTime.MinValue)) { Stream.add(""); } else if (cellValueDate.Equals(cellValueDate.Date)) { Stream.add(cellValueDate.ToShortDateString()); } else { Stream.add(cellValueDate.ToString()); } break; } default: { string valueString = csData.getText(field.nameLc); if (string.IsNullOrWhiteSpace(valueString)) { Stream.add(valueString); break; } Stream.add(csData.getText(field.nameLc)); break; } } } return(HtmlController.encodeHtml(Stream.text)); } catch (Exception ex) { LogController.logError(core, ex); throw; } }
// //============================================================================= // Print the Configure Index Form //============================================================================= // public static string get(CPClass cp, CoreController core, AdminDataModel adminData) { string result = ""; try { // todo refactor out ContentMetadataModel adminContent = adminData.adminContent; string Button = core.docProperties.getText(RequestNameButton); if (Button == ButtonOK) { // // -- Process OK, remove subform from querystring and return empty cp.Doc.AddRefreshQueryString(RequestNameAdminSubForm, ""); return(result); } // // Load Request if (Button == ButtonReset) { // // -- Process reset core.userProperty.setProperty(AdminDataModel.IndexConfigPrefix + adminContent.id.ToString(), ""); } IndexConfigClass IndexConfig = IndexConfigClass.get(core, adminData); int ToolsAction = core.docProperties.getInteger("dta"); int TargetFieldId = core.docProperties.getInteger("fi"); string TargetFieldName = core.docProperties.getText("FieldName"); int ColumnPointer = core.docProperties.getInteger("dtcn"); const string RequestNameAddField = "addfield"; string FieldNameToAdd = GenericController.toUCase(core.docProperties.getText(RequestNameAddField)); const string RequestNameAddFieldId = "addfieldID"; int FieldIDToAdd = core.docProperties.getInteger(RequestNameAddFieldId); bool normalizeSaveLoad = core.docProperties.getBoolean("NeedToReloadConfig"); bool AllowContentAutoLoad = false; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); string Title = "Set Columns: " + adminContent.name; string Description = "Use the icons to add, remove and modify your personal column prefernces for this content (" + adminContent.name + "). Hit OK when complete. Hit Reset to restore your column preferences for this content to the site's default column preferences."; Stream.add(AdminUIController.getHeaderTitleDescription(Title, Description)); // //-------------------------------------------------------------------------------- // Process actions //-------------------------------------------------------------------------------- // if (adminContent.id != 0) { var CDef = ContentMetadataModel.create(core, adminContent.id); int ColumnWidthTotal = 0; if (ToolsAction != 0) { // // Block contentautoload, then force a load at the end // AllowContentAutoLoad = (core.siteProperties.getBoolean("AllowContentAutoLoad", true)); core.siteProperties.setProperty("AllowContentAutoLoad", false); bool reloadMetadata = false; int SourceContentId = 0; string SourceName = null; // // Make sure the FieldNameToAdd is not-inherited, if not, create new field // if (FieldIDToAdd != 0) { foreach (KeyValuePair <string, ContentFieldMetadataModel> keyValuePair in adminContent.fields) { ContentFieldMetadataModel field = keyValuePair.Value; if (field.id == FieldIDToAdd) { if (field.inherited) { SourceContentId = field.contentId; SourceName = field.nameLc; // // -- copy the field using (var CSSource = new CsModel(core)) { if (CSSource.open("Content Fields", "(ContentID=" + SourceContentId + ")and(Name=" + DbController.encodeSQLText(SourceName) + ")")) { using (var CSTarget = new CsModel(core)) { if (CSTarget.insert("Content Fields")) { CSSource.copyRecord(CSTarget); CSTarget.set("ContentID", adminContent.id); reloadMetadata = true; } } } } } break; } } } // // Make sure all fields are not-inherited, if not, create new fields // foreach (var column in IndexConfig.columns) { ContentFieldMetadataModel field = adminContent.fields[column.Name.ToLowerInvariant()]; if (field.inherited) { SourceContentId = field.contentId; SourceName = field.nameLc; using (var CSSource = new CsModel(core)) { if (CSSource.open("Content Fields", "(ContentID=" + SourceContentId + ")and(Name=" + DbController.encodeSQLText(SourceName) + ")")) { using (var CSTarget = new CsModel(core)) { if (CSTarget.insert("Content Fields")) { CSSource.copyRecord(CSTarget); CSTarget.set("ContentID", adminContent.id); reloadMetadata = true; } } } } } } // // get current values for Processing // foreach (var column in IndexConfig.columns) { ColumnWidthTotal += column.Width; } // // ----- Perform any actions first // switch (ToolsAction) { case ToolsActionAddField: { // // Add a field to the index form // if (FieldIDToAdd != 0) { IndexConfigColumnClass column = null; foreach (var columnx in IndexConfig.columns) { columnx.Width = encodeInteger((columnx.Width * 80) / (double)ColumnWidthTotal); } { column = new IndexConfigColumnClass(); using (var csData = new CsModel(core)) { if (csData.openRecord("Content Fields", FieldIDToAdd)) { column.Name = csData.getText("name"); column.Width = 20; } } IndexConfig.columns.Add(column); normalizeSaveLoad = true; } } // break; } case ToolsActionRemoveField: { // // Remove a field to the index form int columnWidthTotal = 0; var dstColumns = new List <IndexConfigColumnClass>(); foreach (var column in IndexConfig.columns) { if (column.Name != TargetFieldName.ToLowerInvariant()) { dstColumns.Add(column); columnWidthTotal += column.Width; } } IndexConfig.columns = dstColumns; normalizeSaveLoad = true; break; } case ToolsActionMoveFieldLeft: { if (IndexConfig.columns.First().Name != TargetFieldName.ToLowerInvariant()) { int listIndex = 0; foreach (var column in IndexConfig.columns) { if (column.Name == TargetFieldName.ToLowerInvariant()) { break; } listIndex += 1; } IndexConfig.columns.swap(listIndex, listIndex - 1); normalizeSaveLoad = true; } break; } case ToolsActionMoveFieldRight: { if (IndexConfig.columns.Last().Name != TargetFieldName.ToLowerInvariant()) { int listIndex = 0; foreach (var column in IndexConfig.columns) { if (column.Name == TargetFieldName.ToLowerInvariant()) { break; } listIndex += 1; } IndexConfig.columns.swap(listIndex, listIndex + 1); normalizeSaveLoad = true; } break; } case ToolsActionExpand: { foreach (var column in IndexConfig.columns) { if (column.Name == TargetFieldName.ToLowerInvariant()) { column.Width = Convert.ToInt32(Convert.ToDouble(column.Width) * 1.1); } else { column.Width = Convert.ToInt32(Convert.ToDouble(column.Width) * 0.9); } } normalizeSaveLoad = true; break; } case ToolsActionContract: { foreach (var column in IndexConfig.columns) { if (column.Name != TargetFieldName.ToLowerInvariant()) { column.Width = Convert.ToInt32(Convert.ToDouble(column.Width) * 1.1); } else { column.Width = Convert.ToInt32(Convert.ToDouble(column.Width) * 0.9); } } normalizeSaveLoad = true; break; } } // // Reload CDef if it changed // if (reloadMetadata) { core.clearMetaData(); core.cache.invalidateAll(); CDef = ContentMetadataModel.createByUniqueName(core, adminContent.name); } // // save indexconfig // if (normalizeSaveLoad) { // // Normalize the widths of the remaining columns ColumnWidthTotal = 0; foreach (var column in IndexConfig.columns) { ColumnWidthTotal += column.Width; } foreach (var column in IndexConfig.columns) { column.Width = encodeInteger((1000 * column.Width) / (double)ColumnWidthTotal); } GetHtmlBodyClass.setIndexSQL_SaveIndexConfig(cp, core, IndexConfig); IndexConfig = IndexConfigClass.get(core, adminData); } } // //-------------------------------------------------------------------------------- // Display the form //-------------------------------------------------------------------------------- // Stream.add("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"99%\"><tr>"); Stream.add("<td width=\"5%\"> </td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>10%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>20%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>30%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>40%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>50%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>60%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>70%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>80%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>90%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>100%</nobr></td>"); Stream.add("<td width=\"4%\" align=\"center\"> </td>"); Stream.add("</tr></table>"); // Stream.add("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"99%\"><tr>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><img src=\"" + cdnPrefix + "images/black.gif\" width=\"1\" height=\"10\" ><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"100%\" height=\"10\" ></nobr></td>"); Stream.add("</tr></table>"); // // print the column headers // ColumnWidthTotal = 0; int InheritedFieldCount = 0; if (IndexConfig.columns.Count > 0) { // // Calc total width // foreach (var column in IndexConfig.columns) { ColumnWidthTotal += column.Width; } if (ColumnWidthTotal > 0) { Stream.add("<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"90%\">"); // // -- header Stream.add("<tr>"); int ColumnWidth = 0; int fieldId = 0; string Caption = null; foreach (var column in IndexConfig.columns) { // // print column headers - anchored so they sort columns // ColumnWidth = encodeInteger(100 * (column.Width / (double)ColumnWidthTotal)); ContentFieldMetadataModel field = adminContent.fields[column.Name.ToLowerInvariant()]; fieldId = field.id; Caption = field.caption; if (field.inherited) { Caption = Caption + "*"; InheritedFieldCount = InheritedFieldCount + 1; } Stream.add("<td class=\"small\" width=\"" + ColumnWidth + "%\" valign=\"top\" align=\"left\" style=\"background-color:white;border: 1px solid #555;\">" + Caption + "</td>"); } Stream.add("</tr>"); // // -- body Stream.add("<tr>"); foreach (var column in IndexConfig.columns) { // // print column headers - anchored so they sort columns // ColumnWidth = encodeInteger(100 * (column.Width / (double)ColumnWidthTotal)); ContentFieldMetadataModel field = adminContent.fields[column.Name.ToLowerInvariant()]; fieldId = field.id; Caption = field.caption; if (field.inherited) { Caption = Caption + "*"; InheritedFieldCount = InheritedFieldCount + 1; } int ColumnPtr = 0; string link = "?" + core.doc.refreshQueryString + "&FieldName=" + HtmlController.encodeHtml(field.nameLc) + "&fi=" + fieldId + "&dtcn=" + ColumnPtr + "&" + RequestNameAdminSubForm + "=" + AdminFormIndex_SubFormSetColumns; Stream.add("<td width=\"" + ColumnWidth + "%\" valign=\"top\" align=\"left\">"); Stream.add(HtmlController.div(AdminUIController.getDeleteLink(link + "&dta=" + ToolsActionRemoveField), "text-center")); Stream.add(HtmlController.div(AdminUIController.getArrowRightLink(link + "&dta=" + ToolsActionMoveFieldRight), "text-center")); Stream.add(HtmlController.div(AdminUIController.getArrowLeftLink(link + "&dta=" + ToolsActionMoveFieldLeft), "text-center")); Stream.add(HtmlController.div(AdminUIController.getExpandLink(link + "&dta=" + ToolsActionExpand), "text-center")); Stream.add(HtmlController.div(AdminUIController.getContractLink(link + "&dta=" + ToolsActionContract), "text-center")); Stream.add("</td>"); } Stream.add("</tr>"); Stream.add("</table>"); } } // // ----- If anything was inherited, put up the message // if (InheritedFieldCount > 0) { Stream.add("<p class=\"ccNormal\">* This field was inherited from the Content Definition's Parent. Inherited fields will automatically change when the field in the parent is changed. If you alter these settings, this connection will be broken, and the field will no longer inherit it's properties.</P class=\"ccNormal\">"); } // // ----- now output a list of fields to add // if (CDef.fields.Count == 0) { Stream.add(SpanClassAdminNormal + "This Content Definition has no fields</span><br>"); } else { foreach (KeyValuePair <string, ContentFieldMetadataModel> keyValuePair in adminContent.fields) { ContentFieldMetadataModel field = keyValuePair.Value; // // display the column if it is not in use if ((IndexConfig.columns.Find(x => x.Name == field.nameLc) == null)) { if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.File) { // // file can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (file field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileText) { // // filename can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (text file field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileHTML) { // // filename can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (html file field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileHTMLCode) { // // filename can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (html code file field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileCSS) { // // css filename can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (css file field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileXML) { // // xml filename can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (xml file field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileJavascript) { // // javascript filename can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (javascript file field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.LongText) { // // can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (long text field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.HTML) { // // can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (html field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileImage) { // // can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (image field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.Redirect) { // // can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (redirect field)")); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.ManyToMany) { // // many to many can not be search Stream.add(HtmlController.div(iconNotAvailable + " " + field.caption + " (many-to-many field)")); } else { // // can be used as column header string link = "?" + core.doc.refreshQueryString + "&fi=" + field.id + "&dta=" + ToolsActionAddField + "&" + RequestNameAddFieldId + "=" + field.id + "&" + RequestNameAdminSubForm + "=" + AdminFormIndex_SubFormSetColumns; Stream.add(HtmlController.div(AdminUIController.getPlusLink(link, " " + field.caption))); } } } } } // //-------------------------------------------------------------------------------- // print the content tables that have index forms to Configure //-------------------------------------------------------------------------------- // core.siteProperties.setProperty("AllowContentAutoLoad", GenericController.encodeText(AllowContentAutoLoad)); string Content = "" + Stream.text + HtmlController.inputHidden("cid", adminContent.id.ToString()) + HtmlController.inputHidden(rnAdminForm, "1") + HtmlController.inputHidden(RequestNameAdminSubForm, AdminFormIndex_SubFormSetColumns) + ""; // // -- assemble form result = AdminUIController.getToolForm(core, Content, ButtonOK + "," + ButtonReset); core.html.addTitle(Title); } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// // ==================================================================================================== /// <summary> /// Generate the content of a tab in the Edit Screen /// </summary> /// <param name="core"></param> /// <param name="adminData"></param> /// <param name="RecordID"></param> /// <param name="ContentID"></param> /// <param name="record_readOnly"></param> /// <param name="IsLandingPage"></param> /// <param name="IsRootPage"></param> /// <param name="EditTab"></param> /// <param name="EditorContext"></param> /// <param name="return_NewFieldList"></param> /// <param name="HelpCnt"></param> /// <param name="HelpIDCache"></param> /// <param name="helpDefaultCache"></param> /// <param name="HelpCustomCache"></param> /// <param name="AllowHelpMsgCustom"></param> /// <param name="helpIdIndex"></param> /// <returns></returns> public static string getTab(CoreController core, AdminDataModel adminData, EditorEnvironmentModel editorEnv, int RecordID, int ContentID, string EditTab) { string returnHtml = ""; try { // // ----- Open the panel if (adminData.adminContent.fields.Count <= 0) { // // There are no visible fiels, return empty LogController.logError(core, new GenericException("There is no metadata for this field.")); } else { // // ----- Build an index to sort the fields by EditSortOrder Dictionary <string, ContentFieldMetadataModel> sortingFields = new Dictionary <string, ContentFieldMetadataModel>(); foreach (var keyValuePair in adminData.adminContent.fields) { ContentFieldMetadataModel field = keyValuePair.Value; if (field.editTabName.ToLowerInvariant() == EditTab.ToLowerInvariant()) { if (AdminDataModel.isVisibleUserField(core, field.adminOnly, field.developerOnly, field.active, field.authorable, field.nameLc, adminData.adminContent.tableName)) { string AlphaSort = GenericController.getIntegerString(field.editSortPriority, 10) + "-" + GenericController.getIntegerString(field.id, 10); sortingFields.Add(AlphaSort, field); } } } // // ----- display the record fields bool AllowHelpIcon = core.visitProperty.getBoolean("AllowHelpIcon"); StringBuilderLegacyController resultBody = new StringBuilderLegacyController(); bool needUniqueEmailMessage = false; foreach (var kvp in sortingFields) { ContentFieldMetadataModel field = kvp.Value; string editorRow = EditorRowClass.getEditorRow(core, field, adminData, editorEnv); resultBody.add("<tr><td colspan=2>" + editorRow + "</td></tr>"); } // // ----- add the *Required Fields footer resultBody.add("<tr><td colspan=2 style=\"padding-top:10px;font-size:70%\"><div>* Field is required.</div><div>** Field must be unique.</div>"); if (needUniqueEmailMessage) { resultBody.add("<div>*** Field must be unique because this site allows login by email.</div>"); } resultBody.add("</td></tr>"); // // ----- close the panel returnHtml = AdminUIController.getEditPanel(core, false, "", "", AdminUIController.editTable(resultBody.text)); adminData.editSectionPanelCount += 1; resultBody = null; } } catch (Exception ex) { LogController.logError(core, ex); throw; } return(returnHtml); }
// //================================================================================= // //================================================================================= // public static string get(CPClass cp, CoreController core, AdminDataModel adminData) { string returnForm = ""; try { // string SearchValue = null; FindWordMatchEnum MatchOption = 0; int FormFieldPtr = 0; int FormFieldCnt = 0; ContentMetadataModel CDef = null; string FieldName = null; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); int FieldPtr = 0; bool RowEven = false; string RQS = null; string[] FieldNames = { }; string[] FieldCaption = { }; int[] fieldId = null; CPContentBaseClass.FieldTypeIdEnum[] fieldTypeId = { }; string[] FieldValue = { }; int[] FieldMatchOptions = { }; int FieldMatchOption = 0; string[] FieldLookupContentName = { }; string[] FieldLookupList = { }; int ContentId = 0; int FieldCnt = 0; int FieldSize = 0; int RowPointer = 0; string LeftButtons = ""; string ButtonBar = null; string Title = null; string TitleBar = null; string Content = null; // // Process last form // string Button = core.docProperties.getText("button"); IndexConfigClass IndexConfig = null; if (!string.IsNullOrEmpty(Button)) { switch (Button) { case ButtonSearch: IndexConfig = IndexConfigClass.get(core, adminData); FormFieldCnt = core.docProperties.getInteger("fieldcnt"); if (FormFieldCnt > 0) { for (FormFieldPtr = 0; FormFieldPtr < FormFieldCnt; FormFieldPtr++) { FieldName = GenericController.toLCase(core.docProperties.getText("fieldname" + FormFieldPtr)); MatchOption = (FindWordMatchEnum)core.docProperties.getInteger("FieldMatch" + FormFieldPtr); switch (MatchOption) { case FindWordMatchEnum.MatchEquals: case FindWordMatchEnum.MatchGreaterThan: case FindWordMatchEnum.matchincludes: case FindWordMatchEnum.MatchLessThan: SearchValue = core.docProperties.getText("FieldValue" + FormFieldPtr); break; default: SearchValue = ""; break; } if (!IndexConfig.findWords.ContainsKey(FieldName)) { // // fieldname not found, save if not FindWordMatchEnum.MatchIgnore // if (MatchOption != FindWordMatchEnum.MatchIgnore) { IndexConfig.findWords.Add(FieldName, new IndexConfigFindWordClass { Name = FieldName, MatchOption = MatchOption, Value = SearchValue }); } } else { // // fieldname was found // IndexConfig.findWords[FieldName].MatchOption = MatchOption; IndexConfig.findWords[FieldName].Value = SearchValue; } } } GetHtmlBodyClass.setIndexSQL_SaveIndexConfig(cp, core, IndexConfig); return(string.Empty); case ButtonCancel: return(string.Empty); } } IndexConfig = IndexConfigClass.get(core, adminData); Button = "CriteriaSelect"; RQS = core.doc.refreshQueryString; // // ----- ButtonBar // if (adminData.ignore_legacyMenuDepth > 0) { LeftButtons += AdminUIController.getButtonPrimary(ButtonClose, "window.close();"); } else { LeftButtons += AdminUIController.getButtonPrimary(ButtonCancel); } LeftButtons += AdminUIController.getButtonPrimary(ButtonSearch); ButtonBar = AdminUIController.getSectionButtonBar(core, LeftButtons, ""); // // ----- TitleBar // Title = adminData.adminContent.name; Title = Title + " Advanced Search"; string TitleDescription = "<div>Enter criteria for each field to identify and select your results. The results of a search will have to have all of the criteria you enter.</div>"; TitleBar = AdminUIController.getSectionHeader(core, Title, TitleDescription); // // ----- List out all fields // CDef = ContentMetadataModel.createByUniqueName(core, adminData.adminContent.name); FieldSize = 100; Array.Resize(ref FieldNames, FieldSize + 1); Array.Resize(ref FieldCaption, FieldSize + 1); Array.Resize(ref fieldId, FieldSize + 1); Array.Resize(ref fieldTypeId, FieldSize + 1); Array.Resize(ref FieldValue, FieldSize + 1); Array.Resize(ref FieldMatchOptions, FieldSize + 1); Array.Resize(ref FieldLookupContentName, FieldSize + 1); Array.Resize(ref FieldLookupList, FieldSize + 1); foreach (KeyValuePair <string, ContentFieldMetadataModel> keyValuePair in adminData.adminContent.fields) { ContentFieldMetadataModel field = keyValuePair.Value; if (FieldPtr >= FieldSize) { FieldSize = FieldSize + 100; Array.Resize(ref FieldNames, FieldSize + 1); Array.Resize(ref FieldCaption, FieldSize + 1); Array.Resize(ref fieldId, FieldSize + 1); Array.Resize(ref fieldTypeId, FieldSize + 1); Array.Resize(ref FieldValue, FieldSize + 1); Array.Resize(ref FieldMatchOptions, FieldSize + 1); Array.Resize(ref FieldLookupContentName, FieldSize + 1); Array.Resize(ref FieldLookupList, FieldSize + 1); } FieldName = GenericController.toLCase(field.nameLc); FieldNames[FieldPtr] = FieldName; FieldCaption[FieldPtr] = field.caption; fieldId[FieldPtr] = field.id; fieldTypeId[FieldPtr] = field.fieldTypeId; if (fieldTypeId[FieldPtr] == CPContentBaseClass.FieldTypeIdEnum.Lookup) { ContentId = field.lookupContentId; if (ContentId > 0) { FieldLookupContentName[FieldPtr] = MetadataController.getContentNameByID(core, ContentId); } FieldLookupList[FieldPtr] = field.lookupList; } // // set prepoplate value from indexconfig // if (IndexConfig.findWords.ContainsKey(FieldName)) { FieldValue[FieldPtr] = IndexConfig.findWords[FieldName].Value; FieldMatchOptions[FieldPtr] = (int)IndexConfig.findWords[FieldName].MatchOption; } FieldPtr += 1; } FieldCnt = FieldPtr; // // Add headers to stream // returnForm = returnForm + "<table border=0 width=100% cellspacing=0 cellpadding=4>"; // RowPointer = 0; for (FieldPtr = 0; FieldPtr < FieldCnt; FieldPtr++) { returnForm = returnForm + HtmlController.inputHidden("fieldname" + FieldPtr, FieldNames[FieldPtr]); RowEven = ((RowPointer % 2) == 0); FieldMatchOption = FieldMatchOptions[FieldPtr]; switch (fieldTypeId[FieldPtr]) { case CPContentBaseClass.FieldTypeIdEnum.Date: // // Date returnForm = returnForm + "<tr>" + "<td class=\"ccAdminEditCaption\">" + FieldCaption[FieldPtr] + "</td>" + "<td class=\"ccAdminEditField\">" + "<div style=\"display:block;float:left;width:800px;\">" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, encodeInteger(FindWordMatchEnum.MatchIgnore).ToString(), FieldMatchOption.ToString(), "") + "ignore</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, encodeInteger(FindWordMatchEnum.MatchEmpty).ToString(), FieldMatchOption.ToString(), "") + "empty</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, encodeInteger(FindWordMatchEnum.MatchNotEmpty).ToString(), FieldMatchOption.ToString(), "") + "not empty</div>" + "<div style=\"display:block;float:left;width:50px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, encodeInteger(FindWordMatchEnum.MatchEquals).ToString(), FieldMatchOption.ToString(), "") + "=</div>" + "<div style=\"display:block;float:left;width:50px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, encodeInteger(FindWordMatchEnum.MatchGreaterThan).ToString(), FieldMatchOption.ToString(), "") + "></div>" + "<div style=\"display:block;float:left;width:50px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, encodeInteger(FindWordMatchEnum.MatchLessThan).ToString(), FieldMatchOption.ToString(), "") + "<</div>" + "<div style=\"display:block;float:left;width:300px;\">" + HtmlController.inputDate(core, "fieldvalue" + FieldPtr, encodeDate(FieldValue[FieldPtr])).Replace(">", " onFocus=\"ccAdvSearchText\">") + "</div>" + "</div>" + "</td>" + "</tr>"; break; case CPContentBaseClass.FieldTypeIdEnum.Currency: case CPContentBaseClass.FieldTypeIdEnum.Float: case CPContentBaseClass.FieldTypeIdEnum.Integer: case CPContentBaseClass.FieldTypeIdEnum.AutoIdIncrement: // // -- Numeric - changed FindWordMatchEnum.MatchEquals to MatchInclude to be compatible with Find Search returnForm = returnForm + "<tr>" + "<td class=\"ccAdminEditCaption\">" + FieldCaption[FieldPtr] + "</td>" + "<td class=\"ccAdminEditField\">" + "<div style=\"display:block;float:left;width:800px;\">" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchIgnore).ToString(), FieldMatchOption.ToString(), "") + "ignore</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchEmpty).ToString(), FieldMatchOption.ToString(), "") + "empty</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchNotEmpty).ToString(), FieldMatchOption.ToString(), "") + "not empty</div>" + "<div style=\"display:block;float:left;width:50px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.matchincludes).ToString(), FieldMatchOption.ToString(), "n" + FieldPtr) + "=</div>" + "<div style=\"display:block;float:left;width:50px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchGreaterThan).ToString(), FieldMatchOption.ToString(), "") + "></div>" + "<div style=\"display:block;float:left;width:50px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchLessThan).ToString(), FieldMatchOption.ToString(), "") + "<</div>" + "<div style=\"display:block;float:left;width:300px;\">" + HtmlController.inputText_Legacy(core, "fieldvalue" + FieldPtr, FieldValue[FieldPtr], 1, 5, "", false, false, "ccAdvSearchText").Replace(">", " onFocus=\"var e=getElementById('n" + FieldPtr + "');e.checked=1;\">") + "</div>" + "</div>" + "</td>" + "</tr>"; RowPointer += 1; break; case CPContentBaseClass.FieldTypeIdEnum.File: case CPContentBaseClass.FieldTypeIdEnum.FileImage: // // File // returnForm = returnForm + "<tr>" + "<td class=\"ccAdminEditCaption\">" + FieldCaption[FieldPtr] + "</td>" + "<td class=\"ccAdminEditField\">" + "<div style=\"display:block;float:left;width:800px;\">" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchIgnore).ToString(), FieldMatchOption.ToString(), "") + "ignore</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchEmpty).ToString(), FieldMatchOption.ToString(), "") + "empty</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchNotEmpty).ToString(), FieldMatchOption.ToString(), "") + "not empty</div>" + "</div>" + "</td>" + "</tr>"; RowPointer = RowPointer + 1; break; case CPContentBaseClass.FieldTypeIdEnum.Boolean: // // Boolean // returnForm = returnForm + "<tr>" + "<td class=\"ccAdminEditCaption\">" + FieldCaption[FieldPtr] + "</td>" + "<td class=\"ccAdminEditField\">" + "<div style=\"display:block;float:left;width:800px;\">" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchIgnore).ToString(), FieldMatchOption.ToString(), "") + "ignore</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchTrue).ToString(), FieldMatchOption.ToString(), "") + "true</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchFalse).ToString(), FieldMatchOption.ToString(), "") + "false</div>" + "</div>" + "</td>" + "</tr>"; break; case CPContentBaseClass.FieldTypeIdEnum.Text: case CPContentBaseClass.FieldTypeIdEnum.LongText: case CPContentBaseClass.FieldTypeIdEnum.HTML: case CPContentBaseClass.FieldTypeIdEnum.HTMLCode: case CPContentBaseClass.FieldTypeIdEnum.FileHTML: case CPContentBaseClass.FieldTypeIdEnum.FileHTMLCode: case CPContentBaseClass.FieldTypeIdEnum.FileCSS: case CPContentBaseClass.FieldTypeIdEnum.FileJavascript: case CPContentBaseClass.FieldTypeIdEnum.FileXML: // // Text // returnForm = returnForm + "<tr>" + "<td class=\"ccAdminEditCaption\">" + FieldCaption[FieldPtr] + "</td>" + "<td class=\"ccAdminEditField\">" + "<div style=\"display:block;float:left;width:800px;\">" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchIgnore).ToString(), FieldMatchOption.ToString(), "") + "ignore</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchEmpty).ToString(), FieldMatchOption.ToString(), "") + "empty</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchNotEmpty).ToString(), FieldMatchOption.ToString(), "") + "not empty</div>" + "<div style=\"display:block;float:left;width:150px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.matchincludes).ToString(), FieldMatchOption.ToString(), "t" + FieldPtr) + "includes</div>" + "<div style=\"display:block;float:left;width:300px;\">" + HtmlController.inputText_Legacy(core, "fieldvalue" + FieldPtr, FieldValue[FieldPtr], 1, 5, "", false, false, "ccAdvSearchText").Replace(">", " onFocus=\"var e=getElementById('t" + FieldPtr + "');e.checked=1;\">") + "</div>" + "</div>" + "</td>" + "</tr>"; RowPointer = RowPointer + 1; break; case CPContentBaseClass.FieldTypeIdEnum.Lookup: case CPContentBaseClass.FieldTypeIdEnum.MemberSelect: // // Lookup returnForm = returnForm + "<tr>" + "<td class=\"ccAdminEditCaption\">" + FieldCaption[FieldPtr] + "</td>" + "<td class=\"ccAdminEditField\">" + "<div style=\"display:block;float:left;width:800px;\">" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchIgnore).ToString(), FieldMatchOption.ToString(), "") + "ignore</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchEmpty).ToString(), FieldMatchOption.ToString(), "") + "empty</div>" + "<div style=\"display:block;float:left;width:100px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.MatchNotEmpty).ToString(), FieldMatchOption.ToString(), "") + "not empty</div>" + "<div style=\"display:block;float:left;width:150px;\">" + HtmlController.inputRadio("FieldMatch" + FieldPtr, ((int)FindWordMatchEnum.matchincludes).ToString(), FieldMatchOption.ToString(), "t" + FieldPtr) + "includes</div>" + "<div style=\"display:block;float:left;width:300px;\">" + HtmlController.inputText_Legacy(core, "fieldvalue" + FieldPtr, FieldValue[FieldPtr], 1, 5, "", false, false, "ccAdvSearchText").Replace(">", " onFocus=\"var e=getElementById('t" + FieldPtr + "'); e.checked= 1;\">") + "</div>" + "</div>" + "</td>" + "</tr>"; RowPointer = RowPointer + 1; break; } } returnForm = returnForm + HtmlController.tableRowStart(); returnForm = returnForm + HtmlController.tableCellStart("120", 1, RowEven, "right") + "<img src=" + cdnPrefix + "images/spacer.gif width=120 height=1></td>"; returnForm = returnForm + HtmlController.tableCellStart("99%", 1, RowEven, "left") + "<img src=" + cdnPrefix + "images/spacer.gif width=1 height=1></td>"; returnForm = returnForm + kmaEndTableRow; returnForm = returnForm + "</table>"; Content = returnForm; // // Assemble LiveWindowTable Stream.add(ButtonBar); Stream.add(TitleBar); Stream.add(Content); Stream.add(ButtonBar); Stream.add("<input type=hidden name=fieldcnt VALUE=" + FieldCnt + ">"); Stream.add("<input type=hidden name=" + RequestNameAdminSubForm + " VALUE=" + AdminFormIndex_SubFormAdvancedSearch + ">"); returnForm = HtmlController.form(core, Stream.text); core.html.addTitle(adminData.adminContent.name + " Advanced Search"); } catch (Exception ex) { LogController.logError(core, ex); throw; } return(returnForm); }
// //======================================================================== /// <summary> /// Control edit tab /// </summary> /// <param name="core"></param> /// <param name="adminData"></param> /// <returns></returns> public static string get(CoreController core, AdminDataModel adminData, EditorEnvironmentModel editorEnv) { string result = null; try { bool disabled = false; // var tabPanel = new StringBuilderLegacyController(); if (string.IsNullOrEmpty(adminData.adminContent.name)) { // // Content not found or not loaded if (adminData.adminContent.id == 0) { // LogController.logError(core, new GenericException("No content definition was specified for this page")); return(HtmlController.p("No content was specified.")); } else { // // Content Definition was not specified LogController.logError(core, new GenericException("The content definition specified for this page [" + adminData.adminContent.id + "] was not found")); return(HtmlController.p("No content was specified.")); } } // // ----- Authoring status bool FieldRequired = false; List <string> TabsFound = new List <string>(); foreach (KeyValuePair <string, ContentFieldMetadataModel> keyValuePair in adminData.adminContent.fields) { ContentFieldMetadataModel field = keyValuePair.Value; if ((field.editTabName.ToLowerInvariant().Equals("control info")) && (field.authorable) && (field.active)) { tabPanel.add(EditorRowClass.getEditorRow(core, field, adminData, editorEnv)); } } // // ----- RecordID { string fieldValue = (adminData.editRecord.id == 0) ? "(available after save)" : adminData.editRecord.id.ToString(); string fieldEditor = AdminUIEditorController.getTextEditor(core, "ignore", fieldValue, true, ""); string fieldHelp = "This is the unique number that identifies this record within this content."; tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "Record Number", fieldHelp, true, false, "")); } // // -- Active { string htmlId = "fieldActive"; string fieldEditor = HtmlController.checkbox("active", adminData.editRecord.active, htmlId, disabled, "", adminData.editRecord.userReadOnly); string fieldHelp = "When unchecked, add-ons can ignore this record as if it was temporarily deleted."; tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "Active", fieldHelp, false, false, htmlId)); } // // -- GUID { string guidSetHtmlId = "guidSet" + GenericController.getRandomInteger(core).ToString(); string guidInputHtmlId = "guidInput" + GenericController.getRandomInteger(core).ToString(); string fieldValue = GenericController.encodeText(adminData.editRecord.fieldsLc["ccguid"].value); string fieldEditor = ""; if (adminData.editRecord.userReadOnly) { // // -- readonly fieldEditor = AdminUIEditorController.getTextEditor(core, "ignore", fieldValue, true, ""); } else if (string.IsNullOrEmpty(fieldValue)) { // // add a set button string setButton = "<input id=\"" + guidSetHtmlId + "\" type=\"submit\" value=\"Set\" class=\"btn btn-primary btn-sm\">"; string setButtonWrapped = "<div class=\"input-group-append\">" + setButton + "</div>"; string inputCell = AdminUIEditorController.getTextEditor(core, "ccguid", "", false, guidInputHtmlId); fieldEditor = HtmlController.div(inputCell + setButtonWrapped, "input-group"); string newGuid = GenericController.getGUID(true); string onClickFn = "function(e){e.preventDefault();e.stopPropagation();$('#" + guidInputHtmlId + "').val('" + newGuid + "');}"; string script = "$('body').on('click','#" + guidSetHtmlId + "'," + onClickFn + ")"; core.html.addScriptCode(script, "Admin edit control-info-tab guid set button"); } else { // // field is read-only except for developers fieldEditor = AdminUIEditorController.getTextEditor(core, "ccguid", fieldValue, !core.session.isAuthenticatedDeveloper(), guidInputHtmlId); } string FieldHelp = "This is a unique number that identifies this record globally. A GUID is not required, but when set it should never be changed. GUIDs are used to synchronize records. When empty, you can create a new guid. Only Developers can modify the guid."; tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "GUID", FieldHelp, false, false, guidInputHtmlId)); } // // ----- EID (Encoded ID) { if (GenericController.toUCase(adminData.adminContent.tableName) == GenericController.toUCase("ccMembers")) { string htmlId = "fieldGuid"; bool AllowEId = (core.siteProperties.getBoolean("AllowLinkLogin", true)) || (core.siteProperties.getBoolean("AllowLinkRecognize", true)); string fieldHelp = "This string is an authentication token that can be used in the URL for the next 15 minutes to log in as this user."; string fieldEditor = ""; if (!AllowEId) { fieldEditor = "(link login and link recognize are disabled in security preferences)"; } else if (adminData.editRecord.id == 0) { fieldEditor = "(available after save)"; } else { string eidQueryString = "eid=" + WebUtility.UrlEncode(SecurityController.encodeToken(core, adminData.editRecord.id, core.doc.profileStartTime.AddMinutes(15))); string sampleUrl = core.webServer.requestProtocol + core.webServer.requestDomain + "/" + core.siteProperties.serverPageDefault + "?" + eidQueryString; if (core.siteProperties.getBoolean("AllowLinkLogin", true)) { fieldHelp = " If " + eidQueryString + " is added to a url querystring for this site, the user be logged in as this person."; } else { fieldHelp = " If " + eidQueryString + " is added to a url querystring for this site, the user be recognized in as this person, but not logged in."; } fieldHelp += " To enable, disable or modify this feature, use the security tab on the Preferences page."; fieldHelp += "<br>For example: " + sampleUrl; fieldEditor = AdminUIEditorController.getTextEditor(core, "ignore_eid", eidQueryString, true, htmlId); } tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "Member Link Login Querystring", fieldHelp, true, false, htmlId)); } } // // ----- Controlling Content { string HTMLFieldString = ""; string FieldHelp = "The content in which this record is stored. This is similar to a database table."; ContentFieldMetadataModel field = null; if (adminData.adminContent.fields.ContainsKey("contentcontrolid")) { field = adminData.adminContent.fields["contentcontrolid"]; // // if this record has a parent id, only include CDefs compatible with the parent record - otherwise get all for the table FieldHelp = GenericController.encodeText(field.helpMessage); FieldRequired = GenericController.encodeBoolean(field.required); int FieldValueInteger = (adminData.editRecord.contentControlId.Equals(0)) ? adminData.adminContent.id : adminData.editRecord.contentControlId; if (!core.session.isAuthenticatedAdmin()) { HTMLFieldString = HTMLFieldString + HtmlController.inputHidden("contentControlId", FieldValueInteger); } else { string RecordContentName = adminData.editRecord.contentControlId_Name; string TableName2 = MetadataController.getContentTablename(core, RecordContentName); int TableId = MetadataController.getRecordIdByUniqueName(core, "Tables", TableName2); // // Test for parentid int ParentId = 0; bool ContentSupportsParentId = false; if (adminData.editRecord.id > 0) { using (var csData = new CsModel(core)) { if (csData.openRecord(RecordContentName, adminData.editRecord.id)) { ContentSupportsParentId = csData.isFieldSupported("ParentID"); if (ContentSupportsParentId) { ParentId = csData.getInteger("ParentID"); } } } } bool IsEmptyList = false; if (core.session.isAuthenticatedAdmin()) { // // administrator, and either ( no parentid or does not support it), let them select any content compatible with the table string sqlFilter = "(ContentTableID=" + TableId + ")"; int contentCId = MetadataController.getRecordIdByUniqueName(core, ContentModel.tableMetadata.contentName, ContentModel.tableMetadata.contentName); HTMLFieldString += AdminUIEditorController.getLookupContentEditor(core, "contentcontrolid", FieldValueInteger, contentCId, ref IsEmptyList, adminData.editRecord.userReadOnly, "", "", true, sqlFilter); FieldHelp = FieldHelp + " (Only administrators have access to this control. Changing the Controlling Content allows you to change who can author the record, as well as how it is edited.)"; } } } if (string.IsNullOrEmpty(HTMLFieldString)) { HTMLFieldString = adminData.editRecord.contentControlId_Name; } tabPanel.add(AdminUIController.getEditRow(core, HTMLFieldString, "Controlling Content", FieldHelp, FieldRequired, false, "")); } // // ----- Created By { string FieldHelp = "The people account of the user who created this record."; string fieldValue = ""; if (adminData.editRecord == null) { fieldValue = "(not set)"; } else if (adminData.editRecord.id == 0) { fieldValue = "(available after save)"; } else if (adminData.editRecord.createdBy == null) { fieldValue = "(not set)"; } else { int FieldValueInteger = adminData.editRecord.createdBy.id; if (FieldValueInteger == 0) { fieldValue = "(not set)"; } else { using (var csData = new CsModel(core)) { csData.open("people", "(id=" + FieldValueInteger + ")", "name,active", false); if (!csData.ok()) { fieldValue = "#" + FieldValueInteger + ", (deleted)"; } else { fieldValue = "#" + FieldValueInteger + ", " + csData.getText("name"); if (!csData.getBoolean("active")) { fieldValue += " (inactive)"; } } csData.close(); } } } string fieldEditor = AdminUIEditorController.getTextEditor(core, "ignore_createdBy", fieldValue, true, ""); tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "Created By", FieldHelp, FieldRequired, false, "")); } // // ----- Created Date { string FieldHelp = "The date and time when this record was originally created."; string fieldValue = ""; if (adminData.editRecord == null) { fieldValue = "(not set)"; } else if (adminData.editRecord.id == 0) { fieldValue = "(available after save)"; } else { if (GenericController.encodeDateMinValue(adminData.editRecord.dateAdded) == DateTime.MinValue) { fieldValue = "(not set)"; } else { fieldValue = adminData.editRecord.dateAdded.ToString(); } } string fieldEditor = AdminUIEditorController.getTextEditor(core, "ignore_createdDate", fieldValue, true, ""); tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "Created Date", FieldHelp, FieldRequired, false, "")); } // // ----- Modified By { string FieldHelp = "The people account of the last user who modified this record."; string fieldValue = ""; if (adminData.editRecord == null) { fieldValue = "(not set)"; } else if (adminData.editRecord.id == 0) { fieldValue = "(available after save)"; } else if (adminData.editRecord.modifiedBy == null) { fieldValue = "(not set)"; } else { int FieldValueInteger = adminData.editRecord.modifiedBy.id; if (FieldValueInteger == 0) { fieldValue = "(not set)"; } else { using (var csData = new CsModel(core)) { csData.open("people", "(id=" + FieldValueInteger + ")", "name,active", false); if (!csData.ok()) { fieldValue = "#" + FieldValueInteger + ", (deleted)"; } else { fieldValue = "#" + FieldValueInteger + ", " + csData.getText("name"); if (!csData.getBoolean("active")) { fieldValue += " (inactive)"; } } csData.close(); } } } string fieldEditor = AdminUIEditorController.getTextEditor(core, "ignore_modifiedBy", fieldValue, true, ""); tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "Modified By", FieldHelp, FieldRequired, false, "")); } // // ----- Modified Date { string FieldHelp = "The date and time when this record was last modified."; string fieldValue = ""; if (adminData.editRecord == null) { fieldValue = "(not set)"; } else if (adminData.editRecord.id == 0) { fieldValue = "(available after save)"; } else { if (GenericController.encodeDateMinValue(adminData.editRecord.modifiedDate) == DateTime.MinValue) { fieldValue = "(not set)"; } else { fieldValue = adminData.editRecord.modifiedDate.ToString(); } } string fieldEditor = AdminUIEditorController.getTextEditor(core, "ignore_modifiedBy", fieldValue, true, ""); tabPanel.add(AdminUIController.getEditRow(core, fieldEditor, "Modified Date", FieldHelp, false, false, "")); } string s = AdminUIController.editTable(tabPanel.text); result = AdminUIController.getEditPanel(core, true, "Control Information", "", s); adminData.editSectionPanelCount += 1; tabPanel = null; } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //==================================================================================================== // public static string get(CoreController core) { string result = ""; try { // int ContentId = 0; string TableName = ""; string ContentName = ""; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); string ButtonList = null; string Description = null; string Caption = null; int NavId = 0; int ParentNavId = 0; DataSourceModel datasource = DataSourceModel.create(core.cpParent, core.docProperties.getInteger("DataSourceID")); // ButtonList = ButtonCancel + "," + ButtonRun; Caption = "Create Content Definition"; Description = "This tool creates a Content Definition. If the SQL table exists, it is used. If it does not exist, it is created. If records exist in the table with a blank ContentControlID, the ContentControlID will be populated from this new definition. A Navigator Menu entry will be added under Manage Site Content - Advanced."; // // print out the submit form // if (core.docProperties.getText("Button") != "") { // // Process input // ContentName = core.docProperties.getText("ContentName"); TableName = core.docProperties.getText("TableName"); // Stream.add(SpanClassAdminSmall); Stream.add("<P>Creating content [" + ContentName + "] on table [" + TableName + "] on Datasource [" + datasource.name + "].</P>"); if ((!string.IsNullOrEmpty(ContentName)) && (!string.IsNullOrEmpty(TableName)) && (!string.IsNullOrEmpty(datasource.name))) { using (var db = new DbController(core, datasource.name)) { db.createSQLTable(TableName); } ContentMetadataModel.createFromSQLTable(core, datasource, TableName, ContentName); core.cache.invalidateAll(); core.clearMetaData(); ContentId = Processor.Models.Domain.ContentMetadataModel.getContentId(core, ContentName); ParentNavId = MetadataController.getRecordIdByUniqueName(core, NavigatorEntryModel.tableMetadata.contentName, "Manage Site Content"); if (ParentNavId != 0) { ParentNavId = 0; using (var csSrc = new CsModel(core)) { if (csSrc.open(NavigatorEntryModel.tableMetadata.contentName, "(name=" + DbController.encodeSQLText("Advanced") + ")and(parentid=" + ParentNavId + ")")) { ParentNavId = csSrc.getInteger("ID"); } } if (ParentNavId != 0) { using (var csDest = new CsModel(core)) { csDest.open(NavigatorEntryModel.tableMetadata.contentName, "(name=" + DbController.encodeSQLText(ContentName) + ")and(parentid=" + NavId + ")"); if (!csDest.ok()) { csDest.close(); csDest.insert(NavigatorEntryModel.tableMetadata.contentName); } if (csDest.ok()) { csDest.set("name", ContentName); csDest.set("parentid", ParentNavId); csDest.set("contentid", ContentId); } } } } ContentId = ContentMetadataModel.getContentId(core, ContentName); Stream.add("<P>Content Definition was created. An admin menu entry for this definition has been added under 'Site Content', and will be visible on the next page view. Use the [<a href=\"?af=105&ContentID=" + ContentId + "\">Edit Content Definition Fields</a>] tool to review and edit this definition's fields.</P>"); } else { Stream.add("<P>Error, a required field is missing. Content not created.</P>"); } Stream.add("</SPAN>"); } Stream.add(SpanClassAdminNormal); Stream.add("Data Source<br>"); Stream.add(core.html.selectFromContent("DataSourceID", datasource.id, "Data Sources", "", "Default")); Stream.add("<br><br>"); Stream.add("Content Name<br>"); Stream.add(HtmlController.inputText_Legacy(core, "ContentName", ContentName, 1, 40)); Stream.add("<br><br>"); Stream.add("Table Name<br>"); Stream.add(HtmlController.inputText_Legacy(core, "TableName", TableName, 1, 40)); Stream.add("<br><br>"); Stream.add("</SPAN>"); result = AdminUIController.getToolBody(core, Caption, ButtonList, "", false, false, Description, "", 10, Stream.text); } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //==================================================================================================== // public static string get(CoreController core) { string result = ""; try { string Button = core.docProperties.getText("Button"); if (Button == ButtonCancelAll) { // // Cancel to the admin site return(core.webServer.redirect(core.appConfig.adminRoute, "Tools-List, cancel button")); } // const string RequestNameAddField = "addfield"; const string RequestNameAddFieldId = "addfieldID"; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); Stream.add(AdminUIController.getHeaderTitleDescription("Configure Admin Listing", "Configure the Administration Content Listing Page.")); // // Load Request int ToolsAction = core.docProperties.getInteger("dta"); int TargetFieldID = core.docProperties.getInteger("fi"); int ContentId = core.docProperties.getInteger(RequestNameToolContentId); string FieldNameToAdd = GenericController.toUCase(core.docProperties.getText(RequestNameAddField)); int FieldIDToAdd = core.docProperties.getInteger(RequestNameAddFieldId); string ButtonList = ButtonCancel + "," + ButtonSelect; bool ReloadCDef = core.docProperties.getBoolean("ReloadCDef"); bool AllowContentAutoLoad = false; // //-------------------------------------------------------------------------------- // Process actions //-------------------------------------------------------------------------------- // if (ContentId != 0) { ButtonList = ButtonCancel + "," + ButtonSaveandInvalidateCache; string ContentName = Local_GetContentNameByID(core, ContentId); Processor.Models.Domain.ContentMetadataModel CDef = Processor.Models.Domain.ContentMetadataModel.create(core, ContentId, false, true); string FieldName = null; int ColumnWidthTotal = 0; int fieldId = 0; if (ToolsAction != 0) { // // Block contentautoload, then force a load at the end // AllowContentAutoLoad = (core.siteProperties.getBoolean("AllowContentAutoLoad", true)); core.siteProperties.setProperty("AllowContentAutoLoad", false); int SourceContentId = 0; string SourceName = null; // // Make sure the FieldNameToAdd is not-inherited, if not, create new field // if (FieldIDToAdd != 0) { foreach (var keyValuePair in CDef.fields) { Processor.Models.Domain.ContentFieldMetadataModel field = keyValuePair.Value; if (field.id == FieldIDToAdd) { if (field.inherited) { SourceContentId = field.contentId; SourceName = field.nameLc; using (var CSSource = new CsModel(core)) { CSSource.open("Content Fields", "(ContentID=" + SourceContentId + ")and(Name=" + DbController.encodeSQLText(SourceName) + ")"); if (CSSource.ok()) { using (var CSTarget = new CsModel(core)) { CSTarget.insert("Content Fields"); if (CSTarget.ok()) { CSSource.copyRecord(CSTarget); CSTarget.set("ContentID", ContentId); ReloadCDef = true; } } } } } break; } } } // // Make sure all fields are not-inherited, if not, create new fields // int ColumnNumberMax = 0; foreach (var keyValuePair in CDef.adminColumns) { Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass adminColumn = keyValuePair.Value; Processor.Models.Domain.ContentFieldMetadataModel field = CDef.fields[adminColumn.Name]; if (field.inherited) { SourceContentId = field.contentId; SourceName = field.nameLc; using (var CSSource = new CsModel(core)) { if (CSSource.open("Content Fields", "(ContentID=" + SourceContentId + ")and(Name=" + DbController.encodeSQLText(SourceName) + ")")) { using (var CSTarget = new CsModel(core)) { if (CSTarget.insert("Content Fields")) { CSSource.copyRecord(CSTarget); CSTarget.set("ContentID", ContentId); ReloadCDef = true; } } } } } if (ColumnNumberMax < field.indexColumn) { ColumnNumberMax = field.indexColumn; } ColumnWidthTotal += adminColumn.Width; } // // ----- Perform any actions first // int columnPtr = 0; bool MoveNextColumn = false; switch (ToolsAction) { case ToolsActionAddField: { // // Add a field to the Listing Page // if (FieldIDToAdd != 0) { columnPtr = 0; if (CDef.adminColumns.Count > 1) { foreach (var keyValuePair in CDef.adminColumns) { Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass adminColumn = keyValuePair.Value; Processor.Models.Domain.ContentFieldMetadataModel field = CDef.fields[adminColumn.Name]; using (var csData = new CsModel(core)) { csData.openRecord("Content Fields", field.id); csData.set("IndexColumn", (columnPtr) * 10); csData.set("IndexWidth", Math.Floor((adminColumn.Width * 80) / (double)ColumnWidthTotal)); } columnPtr += 1; } } using (var csData = new CsModel(core)) { if (csData.openRecord("Content Fields", FieldIDToAdd)) { csData.set("IndexColumn", columnPtr * 10); csData.set("IndexWidth", 20); csData.set("IndexSortPriority", 99); csData.set("IndexSortDirection", 1); } } ReloadCDef = true; } // break; } case ToolsActionRemoveField: { // // Remove a field to the Listing Page // if (CDef.adminColumns.Count > 1) { columnPtr = 0; foreach (var keyValuePair in CDef.adminColumns) { Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass adminColumn = keyValuePair.Value; Processor.Models.Domain.ContentFieldMetadataModel field = CDef.fields[adminColumn.Name]; using (var csData = new CsModel(core)) { csData.openRecord("Content Fields", field.id); if (fieldId == TargetFieldID) { csData.set("IndexColumn", 0); csData.set("IndexWidth", 0); csData.set("IndexSortPriority", 0); csData.set("IndexSortDirection", 0); } else { csData.set("IndexColumn", (columnPtr) * 10); csData.set("IndexWidth", Math.Floor((adminColumn.Width * 100) / (double)ColumnWidthTotal)); } } columnPtr += 1; } ReloadCDef = true; } break; } case ToolsActionMoveFieldRight: { // // Move column field right // if (CDef.adminColumns.Count > 1) { MoveNextColumn = false; columnPtr = 0; foreach (var keyValuePair in CDef.adminColumns) { Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass adminColumn = keyValuePair.Value; Processor.Models.Domain.ContentFieldMetadataModel field = CDef.fields[adminColumn.Name]; FieldName = adminColumn.Name; using (var csData = new CsModel(core)) { csData.openRecord("Content Fields", field.id); if ((CDef.fields[FieldName.ToLowerInvariant()].id == TargetFieldID) && (columnPtr < CDef.adminColumns.Count)) { csData.set("IndexColumn", (columnPtr + 1) * 10); // MoveNextColumn = true; } else if (MoveNextColumn) { // // This is one past target // csData.set("IndexColumn", (columnPtr - 1) * 10); MoveNextColumn = false; } else { // // not target or one past target // csData.set("IndexColumn", (columnPtr) * 10); MoveNextColumn = false; } csData.set("IndexWidth", Math.Floor((adminColumn.Width * 100) / (double)ColumnWidthTotal)); } columnPtr += 1; } ReloadCDef = true; } // end case break; } case ToolsActionMoveFieldLeft: { // // Move Index column field left // if (CDef.adminColumns.Count > 1) { MoveNextColumn = false; columnPtr = 0; foreach (var keyValuePair in CDef.adminColumns.Reverse()) { Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass adminColumn = keyValuePair.Value; Processor.Models.Domain.ContentFieldMetadataModel field = CDef.fields[adminColumn.Name]; FieldName = adminColumn.Name; using (var csData = new CsModel(core)) { csData.openRecord("Content Fields", field.id); if ((field.id == TargetFieldID) && (columnPtr < CDef.adminColumns.Count)) { csData.set("IndexColumn", (columnPtr - 1) * 10); // MoveNextColumn = true; } else if (MoveNextColumn) { // // This is one past target // csData.set("IndexColumn", (columnPtr + 1) * 10); MoveNextColumn = false; } else { // // not target or one past target // csData.set("IndexColumn", (columnPtr) * 10); MoveNextColumn = false; } csData.set("IndexWidth", Math.Floor((adminColumn.Width * 100) / (double)ColumnWidthTotal)); } columnPtr += 1; } ReloadCDef = true; } break; } default: { // do nothing break; } } // // Get a new copy of the content definition // CDef = Processor.Models.Domain.ContentMetadataModel.create(core, ContentId, false, true); } if (Button == ButtonSaveandInvalidateCache) { core.cache.invalidateAll(); core.clearMetaData(); return(core.webServer.redirect("?af=" + AdminFormToolConfigureListing + "&ContentID=" + ContentId, "Tools-ConfigureListing, Save and Invalidate Cache, Go to back ConfigureListing tools")); } // //-------------------------------------------------------------------------------- // Display the form //-------------------------------------------------------------------------------- // if (!string.IsNullOrEmpty(ContentName)) { Stream.add("<br><br><B>" + ContentName + "</b><br>"); } Stream.add("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"99%\"><tr>"); Stream.add("<td width=\"5%\"> </td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>10%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>20%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>30%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>40%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>50%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>60%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>70%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>80%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>90%</nobr></td>"); Stream.add("<td width=\"9%\" align=\"center\" class=\"ccAdminSmall\"><nobr>100%</nobr></td>"); Stream.add("<td width=\"4%\" align=\"center\"> </td>"); Stream.add("</tr></TABLE>"); // Stream.add("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"99%\"><tr>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("<td width=\"9%\"><nobr><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.gif\" width=\"1\" height=\"10\"><IMG alt=\"\" src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/Images/spacer.gif\" width=\"100%\" height=\"10\"></nobr></td>"); Stream.add("</tr></TABLE>"); // // print the column headers // ColumnWidthTotal = 0; int InheritedFieldCount = 0; if (CDef.adminColumns.Count > 0) { // // Calc total width // foreach (KeyValuePair <string, Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass> kvp in CDef.adminColumns) { ColumnWidthTotal += kvp.Value.Width; } if (ColumnWidthTotal > 0) { Stream.add("<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"90%\">"); int ColumnCount = 0; foreach (KeyValuePair <string, Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass> kvp in CDef.adminColumns) { // // print column headers - anchored so they sort columns // int ColumnWidth = encodeInteger(100 * (kvp.Value.Width / (double)ColumnWidthTotal)); FieldName = kvp.Value.Name; var tempVar = CDef.fields[FieldName.ToLowerInvariant()]; fieldId = tempVar.id; string Caption = tempVar.caption; if (tempVar.inherited) { Caption += "*"; InheritedFieldCount += 1; } string AStart = "<A href=\"" + core.webServer.requestPage + "?" + RequestNameToolContentId + "=" + ContentId + "&af=" + AdminFormToolConfigureListing + "&fi=" + fieldId + "&dtcn=" + ColumnCount; Stream.add("<td width=\"" + ColumnWidth + "%\" valign=\"top\" align=\"left\">" + SpanClassAdminNormal + Caption + "<br>"); Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/black.GIF\" width=\"100%\" height=\"1\">"); Stream.add(AStart + "&dta=" + ToolsActionRemoveField + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonDeleteUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A><br>"); Stream.add(AStart + "&dta=" + ToolsActionMoveFieldRight + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonMoveRightUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A><br>"); Stream.add(AStart + "&dta=" + ToolsActionMoveFieldLeft + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonMoveLeftUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A><br>"); Stream.add(AStart + "&dta=" + ToolsActionSetAZ + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonSortazUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A><br>"); Stream.add(AStart + "&dta=" + ToolsActionSetZA + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonSortzaUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A><br>"); Stream.add(AStart + "&dta=" + ToolsActionExpand + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonOpenUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A><br>"); Stream.add(AStart + "&dta=" + ToolsActionContract + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonCloseUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A>"); Stream.add("</SPAN></td>"); ColumnCount += 1; } Stream.add("</tr>"); Stream.add("</TABLE>"); } } // // ----- If anything was inherited, put up the message // if (InheritedFieldCount > 0) { Stream.add("<P class=\"ccNormal\">* This field was inherited from the Content Definition's Parent. Inherited fields will automatically change when the field in the parent is changed. If you alter these settings, this connection will be broken, and the field will no longer inherit it's properties.</P class=\"ccNormal\">"); } // // ----- now output a list of fields to add // if (CDef.fields.Count == 0) { Stream.add(SpanClassAdminNormal + "This Content Definition has no fields</SPAN><br>"); } else { Stream.add(SpanClassAdminNormal + "<br>"); bool skipField = false; foreach (KeyValuePair <string, Processor.Models.Domain.ContentFieldMetadataModel> keyValuePair in CDef.fields) { Processor.Models.Domain.ContentFieldMetadataModel field = keyValuePair.Value; // // test if this column is in use // skipField = false; if (CDef.adminColumns.Count > 0) { foreach (KeyValuePair <string, Processor.Models.Domain.ContentMetadataModel.MetaAdminColumnClass> kvp in CDef.adminColumns) { if (field.nameLc == kvp.Value.Name) { skipField = true; break; } } } // // display the column if it is not in use // if (skipField) { if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileText) { // // text filename can not be search // Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/Spacer.gif\" width=\"50\" height=\"15\" border=\"0\"> " + field.caption + " (text file field)<br>"); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileCSS) { // // text filename can not be search // Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/Spacer.gif\" width=\"50\" height=\"15\" border=\"0\"> " + field.caption + " (css file field)<br>"); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileXML) { // // text filename can not be search // Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/Spacer.gif\" width=\"50\" height=\"15\" border=\"0\"> " + field.caption + " (xml file field)<br>"); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileJavascript) { // // text filename can not be search // Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/Spacer.gif\" width=\"50\" height=\"15\" border=\"0\"> " + field.caption + " (javascript file field)<br>"); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.LongText) { // // long text can not be search // Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/Spacer.gif\" width=\"50\" height=\"15\" border=\"0\"> " + field.caption + " (long text field)<br>"); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileImage) { // // long text can not be search // Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/Spacer.gif\" width=\"50\" height=\"15\" border=\"0\"> " + field.caption + " (image field)<br>"); } else if (field.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.Redirect) { // // long text can not be search // Stream.add("<IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/Spacer.gif\" width=\"50\" height=\"15\" border=\"0\"> " + field.caption + " (redirect field)<br>"); } else { // // can be used as column header // Stream.add("<A href=\"" + core.webServer.requestPage + "?" + RequestNameToolContentId + "=" + ContentId + "&af=" + AdminFormToolConfigureListing + "&fi=" + field.id + "&dta=" + ToolsActionAddField + "&" + RequestNameAddFieldId + "=" + field.id + "\"><IMG src=\"https://s3.amazonaws.com/cdn.contensive.com/assets/20200122/images/LibButtonAddUp.gif\" width=\"50\" height=\"15\" border=\"0\"></A> " + field.caption + "<br>"); } } } } } // //-------------------------------------------------------------------------------- // print the content tables that have Listing Pages to Configure //-------------------------------------------------------------------------------- // string FormPanel = SpanClassAdminNormal + "Select a Content Definition to Configure its Listing Page<br>"; FormPanel += core.html.selectFromContent("ContentID", ContentId, "Content"); Stream.add(core.html.getPanel(FormPanel)); core.siteProperties.setProperty("AllowContentAutoLoad", AllowContentAutoLoad); Stream.add(HtmlController.inputHidden("ReloadCDef", ReloadCDef)); result = AdminUIController.getToolForm(core, Stream.text, ButtonList); } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// // ==================================================================================================== /// <summary> /// Create the tabs for editing a record /// </summary> /// <param name="adminData.content"></param> /// <param name="editRecord"></param> /// <returns></returns> public static string get(CoreController core, AdminDataModel adminData) { string returnHtml = ""; try { // if ((!core.doc.userErrorList.Count.Equals(0)) && adminData.editRecord.loaded) { // // block load if there was a user error and it is already loaded (assume error was from response ) } else if (adminData.adminContent.id <= 0) { // // Invalid Content Processor.Controllers.ErrorController.addUserError(core, "There was a problem identifying the content you requested. Please return to the previous form and verify your selection."); return(""); } else if (adminData.editRecord.loaded && !adminData.editRecord.saved) { // // File types need to be reloaded from the Db, because... // LoadDb - sets them to the path-page // LoadResponse - sets the blank if no change, filename if there is an upload // SaveEditRecord - if blank, no change. If a filename it saves the uploaded file // GetForm_Edit - expects the Db value to be in EditRecordValueVariants (path-page) // // xx This was added to bypass the load for the editrefresh case (reload the response so the editor preference can change) // xx I do not know why the following section says "reload even if it is loaded", but lets try this // foreach (var keyValuePair in adminData.adminContent.fields) { ContentFieldMetadataModel field = keyValuePair.Value; if ((keyValuePair.Value.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.File) || (keyValuePair.Value.fieldTypeId == CPContentBaseClass.FieldTypeIdEnum.FileImage)) { adminData.editRecord.fieldsLc[field.nameLc].value = adminData.editRecord.fieldsLc[field.nameLc].dbValue; } } } else { // // otherwise, load the record, even if it was loaded during a previous form process adminData.loadEditRecord(core, true); } if (!AdminDataModel.userHasContentAccess(core, ((adminData.editRecord.contentControlId.Equals(0)) ? adminData.adminContent.id : adminData.editRecord.contentControlId))) { Processor.Controllers.ErrorController.addUserError(core, "Your account on this system does not have access rights to edit this content."); return(""); } // // Setup Edit Referer string EditReferer = core.docProperties.getText(RequestNameEditReferer); if (string.IsNullOrEmpty(EditReferer)) { EditReferer = core.webServer.requestReferer; if (!string.IsNullOrEmpty(EditReferer)) { // // special case - if you are coming from the advanced search, go back to the list page EditReferer = GenericController.strReplace(EditReferer, "&af=39", ""); // // if referer includes AdminWarningMsg (admin hint message), remove it -- this edit may fix the problem int Pos = EditReferer.IndexOf("AdminWarningMsg=", StringComparison.CurrentCulture); if (Pos >= 0) { EditReferer = EditReferer.left(Pos - 2); } } } core.doc.addRefreshQueryString(RequestNameEditReferer, EditReferer); // // load user's editor preferences to fieldEditorPreferences() - this is the editor this user has picked when there are >1 // fieldId:addonId,fieldId:addonId,etc // with custom FancyBox form in edit window with button "set editor preference" // this button causes a 'refresh' action, reloads fields with stream without save // // // ----- determine contentType for editor // CPHtml5BaseClass.EditorContentType contentType; if (GenericController.toLCase(adminData.adminContent.name) == "email templates") { contentType = CPHtml5BaseClass.EditorContentType.contentTypeEmailTemplate; } else if (GenericController.toLCase(adminData.adminContent.tableName) == "cctemplates") { contentType = CPHtml5BaseClass.EditorContentType.contentTypeWebTemplate; } else if (GenericController.toLCase(adminData.adminContent.tableName) == "ccemail") { contentType = CPHtml5BaseClass.EditorContentType.contentTypeEmail; } else { contentType = CPHtml5BaseClass.EditorContentType.contentTypeWeb; } EditorEnvironmentModel editorEnv = new EditorEnvironmentModel { allowHelpMsgCustom = false, editorAddonListJSON = core.html.getWysiwygAddonList(contentType), isRootPage = adminData.adminContent.tableName.ToLowerInvariant().Equals(PageContentModel.tableMetadata.tableNameLower) && (adminData.editRecord.parentId == 0) && (adminData.editRecord.id != 0), needUniqueEmailMessage = false, record_readOnly = adminData.editRecord.userReadOnly, styleList = "", styleOptionList = "", formFieldList = "" }; // // ----- determine access details var userContentPermissions = PermissionController.getUserContentPermissions(core, adminData.adminContent); bool allowDelete = adminData.adminContent.allowDelete && userContentPermissions.allowDelete && (adminData.editRecord.id != 0); bool allowAdd = adminData.adminContent.allowAdd && userContentPermissions.allowAdd; var editButtonBarInfo = new EditButtonBarInfoClass(core, adminData, allowDelete, true, userContentPermissions.allowSave, allowAdd); // string adminContentTableNameLc = adminData.adminContent.tableName.ToLowerInvariant(); bool allowLinkAlias = adminContentTableNameLc.Equals(PageContentModel.tableMetadata.tableNameLower); bool allowPeopleGroups = adminContentTableNameLc.Equals(PersonModel.tableMetadata.tableNameLower);; // //-----Create edit page if (adminContentTableNameLc.Equals(EmailModel.tableMetadata.tableNameLower)) { // LogController.logTrace(core, "getFormEdit, treat as email, adminContentTableNameLower [" + adminContentTableNameLc + "]"); // // -- email bool emailSubmitted = false; bool emailSent = false; DateTime LastSendTestDate = DateTime.MinValue; bool AllowEmailSendWithoutTest = (core.siteProperties.getBoolean("AllowEmailSendWithoutTest", false)); if (adminData.editRecord.fieldsLc.ContainsKey("lastsendtestdate")) { LastSendTestDate = GenericController.encodeDate(adminData.editRecord.fieldsLc["lastsendtestdate"].value); } if (adminData.adminContent.id.Equals(ContentMetadataModel.getContentId(core, "System Email"))) { // LogController.logTrace(core, "getFormEdit, System email"); // // System Email emailSubmitted = false; if (adminData.editRecord.id != 0) { if (adminData.editRecord.fieldsLc.ContainsKey("testmemberid")) { if (encodeInteger(adminData.editRecord.fieldsLc["testmemberid"].value) == 0) { adminData.editRecord.fieldsLc["testmemberid"].value = core.session.user.id; } } } editButtonBarInfo.allowSave = (userContentPermissions.allowSave && adminData.editRecord.allowUserSave && (!emailSubmitted) && (!emailSent)); editButtonBarInfo.allowSendTest = ((!emailSubmitted) && (!emailSent)); } else if (adminData.adminContent.id.Equals(ContentMetadataModel.getContentId(core, "Conditional Email"))) { // // Conditional Email emailSubmitted = false; editorEnv.record_readOnly = adminData.editRecord.userReadOnly || emailSubmitted; if (adminData.editRecord.id != 0) { if (adminData.editRecord.fieldsLc.ContainsKey("submitted")) { emailSubmitted = GenericController.encodeBoolean(adminData.editRecord.fieldsLc["submitted"].value); } } editButtonBarInfo.allowActivate = !emailSubmitted && ((LastSendTestDate != DateTime.MinValue) || AllowEmailSendWithoutTest); editButtonBarInfo.allowDeactivate = emailSubmitted; editButtonBarInfo.allowSave = userContentPermissions.allowSave && adminData.editRecord.allowUserSave && !emailSubmitted; } else { // // Group Email if (adminData.editRecord.id != 0) { emailSubmitted = encodeBoolean(adminData.editRecord.fieldsLc["submitted"].value); emailSent = encodeBoolean(adminData.editRecord.fieldsLc["sent"].value); } editButtonBarInfo.allowSave = !emailSubmitted && (userContentPermissions.allowSave && adminData.editRecord.allowUserSave); editButtonBarInfo.allowSend = !emailSubmitted && ((LastSendTestDate != DateTime.MinValue) || AllowEmailSendWithoutTest); editButtonBarInfo.allowSendTest = !emailSubmitted; editorEnv.record_readOnly = adminData.editRecord.userReadOnly || emailSubmitted || emailSent; } } else if (adminContentTableNameLc.Equals(PageContentModel.tableMetadata.tableNameLower)) { // // Page Content // editButtonBarInfo.allowMarkReviewed = true; editButtonBarInfo.isPageContent = true; editButtonBarInfo.hasChildRecords = true; allowLinkAlias = true; } else { // // All other tables (User definined) var pageContentMetadata = ContentMetadataModel.createByUniqueName(core, "page content"); editButtonBarInfo.isPageContent = pageContentMetadata.isParentOf(core, adminData.adminContent.id); editButtonBarInfo.hasChildRecords = adminData.adminContent.containsField(core, "parentid"); editButtonBarInfo.allowMarkReviewed = core.db.isSQLTableField(adminData.adminContent.tableName, "DateReviewed"); } // // Print common form elements var Stream = new StringBuilderLegacyController(); Stream.add("\r<input type=\"hidden\" name=\"fieldEditorPreference\" id=\"fieldEditorPreference\" value=\"\">"); string editSectionButtonBar = AdminUIController.getSectionButtonBarForEdit(core, editButtonBarInfo); Stream.add(editSectionButtonBar); var headerInfo = new RecordEditHeaderInfoClass { recordId = adminData.editRecord.id, recordLockById = adminData.editRecord.editLock.editLockByMemberId, recordLockExpiresDate = encodeDate(adminData.editRecord.editLock.editLockExpiresDate), recordName = adminData.editRecord.nameLc }; string titleBarDetails = AdminUIController.getEditForm_TitleBarDetails(core, headerInfo, adminData.editRecord); Stream.add(AdminUIController.getSectionHeader(core, "", titleBarDetails)); { var editTabs = new EditTabModel(); EditViewTabList.addContentTabs(core, adminData, editTabs, editorEnv); if (allowPeopleGroups) { EditViewTabList.addCustomTab(core, editTabs, "Groups", GroupRuleEditor.get(core, adminData)); } if (allowLinkAlias) { EditViewTabList.addCustomTab(core, editTabs, "Link Aliases", LinkAliasEditor.getForm_Edit_LinkAliases(core, adminData, adminData.editRecord.userReadOnly)); } EditViewTabList.addCustomTab(core, editTabs, "Control Info", EditViewTabControlInfo.get(core, adminData, editorEnv)); Stream.add(editTabs.getTabs(core)); } Stream.add(editSectionButtonBar); Stream.add(HtmlController.inputHidden("FormFieldList", editorEnv.formFieldList)); returnHtml = wrapForm(core, Stream.text, adminData, AdminFormEdit); // // -- update page title if (adminData.editRecord.id == 0) { core.html.addTitle("Add " + adminData.adminContent.name); } else if (adminData.editRecord.nameLc == "") { core.html.addTitle("Edit #" + adminData.editRecord.id + " in " + adminData.editRecord.contentControlId_Name); } else { core.html.addTitle("Edit " + adminData.editRecord.nameLc + " in " + adminData.editRecord.contentControlId_Name); } } catch (Exception ex) { LogController.logError(core, ex); throw; } return(returnHtml); }
// //==================================================================================================== // public static string get(CoreController core) { string tempGetForm_QuickStats = null; try { string sql = null; string RowColor = null; string Panel = null; int VisitID = 0; int VisitCount = 0; double PageCount = 0; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); // // --- Start a form to make a refresh button Stream.add(core.html.getPanelButtons(ButtonCancel + "," + ButtonRefresh)); Stream.add("<input TYPE=\"hidden\" NAME=\"asf\" VALUE=\"" + AdminFormQuickStats + "\">"); Stream.add(core.html.getPanel(" ")); // // --- Indented part (Title Area plus page) // Stream.add("<table border=\"0\" cellpadding=\"20\" cellspacing=\"0\" width=\"100%\"><tr><td>" + SpanClassAdminNormal); Stream.add("<h1>Real-Time Activity Report</h1>"); // // --- set column width // Stream.add("<h2>Visits Today</h2>"); Stream.add("<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\" style=\"background-color:white;border-top:1px solid #888;\">"); // // ----- All Visits Today // using (var csData = new CsModel(core)) { sql = "SELECT Count(ccVisits.ID) AS VisitCount, Avg(ccVisits.PageVisits) AS PageCount FROM ccVisits WHERE ((ccVisits.StartTime)>" + DbController.encodeSQLDate(core.doc.profileStartTime.Date) + ");"; csData.openSql(sql); if (csData.ok()) { VisitCount = csData.getInteger("VisitCount"); PageCount = csData.getNumber("pageCount"); Stream.add("<tr>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "All Visits</span></td>"); Stream.add("<td style=\"width:150px;border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "<a target=\"_blank\" href=\"/" + HtmlController.encodeHtml(core.appConfig.adminRoute + "?" + rnAdminForm + "=" + AdminFormReports + "&rid=3&DateFrom=" + core.doc.profileStartTime + "&DateTo=" + core.doc.profileStartTime.ToShortDateString()) + "\">" + VisitCount + "</A>, " + string.Format("{0:N2}", PageCount) + " pages/visit.</span></td>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "This includes all visitors to the website, including guests, bots and administrators. Pages/visit includes page hits and not ajax or remote method hits.</span></td>"); Stream.add("</tr>"); } } // // ----- Non-Bot Visits Today // using (var csData = new CsModel(core)) { sql = "SELECT Count(ccVisits.ID) AS VisitCount, Avg(ccVisits.PageVisits) AS PageCount FROM ccVisits WHERE (ccVisits.CookieSupport=1)and((ccVisits.StartTime)>" + DbController.encodeSQLDate(core.doc.profileStartTime.Date) + ");"; csData.openSql(sql); if (csData.ok()) { VisitCount = csData.getInteger("VisitCount"); PageCount = csData.getNumber("pageCount"); Stream.add("<tr>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "Non-bot Visits</span></td>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "<a target=\"_blank\" href=\"/" + HtmlController.encodeHtml(core.appConfig.adminRoute + "?" + rnAdminForm + "=" + AdminFormReports + "&rid=3&DateFrom=" + core.doc.profileStartTime.ToShortDateString() + "&DateTo=" + core.doc.profileStartTime.ToShortDateString()) + "\">" + VisitCount + "</A>, " + string.Format("{0:N2}", PageCount) + " pages/visit.</span></td>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "This excludes hits from visitors identified as bots. Pages/visit includes page hits and not ajax or remote method hits.</span></td>"); Stream.add("</tr>"); } } // // ----- Visits Today by new visitors // using (var csData = new CsModel(core)) { sql = "SELECT Count(ccVisits.ID) AS VisitCount, Avg(ccVisits.PageVisits) AS PageCount FROM ccVisits WHERE (ccVisits.CookieSupport=1)and(ccVisits.StartTime>" + DbController.encodeSQLDate(core.doc.profileStartTime.Date) + ")AND(ccVisits.VisitorNew<>0);"; csData.openSql(sql); if (csData.ok()) { VisitCount = csData.getInteger("VisitCount"); PageCount = csData.getNumber("pageCount"); Stream.add("<tr>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "Visits by New Visitors</span></td>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "<a target=\"_blank\" href=\"/" + HtmlController.encodeHtml(core.appConfig.adminRoute + "?" + rnAdminForm + "=" + AdminFormReports + "&rid=3&ExcludeOldVisitors=1&DateFrom=" + core.doc.profileStartTime.ToShortDateString() + "&DateTo=" + core.doc.profileStartTime.ToShortDateString()) + "\">" + VisitCount + "</A>, " + string.Format("{0:N2}", PageCount) + " pages/visit.</span></td>"); Stream.add("<td style=\"border-bottom:1px solid #888;\" valign=top>" + SpanClassAdminNormal + "This includes only new visitors not identified as bots. Pages/visit includes page hits and not ajax or remote method hits.</span></td>"); Stream.add("</tr>"); } csData.close(); } // Stream.add("</table>"); // // ----- Visits currently online // { Panel = ""; Stream.add("<h2>Current Visits</h2>"); using (var csData = new CsModel(core)) { sql = "SELECT ccVisits.HTTP_REFERER as referer,ccVisits.remote_addr as Remote_Addr, ccVisits.LastVisitTime as LastVisitTime, ccVisits.PageVisits as PageVisits, ccMembers.Name as MemberName, ccVisits.ID as VisitID, ccMembers.ID as MemberID" + " FROM ccVisits LEFT JOIN ccMembers ON ccVisits.memberId = ccMembers.ID" + " WHERE (((ccVisits.LastVisitTime)>" + DbController.encodeSQLDate(core.doc.profileStartTime.AddHours(-1)) + "))" + " ORDER BY ccVisits.LastVisitTime DESC;"; csData.openSql(sql); if (csData.ok()) { Panel = Panel + "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\">"; Panel = Panel + "<tr bgcolor=\"#B0B0B0\">"; Panel = Panel + "<td width=\"20%\" align=\"left\">" + SpanClassAdminNormal + "User</td>"; Panel = Panel + "<td width=\"20%\" align=\"left\">" + SpanClassAdminNormal + "IP Address</td>"; Panel = Panel + "<td width=\"20%\" align=\"left\">" + SpanClassAdminNormal + "Last Page Hit</td>"; Panel = Panel + "<td width=\"10%\" align=\"right\">" + SpanClassAdminNormal + "Page Hits</td>"; Panel = Panel + "<td width=\"10%\" align=\"right\">" + SpanClassAdminNormal + "Visit</td>"; Panel = Panel + "<td width=\"30%\" align=\"left\">" + SpanClassAdminNormal + "Referer</td>"; Panel = Panel + "</tr>"; RowColor = "ccPanelRowEven"; while (csData.ok()) { VisitID = csData.getInteger("VisitID"); Panel = Panel + "<tr class=\"" + RowColor + "\">"; Panel = Panel + "<td align=\"left\">" + SpanClassAdminNormal + "<a target=\"_blank\" href=\"/" + HtmlController.encodeHtml(core.appConfig.adminRoute + "?" + rnAdminForm + "=" + AdminFormReports + "&rid=16&MemberID=" + csData.getInteger("MemberID")) + "\">" + csData.getText("MemberName") + "</A></span></td>"; Panel = Panel + "<td align=\"left\">" + SpanClassAdminNormal + csData.getText("Remote_Addr") + "</span></td>"; Panel = Panel + "<td align=\"left\">" + SpanClassAdminNormal + csData.getDate("LastVisitTime").ToString("") + "</span></td>"; Panel = Panel + "<td align=\"right\">" + SpanClassAdminNormal + "<a target=\"_blank\" href=\"/" + core.appConfig.adminRoute + "?" + rnAdminForm + "=" + AdminFormReports + "&rid=10&VisitID=" + VisitID + "\">" + csData.getText("PageVisits") + "</A></span></td>"; Panel = Panel + "<td align=\"right\">" + SpanClassAdminNormal + "<a target=\"_blank\" href=\"/" + core.appConfig.adminRoute + "?" + rnAdminForm + "=" + AdminFormReports + "&rid=17&VisitID=" + VisitID + "\">" + VisitID + "</A></span></td>"; Panel = Panel + "<td align=\"left\">" + SpanClassAdminNormal + " " + csData.getText("referer") + "</span></td>"; Panel = Panel + "</tr>"; if (RowColor == "ccPanelRowEven") { RowColor = "ccPanelRowOdd"; } else { RowColor = "ccPanelRowEven"; } csData.goNext(); } Panel = Panel + "</table>"; } csData.close(); } Stream.add(core.html.getPanel(Panel, "ccPanel", "ccPanelShadow", "ccPanelHilite", "100%", 0)); } Stream.add("</td></tr></table>"); //Stream.Add(htmlController.form_end()); // tempGetForm_QuickStats = HtmlController.form(core, Stream.text); core.html.addTitle("Quick Stats"); return(tempGetForm_QuickStats); // // ----- Error Trap // } catch (Exception ex) { LogController.logError(core, ex); } return(tempGetForm_QuickStats); }
// //============================================================================= /// <summary> /// Remove all Content Fields and rebuild them from the fields found in a table /// </summary> /// <param name="core"></param> /// <returns></returns> // public static string get(CoreController core) { string result = ""; try { string Button = core.docProperties.getText("Button"); StringBuilderLegacyController Stream = new StringBuilderLegacyController(); // // print out the submit form // Stream.add("<table border=\"0\" cellpadding=\"11\" cellspacing=\"0\" width=\"100%\">"); // Stream.add("<tr><td colspan=\"2\">" + SpanClassAdminNormal); Stream.add("Delete the current content field definitions for this Content Definition, and recreate them from the table referenced by this content."); Stream.add("</SPAN></td></tr>"); // Stream.add("<tr>"); Stream.add("<TD>" + SpanClassAdminNormal + "Content Name</SPAN></td>"); Stream.add("<TD><Select name=\"ContentName\">"); int ItemCount = 0; using (var csData = new CsModel(core)) { csData.open("Content", "", "name"); while (csData.ok()) { Stream.add("<option value=\"" + csData.getText("name") + "\">" + csData.getText("name") + "</option>"); ItemCount = ItemCount + 1; csData.goNext(); } } if (ItemCount == 0) { Stream.add("<option value=\"-1\">System</option>"); } Stream.add("</select></td>"); Stream.add("</tr>"); // Stream.add("<tr>"); Stream.add("<TD> </td>"); Stream.add("<TD>" + HtmlController.inputSubmit(ButtonCreateFields) + "</td>"); Stream.add("</tr>"); // Stream.add("<tr>"); Stream.add("<td width=\"150\"><IMG alt=\"\" src=\"" + cdnPrefix + "Images/spacer.gif\" width=\"150\" height=\"1\"></td>"); Stream.add("<td width=\"99%\"><IMG alt=\"\" src=\"" + cdnPrefix + "Images/spacer.gif\" width=\"100%\" height=\"1\"></td>"); Stream.add("</tr>"); Stream.add("</TABLE>"); Stream.add("</form>"); // // process the button if present // if (Button == ButtonCreateFields) { string ContentName = core.docProperties.getText("ContentName"); if (string.IsNullOrEmpty(ContentName)) { Stream.add("Select a content before submitting. Fields were not changed."); } else { int ContentId = ContentMetadataModel.getContentId(core, ContentName); if (ContentId == 0) { Stream.add("GetContentID failed. Fields were not changed."); } else { MetadataController.deleteContentRecords(core, "Content Fields", "ContentID=" + DbController.encodeSQLNumber(ContentId)); // // todo -- looks like the tool code did not come with the migration ? // } } } string ButtonList = ""; result = AdminUIController.getToolForm(core, Stream.text, ButtonList); } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //======================================================================== // Editor features are stored in the \config\EditorFeatures.txt file // This is a crlf delimited list, with each row including: // admin:featurelist // contentmanager:featurelist // public:featurelist //======================================================================== // public static string get(CoreController core) { string result = null; try { string Description = "This tool is used to configure the wysiwyg content editor for different uses. Check the Administrator column if you want administrators to have access to this feature when editing a page. Check the Content Manager column to allow non-admins to have access to this feature. Check the Public column if you want those on the public site to have access to the feature when the editor is used for public forms."; string Button = core.docProperties.getText(RequestNameButton); if (Button == ButtonCancel) { // // Cancel button pressed, return with nothing goes to root form } else { StringBuilderLegacyController Content = new StringBuilderLegacyController(); string ButtonList = null; // // From here down will return a form if (!core.session.isAuthenticatedAdmin()) { // // Does not have permission ButtonList = ButtonCancel; Content.add(AdminUIController.getFormBodyAdminOnly()); core.html.addTitle("Style Editor"); result = AdminUIController.getToolBody(core, "Site Styles", ButtonList, "", true, true, Description, "", 0, Content.text); } else { string AdminList = ""; string CMList = ""; string PublicList = ""; int Ptr = 0; string FeatureName = null; // // OK to see and use this form if (Button == ButtonSave || Button == ButtonOK) { // // Save the Previous edits core.siteProperties.setProperty("Editor Background Color", core.docProperties.getText("editorbackgroundcolor")); for (Ptr = 0; Ptr <= ((string[])null).GetUpperBound(0); Ptr++) { FeatureName = ((string[])null)[Ptr]; if (GenericController.toLCase(FeatureName) == "styleandformatting") { // // must always be on or it throws js error (editor bug I guess) // AdminList = AdminList + "," + FeatureName; CMList = CMList + "," + FeatureName; PublicList = PublicList + "," + FeatureName; } else { if (core.docProperties.getBoolean(FeatureName + ".admin")) { AdminList = AdminList + "," + FeatureName; } if (core.docProperties.getBoolean(FeatureName + ".cm")) { CMList = CMList + "," + FeatureName; } if (core.docProperties.getBoolean(FeatureName + ".public")) { PublicList = PublicList + "," + FeatureName; } } } core.privateFiles.saveFile(InnovaEditorFeaturefilename, "admin:" + AdminList + Environment.NewLine + "contentmanager:" + CMList + Environment.NewLine + "public:" + PublicList); // // Clear the editor style rules template cache so next edit gets new background color string EditorStyleRulesFilename = GenericController.strReplace(EditorStyleRulesFilenamePattern, "$templateid$", "0", 1, 99, 1); core.privateFiles.deleteFile(EditorStyleRulesFilename); // using (var csData = new CsModel(core)) { csData.openSql("select id from cctemplates"); while (csData.ok()) { EditorStyleRulesFilename = GenericController.strReplace(EditorStyleRulesFilenamePattern, "$templateid$", csData.getText("ID"), 1, 99, 1); core.privateFiles.deleteFile(EditorStyleRulesFilename); csData.goNext(); } } } if (Button != ButtonOK) { // // Draw the form string FeatureList = core.cdnFiles.readFileText(InnovaEditorFeaturefilename); if (string.IsNullOrEmpty(FeatureList)) { FeatureList = "admin:" + InnovaEditorFeatureList + Environment.NewLine + "contentmanager:" + InnovaEditorFeatureList + Environment.NewLine + "public:" + InnovaEditorPublicFeatureList; } if (!string.IsNullOrEmpty(FeatureList)) { string[] Features = stringSplit(FeatureList, Environment.NewLine); AdminList = Features[0].Replace("admin:", ""); if (Features.GetUpperBound(0) > 0) { CMList = Features[1].Replace("contentmanager:", ""); if (Features.GetUpperBound(0) > 1) { PublicList = Features[2].Replace("public:", ""); } } } string Copy = Environment.NewLine + "<tr class=\"ccAdminListCaption\">" + "<td align=left style=\"width:200;\">Feature</td>" + "<td align=center style=\"width:100;\">Administrators</td>" + "<td align=center style=\"width:100;\">Content Managers</td>" + "<td align=center style=\"width:100;\">Public</td>" + "</tr>"; int RowPtr = 0; for (Ptr = 0; Ptr <= ((string[])null).GetUpperBound(0); Ptr++) { FeatureName = ((string[])null)[Ptr]; if (GenericController.toLCase(FeatureName) == "styleandformatting") { // // hide and force on during process - editor bug I think. // } else { string TDLeft = HtmlController.tableCellStart("", 0, encodeBoolean(RowPtr % 2), "left"); string TDCenter = HtmlController.tableCellStart("", 0, encodeBoolean(RowPtr % 2), "center"); bool AllowAdmin = GenericController.encodeBoolean("," + AdminList + ",".IndexOf("," + FeatureName + ",", System.StringComparison.OrdinalIgnoreCase) + 1); bool AllowCM = GenericController.encodeBoolean("," + CMList + ",".IndexOf("," + FeatureName + ",", System.StringComparison.OrdinalIgnoreCase) + 1); bool AllowPublic = GenericController.encodeBoolean("," + PublicList + ",".IndexOf("," + FeatureName + ",", System.StringComparison.OrdinalIgnoreCase) + 1); Copy += Environment.NewLine + "<tr>" + TDLeft + FeatureName + "</td>" + TDCenter + HtmlController.checkbox(FeatureName + ".admin", AllowAdmin) + "</td>" + TDCenter + HtmlController.checkbox(FeatureName + ".cm", AllowCM) + "</td>" + TDCenter + HtmlController.checkbox(FeatureName + ".public", AllowPublic) + "</td>" + "</tr>"; RowPtr = RowPtr + 1; } } Copy = "" + Environment.NewLine + "<div><b>body background style color</b> (default='white')</div>" + Environment.NewLine + "<div>" + HtmlController.inputText_Legacy(core, "editorbackgroundcolor", core.siteProperties.getText("Editor Background Color", "white")) + "</div>" + Environment.NewLine + "<div> </div>" + Environment.NewLine + "<div><b>Toolbar features available</b></div>" + Environment.NewLine + "<table border=\"0\" cellpadding=\"4\" cellspacing=\"0\" width=\"500px\" align=left>" + GenericController.nop(Copy) + Environment.NewLine + kmaEndTable; Copy = Environment.NewLine + HtmlController.tableStart(20, 0, 0) + "<tr><td>" + GenericController.nop(Copy) + "</td></tr>\r\n" + kmaEndTable; Content.add(Copy); ButtonList = ButtonCancel + "," + ButtonRefresh + "," + ButtonSave + "," + ButtonOK; Content.add(HtmlController.inputHidden(rnAdminSourceForm, AdminFormEditorConfig)); core.html.addTitle("Editor Settings"); result = AdminUIController.getToolBody(core, "Editor Configuration", ButtonList, "", true, true, Description, "", 0, Content.text); } } } } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //======================================================================== // //======================================================================== // public static string get(CPClass cp) { string tempGetForm_HouseKeepingControl = null; try { // StringBuilderLegacyController Content = new StringBuilderLegacyController(); string Copy = null; string SQL = null; string Button = null; int PagesTotal = 0; string Caption = null; DateTime DateValue = default(DateTime); string AgeInDays = null; int ArchiveRecordAgeDays = 0; string ArchiveTimeOfDay = null; bool ArchiveAllowFileClean = false; string ButtonList = ""; string Description = null; // Button = cp.core.docProperties.getText(RequestNameButton); if (Button == ButtonCancel) { // // // return(cp.core.webServer.redirect("/" + cp.core.appConfig.adminRoute, "HouseKeepingControl, Cancel Button Pressed")); } else if (!cp.core.session.isAuthenticatedAdmin()) { // // // ButtonList = ButtonCancel; Content.add(AdminUIController.getFormBodyAdminOnly()); } else { // string tableBody = ""; // // Set defaults // ArchiveRecordAgeDays = (cp.core.siteProperties.getInteger("ArchiveRecordAgeDays", 0)); ArchiveTimeOfDay = cp.core.siteProperties.getText("ArchiveTimeOfDay", "12:00:00 AM"); ArchiveAllowFileClean = (cp.core.siteProperties.getBoolean("ArchiveAllowFileClean", false)); // // Process Requests // switch (Button) { case ButtonOK: case ButtonSave: // ArchiveRecordAgeDays = cp.core.docProperties.getInteger("ArchiveRecordAgeDays"); cp.core.siteProperties.setProperty("ArchiveRecordAgeDays", GenericController.encodeText(ArchiveRecordAgeDays)); // ArchiveTimeOfDay = cp.core.docProperties.getText("ArchiveTimeOfDay"); cp.core.siteProperties.setProperty("ArchiveTimeOfDay", ArchiveTimeOfDay); // ArchiveAllowFileClean = cp.core.docProperties.getBoolean("ArchiveAllowFileClean"); cp.core.siteProperties.setProperty("ArchiveAllowFileClean", GenericController.encodeText(ArchiveAllowFileClean)); break; } // if (Button == ButtonOK) { return(cp.core.webServer.redirect("/" + cp.core.appConfig.adminRoute, "StaticPublishControl, OK Button Pressed")); } // // ----- Status // tableBody += HtmlController.tableRowStart() + "<td colspan=\"3\" class=\"ccPanel3D ccAdminEditSubHeader\"><b>Status</b>" + tableCellEnd + kmaEndTableRow; // // ----- Visits Found // PagesTotal = 0; SQL = "SELECT Count(ID) as Result FROM ccVisits;"; using (var csData = new CsModel(cp.core)) { csData.openSql(SQL); if (csData.ok()) { PagesTotal = csData.getInteger("Result"); } } tableBody += AdminUIController.getEditRowLegacy(cp.core, SpanClassAdminNormal + PagesTotal, "Visits Found", "", false, false, ""); // // ----- Oldest Visit // Copy = "unknown"; AgeInDays = "unknown"; using (var csData = new CsModel(cp.core)) { SQL = cp.core.db.getSQLSelect("ccVisits", "DateAdded", "", "ID", "", 1); csData.openSql(SQL); if (csData.ok()) { DateValue = csData.getDate("DateAdded"); if (DateValue != DateTime.MinValue) { Copy = GenericController.encodeText(DateValue); AgeInDays = GenericController.encodeText(encodeInteger(Math.Floor(encodeNumber(cp.core.doc.profileStartTime - DateValue)))); } } } tableBody += (AdminUIController.getEditRowLegacy(cp.core, SpanClassAdminNormal + Copy + " (" + AgeInDays + " days)", "Oldest Visit", "", false, false, "")); // // ----- Viewings Found // PagesTotal = 0; SQL = "SELECT Count(ID) as result FROM ccViewings;"; using (var csData = new CsModel(cp.core)) { csData.openSql(SQL); if (csData.ok()) { PagesTotal = csData.getInteger("Result"); } csData.close(); } tableBody += (AdminUIController.getEditRowLegacy(cp.core, SpanClassAdminNormal + PagesTotal, "Viewings Found", "", false, false, "")); // tableBody += (HtmlController.tableRowStart() + "<td colspan=\"3\" class=\"ccPanel3D ccAdminEditSubHeader\"><b>Options</b>" + tableCellEnd + kmaEndTableRow); // Caption = "Archive Age"; Copy = HtmlController.inputText_Legacy(cp.core, "ArchiveRecordAgeDays", ArchiveRecordAgeDays.ToString(), -1, 20) + " Number of days to keep visit records. 0 disables housekeeping."; tableBody += (AdminUIController.getEditRowLegacy(cp.core, Copy, Caption)); // Caption = "Housekeeping Time"; Copy = HtmlController.inputText_Legacy(cp.core, "ArchiveTimeOfDay", ArchiveTimeOfDay, -1, 20) + " The time of day when record deleting should start."; tableBody += (AdminUIController.getEditRowLegacy(cp.core, Copy, Caption)); // Caption = "Purge Content Files"; Copy = HtmlController.checkbox("ArchiveAllowFileClean", ArchiveAllowFileClean) + " Delete Contensive content files with no associated database record."; tableBody += (AdminUIController.getEditRowLegacy(cp.core, Copy, Caption)); // Content.add(AdminUIController.editTable(tableBody)); Content.add(HtmlController.inputHidden(rnAdminSourceForm, AdminformHousekeepingControl)); ButtonList = ButtonCancel + ",Refresh," + ButtonSave + "," + ButtonOK; } // Caption = "Data Housekeeping Control"; Description = "This tool is used to control the database record housekeeping process. This process deletes visit history records, so care should be taken before making any changes."; tempGetForm_HouseKeepingControl = AdminUIController.getToolBody(cp.core, Caption, ButtonList, "", false, false, Description, "", 0, Content.text); // cp.core.html.addTitle(Caption); } catch (Exception ex) { LogController.logError(cp.core, ex); } return(tempGetForm_HouseKeepingControl); }
// //======================================================================== // public static string get(CoreController core) { try { // string Button = null; string SQL = null; string RQS = null; int PageSize = 0; int PageNumber = 0; int TopCount = 0; int RowPointer = 0; int DataRowCount = 0; string PreTableCopy = ""; string PostTableCopy = ""; int ColumnPtr = 0; string[] ColCaption = null; string[] ColAlign = null; string[] ColWidth = null; string[,] Cells = null; string AdminURL = null; int RowCnt = 0; int RowPtr = 0; int ContentId = 0; string Format = null; string Name = null; string title = null; string Description = null; string ButtonCommaListLeft = null; string ButtonCommaListRight = null; int ContentPadding = 0; string ContentSummary = ""; StringBuilderLegacyController Tab0 = new StringBuilderLegacyController(); StringBuilderLegacyController Tab1 = new StringBuilderLegacyController(); string Content = ""; string SQLFieldName = null; var adminMenu = new EditTabModel(); // const int ColumnCnt = 4; // Button = core.docProperties.getText(RequestNameButton); ContentId = core.docProperties.getInteger("ContentID"); Format = core.docProperties.getText("Format"); // title = "Custom Report Manager"; Description = "Custom Reports are a way for you to create a snapshot of data to view or download. To request a report, select the Custom Reports tab, check the report(s) you want, and click the [Request Download] Button. When your report is ready, it will be available in the <a href=\"?" + rnAdminForm + "=30\">Download Manager</a>. To create a new custom report, select the Request New Report tab, enter a name and SQL statement, and click the Apply button."; ContentPadding = 0; ButtonCommaListLeft = ButtonCancel + "," + ButtonDelete + "," + ButtonRequestDownload; ButtonCommaListRight = ""; SQLFieldName = "SQLQuery"; // if (!core.session.isAuthenticatedAdmin()) { // // Must be a developer // Description = Description + "You can not access the Custom Report Manager because your account is not configured as an administrator."; } else { // // Process Requests // if (!string.IsNullOrEmpty(Button)) { switch (Button) { case ButtonCancel: return(core.webServer.redirect("/" + core.appConfig.adminRoute, "CustomReports, Cancel Button Pressed")); case ButtonDelete: RowCnt = core.docProperties.getInteger("RowCnt"); if (RowCnt > 0) { for (RowPtr = 0; RowPtr < RowCnt; RowPtr++) { if (core.docProperties.getBoolean("Row" + RowPtr)) { MetadataController.deleteContentRecord(core, "Custom Reports", core.docProperties.getInteger("RowID" + RowPtr)); } } } break; case ButtonRequestDownload: case ButtonApply: // Name = core.docProperties.getText("name"); SQL = core.docProperties.getText(SQLFieldName); if (!string.IsNullOrEmpty(Name) || !string.IsNullOrEmpty(SQL)) { if ((string.IsNullOrEmpty(Name)) || (string.IsNullOrEmpty(SQL))) { Processor.Controllers.ErrorController.addUserError(core, "A name and SQL Query are required to save a new custom report."); } else { int customReportId = 0; using (var csData = new CsModel(core)) { csData.insert("Custom Reports"); if (csData.ok()) { customReportId = csData.getInteger("id"); csData.set("Name", Name); csData.set(SQLFieldName, SQL); } csData.close(); } requestDownload(core, customReportId); } } // RowCnt = core.docProperties.getInteger("RowCnt"); if (RowCnt > 0) { for (RowPtr = 0; RowPtr < RowCnt; RowPtr++) { if (core.docProperties.getBoolean("Row" + RowPtr)) { int customReportId = core.docProperties.getInteger("RowID" + RowPtr); using (var csData = new CsModel(core)) { csData.openRecord("Custom Reports", customReportId); if (csData.ok()) { SQL = csData.getText(SQLFieldName); Name = csData.getText("Name"); } } requestDownload(core, customReportId); } } } break; } } // // Build Tab0 // Tab0.add("<p>The following is a list of available custom reports.</p>"); // RQS = core.doc.refreshQueryString; PageSize = core.docProperties.getInteger(RequestNamePageSize); if (PageSize == 0) { PageSize = 50; } PageNumber = core.docProperties.getInteger(RequestNamePageNumber); if (PageNumber == 0) { PageNumber = 1; } AdminURL = "/" + core.appConfig.adminRoute; TopCount = PageNumber * PageSize; // // Setup Headings // ColCaption = new string[ColumnCnt + 1]; ColAlign = new string[ColumnCnt + 1]; ColWidth = new string[ColumnCnt + 1]; Cells = new string[PageSize + 1, ColumnCnt + 1]; // ColCaption[ColumnPtr] = "Select<br><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=10 height=1>"; ColAlign[ColumnPtr] = "center"; ColWidth[ColumnPtr] = "10"; ColumnPtr = ColumnPtr + 1; // ColCaption[ColumnPtr] = "Name"; ColAlign[ColumnPtr] = "left"; ColWidth[ColumnPtr] = "100%"; ColumnPtr = ColumnPtr + 1; // ColCaption[ColumnPtr] = "Created By<br><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=100 height=1>"; ColAlign[ColumnPtr] = "left"; ColWidth[ColumnPtr] = "100"; ColumnPtr = ColumnPtr + 1; // ColCaption[ColumnPtr] = "Date Created<br><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=150 height=1>"; ColAlign[ColumnPtr] = "left"; ColWidth[ColumnPtr] = "150"; ColumnPtr = ColumnPtr + 1; // // Get Data // using (var csData = new CsModel(core)) { RowPointer = 0; if (!csData.open("Custom Reports")) { Cells[0, 1] = "There are no custom reports defined"; RowPointer = 1; } else { DataRowCount = csData.getRowCount(); while (csData.ok() && (RowPointer < PageSize)) { int customReportId = csData.getInteger("ID"); Cells[RowPointer, 0] = HtmlController.checkbox("Row" + RowPointer) + HtmlController.inputHidden("RowID" + RowPointer, customReportId); Cells[RowPointer, 1] = csData.getText("name"); Cells[RowPointer, 2] = csData.getText("CreatedBy"); Cells[RowPointer, 3] = csData.getDate("DateAdded").ToShortDateString(); RowPointer = RowPointer + 1; csData.goNext(); } } csData.close(); } string Cell = null; Tab0.add(HtmlController.inputHidden("RowCnt", RowPointer)); Cell = AdminUIController.getReport(core, RowPointer, ColCaption, ColAlign, ColWidth, Cells, PageSize, PageNumber, PreTableCopy, PostTableCopy, DataRowCount, "ccPanel"); Tab0.add("<div>" + Cell + "</div>"); // // Build RequestContent Form // Tab1.add("<p>Use this form to create a new custom report. Enter the SQL Query for the report, and a name that will be used as a caption.</p>"); // Tab1.add("<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" width=\"100%\">"); // Tab1.add("<tr>"); Tab1.add("<td align=right>Name</td>"); Tab1.add("<td>" + HtmlController.inputText_Legacy(core, "Name", "", 1, 40) + "</td>"); Tab1.add("</tr>"); // Tab1.add("<tr>"); Tab1.add("<td align=right>SQL Query</td>"); Tab1.add("<td>" + HtmlController.inputText_Legacy(core, SQLFieldName, "", 8, 40) + "</td>"); Tab1.add("</tr>"); // Tab1.add("<tr><td width=\"120\"><img alt=\"space\" src=\"" + cdnPrefix + "images/spacer.gif\" width=\"120\" height=\"1\"></td><td width=\"100%\"> </td></tr></table>"); // // Build and add tabs // adminMenu.addEntry("Custom Reports", Tab0.text, "ccAdminTab"); adminMenu.addEntry("Request New Report", Tab1.text, "ccAdminTab"); Content = adminMenu.getTabs(core); // } // core.html.addTitle("Custom Reports"); // return(AdminUIController.getToolBody(core, title, ButtonCommaListLeft, ButtonCommaListRight, true, true, Description, ContentSummary, ContentPadding, Content)); } catch (Exception ex) { LogController.logError(core, ex); return(toolExceptionMessage); } }
// //============================================================================= // Create a child content //============================================================================= // private string GetForm_CreateChildContent(CoreController core) { string result = ""; try { int ParentContentId = 0; string ChildContentName = ""; bool AddAdminMenuEntry = false; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); string ButtonList = ButtonCancel + "," + ButtonRun; // Stream.add(AdminUIController.getHeaderTitleDescription("Create a Child Content from a Content Definition", "This tool creates a Content Definition based on another Content Definition.")); // // print out the submit form if (core.docProperties.getText("Button") != "") { // // Process input // ParentContentId = core.docProperties.getInteger("ParentContentID"); var parentContentMetadata = ContentMetadataModel.create(core, ParentContentId); ChildContentName = core.docProperties.getText("ChildContentName"); AddAdminMenuEntry = core.docProperties.getBoolean("AddAdminMenuEntry"); // Stream.add(SpanClassAdminSmall); if ((parentContentMetadata == null) || (string.IsNullOrEmpty(ChildContentName))) { Stream.add("<p>You must select a parent and provide a child name.</p>"); } else { // // Create Definition // Stream.add("<P>Creating content [" + ChildContentName + "] from [" + parentContentMetadata + "]"); var childContentMetadata = parentContentMetadata.createContentChild(core, ChildContentName, core.session.user.id); // Stream.add("<br>Reloading Content Definitions..."); core.cache.invalidateAll(); core.clearMetaData(); Stream.add("<br>Finished</P>"); } Stream.add("</SPAN>"); } Stream.add(SpanClassAdminNormal); // Stream.add("Parent Content Name<br>"); Stream.add(core.html.selectFromContent("ParentContentID", ParentContentId, "Content", "")); Stream.add("<br><br>"); // Stream.add("Child Content Name<br>"); Stream.add(HtmlController.inputText_Legacy(core, "ChildContentName", ChildContentName, 1, 40)); Stream.add("<br><br>"); // Stream.add("Add Admin Menu Entry under Parent's Menu Entry<br>"); Stream.add(HtmlController.checkbox("AddAdminMenuEntry", AddAdminMenuEntry)); Stream.add("<br><br>"); // //Stream.Add( core.main_GetFormInputHidden(RequestNameAdminForm, AdminFormToolCreateChildContent) Stream.add("</SPAN>"); // result = AdminUIController.getToolForm(core, Stream.text, ButtonList); } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //======================================================================== // public static string getForm_Edit_LinkAliases(CoreController core, AdminDataModel adminData, bool readOnlyField) { string tempGetForm_Edit_LinkAliases = null; try { // // Link Alias value from the admin data // string TabDescription = "Link Aliases are URLs used for this content that are more friendly to users and search engines. If you set the Link Alias field, this name will be used on the URL for this page. If you leave the Link Alias blank, the page name will be used. Below is a list of names that have been used previously and are still active. All of these entries when used in the URL will resolve to this page. The first entry in this list will be used to create menus on the site. To move an entry to the top, type it into the Link Alias field and save."; string tabContent = " "; if (!core.siteProperties.allowLinkAlias) { // // Disabled // TabDescription = "<p>The Link Alias feature is currently disabled. To enable Link Aliases, check the box marked 'Allow Link Alias' on the Page Settings page found on the Navigator under 'Settings'.</p><p>" + TabDescription + "</p>"; } else { // // Link Alias Field // string linkAlias = ""; if (adminData.adminContent.fields.ContainsKey("linkalias")) { linkAlias = GenericController.encodeText(adminData.editRecord.fieldsLc["linkalias"].value); } StringBuilderLegacyController form = new StringBuilderLegacyController(); form.add("<tr><td class=\"ccAdminEditCaption\">" + SpanClassAdminSmall + "Link Alias</td>"); form.add("<td class=\"ccAdminEditField\" align=\"left\" colspan=\"2\">" + SpanClassAdminNormal); if (readOnlyField) { form.add(linkAlias); } else { form.add(HtmlController.inputText_Legacy(core, "LinkAlias", linkAlias)); } form.add("</span></td></tr>"); // // Override Duplicates // form.add("<tr><td class=\"ccAdminEditCaption\">" + SpanClassAdminSmall + "Override Duplicates</td>"); form.add("<td class=\"ccAdminEditField\" align=\"left\" colspan=\"2\">" + SpanClassAdminNormal); if (readOnlyField) { form.add("No"); } else { form.add(HtmlController.checkbox("OverrideDuplicate", false)); } form.add("</span></td></tr>"); // // Table of old Link Aliases // // todo int LinkCnt = 0; string LinkList = ""; using (var csData = new CsModel(core)) { csData.open("Link Aliases", "pageid=" + adminData.editRecord.id, "ID Desc", true, 0, "name"); while (csData.ok()) { LinkList += "<div style=\"margin-left:4px;margin-bottom:4px;\">" + HtmlController.encodeHtml(csData.getText("name")) + "</div>"; LinkCnt += 1; csData.goNext(); } } if (LinkCnt > 0) { form.add("<tr><td class=\"ccAdminEditCaption\">" + SpanClassAdminSmall + "Previous Link Alias List</td>"); form.add("<td class=\"ccAdminEditField\" align=\"left\" colspan=\"2\">" + SpanClassAdminNormal); form.add(LinkList); form.add("</span></td></tr>"); } tabContent = AdminUIController.editTable(form.text); } // tempGetForm_Edit_LinkAliases = AdminUIController.getEditPanel(core, true, "Link Aliases", TabDescription, tabContent); adminData.editSectionPanelCount += 1; } catch (Exception ex) { LogController.logError(core, ex); } return(tempGetForm_Edit_LinkAliases); }
// //============================================================================= // Create a child content //============================================================================= // public static string get(CPClass cp) { string result = ""; try { // bool IsEmptyList = false; int ParentContentId = 0; string ChildContentName = ""; int ChildContentId = 0; bool AddAdminMenuEntry = false; StringBuilderLegacyController Content = new StringBuilderLegacyController(); string FieldValue = null; bool NewGroup = false; int GroupId = 0; string NewGroupName = ""; string Button = null; string Caption = null; string Description = ""; string ButtonList = ""; bool BlockForm = false; // Button = cp.core.docProperties.getText(RequestNameButton); if (Button == ButtonCancel) { // // // return(cp.core.webServer.redirect("/" + cp.core.appConfig.adminRoute, "GetContentChildTool, Cancel Button Pressed")); } else if (!cp.core.session.isAuthenticatedAdmin()) { // // // ButtonList = ButtonCancel; Content.add(AdminUIController.getFormBodyAdminOnly()); } else { // if (Button != ButtonOK) { // // Load defaults // ParentContentId = cp.core.docProperties.getInteger("ParentContentID"); if (ParentContentId == 0) { ParentContentId = ContentMetadataModel.getContentId(cp.core, "Page Content"); } AddAdminMenuEntry = true; GroupId = 0; } else { // // Process input // ParentContentId = cp.core.docProperties.getInteger("ParentContentID"); var parentContentMetadata = ContentMetadataModel.create(cp.core, ParentContentId); ChildContentName = cp.core.docProperties.getText("ChildContentName"); AddAdminMenuEntry = cp.core.docProperties.getBoolean("AddAdminMenuEntry"); GroupId = cp.core.docProperties.getInteger("GroupID"); NewGroup = cp.core.docProperties.getBoolean("NewGroup"); NewGroupName = cp.core.docProperties.getText("NewGroupName"); // if ((parentContentMetadata == null) || (string.IsNullOrEmpty(ChildContentName))) { Processor.Controllers.ErrorController.addUserError(cp.core, "You must select a parent and provide a child name."); } else { // // Create Definition // Description = Description + "<div> </div>" + "<div>Creating content [" + ChildContentName + "] from [" + parentContentMetadata.name + "]</div>"; var childContentMetadata = parentContentMetadata.createContentChild(cp.core, ChildContentName, cp.core.session.user.id); ChildContentId = ContentMetadataModel.getContentId(cp.core, ChildContentName); // // Create Group and Rule // if (NewGroup && (!string.IsNullOrEmpty(NewGroupName))) { using (var csData = new CsModel(cp.core)) { csData.open("Groups", "name=" + DbController.encodeSQLText(NewGroupName)); if (csData.ok()) { Description = Description + "<div>Group [" + NewGroupName + "] already exists, using existing group.</div>"; GroupId = csData.getInteger("ID"); } else { Description = Description + "<div>Creating new group [" + NewGroupName + "]</div>"; csData.close(); csData.insert("Groups"); if (csData.ok()) { GroupId = csData.getInteger("ID"); csData.set("Name", NewGroupName); csData.set("Caption", NewGroupName); } } } } if (GroupId != 0) { using (var csData = new CsModel(cp.core)) { csData.insert("Group Rules"); if (csData.ok()) { Description = Description + "<div>Assigning group [" + MetadataController.getRecordName(cp.core, "Groups", GroupId) + "] to edit content [" + ChildContentName + "].</div>"; csData.set("GroupID", GroupId); csData.set("ContentID", ChildContentId); } } } // // Add Admin Menu Entry // if (AddAdminMenuEntry) { // // Add Navigator entries } // Description = Description + "<div> </div>" + "<div>Your new content is ready. <a href=\"?" + rnAdminForm + "=22\">Click here</a> to create another Content Definition, or hit [Cancel] to return to the main menu.</div>"; ButtonList = ButtonCancel; BlockForm = true; } cp.core.clearMetaData(); cp.core.cache.invalidateAll(); } // // Get the form // if (!BlockForm) { string tableBody = ""; // FieldValue = "<select size=\"1\" name=\"ParentContentID\" ID=\"\"><option value=\"\">Select One</option>"; FieldValue = FieldValue + GetContentChildTool_Options(cp, 0, ParentContentId); FieldValue = FieldValue + "</select>"; tableBody += AdminUIController.getEditRowLegacy(cp.core, FieldValue, "Parent Content Name", "", false, false, ""); // FieldValue = HtmlController.inputText_Legacy(cp.core, "ChildContentName", ChildContentName, 1, 40); tableBody += AdminUIController.getEditRowLegacy(cp.core, FieldValue, "New Child Content Name", "", false, false, ""); // FieldValue = "" + HtmlController.inputRadio("NewGroup", false.ToString(), NewGroup.ToString()) + cp.core.html.selectFromContent("GroupID", GroupId, "Groups", "", "", "", ref IsEmptyList) + "(Select a current group)" + "<br>" + HtmlController.inputRadio("NewGroup", true.ToString(), NewGroup.ToString()) + HtmlController.inputText_Legacy(cp.core, "NewGroupName", NewGroupName) + "(Create a new group)"; tableBody += AdminUIController.getEditRowLegacy(cp.core, FieldValue, "Content Manager Group", "", false, false, ""); // Content.add(AdminUIController.editTable(tableBody)); Content.add("</td></tr>" + kmaEndTable); // ButtonList = ButtonOK + "," + ButtonCancel; } Content.add(HtmlController.inputHidden(rnAdminSourceForm, AdminFormContentChildTool)); } // Caption = "Create Content Definition"; Description = "<div>This tool is used to create content definitions that help segregate your content into authorable segments.</div>" + Description; result = AdminUIController.getToolBody(cp.core, Caption, ButtonList, "", false, false, Description, "", 0, Content.text); } catch (Exception ex) { LogController.logError(cp.core, ex); } return(result); }
// //============================================================================= // Print the manual query form //============================================================================= // public static string getForm_CacheTool(CPClass cp) { CoreController core = cp.core; try { var form = cp.AdminUI.NewToolForm(); form.Title = "Cache Tool"; form.Description = "Use this tool to get/store/invalidate the application's cache."; //Stream.add(AdminUIController.getHeaderTitleDescription("Cache Tool", "Use this tool to get/store/invalidate the application's cache.")); // string cacheKey = cp.Doc.GetText("cacheKey"); string cacheValue = cp.Doc.GetText("cacheValue"); string button = cp.Doc.GetText("button"); // StringBuilderLegacyController formBody = new StringBuilderLegacyController(); if (button == ButtonCacheGet) { // // -- Get Cache formBody.add("<div>" + core.dateTimeNowMockable + " cache.getObject(" + cacheKey + ")</div>"); object resultObj = cp.Cache.GetObject(cacheKey); if (resultObj == null) { formBody.add("<div>" + core.dateTimeNowMockable + " NULL returned</div>"); } else { try { cacheValue = Newtonsoft.Json.JsonConvert.SerializeObject(resultObj); formBody.add("<div>" + core.dateTimeNowMockable + "CacheValue object returned, json serialized, length [" + cacheValue.Length + "]</div>"); } catch (Exception ex) { formBody.add("<div>" + core.dateTimeNowMockable + " exception during serialization, ex [" + ex + "]</div>"); } } formBody.add("<p>" + core.dateTimeNowMockable + " Done</p>"); } else if (button == ButtonCacheStore) { // // -- Store Cache formBody.add("<div>" + core.dateTimeNowMockable + " cache.store(" + cacheKey + "," + cacheValue + ")</div>"); cp.Cache.Store(cacheKey, cacheValue); formBody.add("<p>" + core.dateTimeNowMockable + " Done</p>"); } else if (button == ButtonCacheInvalidate) { // // -- Invalidate cacheValue = ""; formBody.add("<div>" + core.dateTimeNowMockable + " cache.Invalidate(" + cacheKey + ")</div>"); cp.Cache.Invalidate(cacheKey); formBody.add("<p>" + core.dateTimeNowMockable + " Done</p>"); } else if (button == ButtonCacheInvalidateAll) { // // -- Store Cache cacheValue = ""; formBody.add("<div>" + core.dateTimeNowMockable + " cache.InvalidateAll()</div>"); cp.Cache.InvalidateAll(); formBody.add("<p>" + core.dateTimeNowMockable + " Done</p>"); } // // Display form { // // -- cache key formBody.add(cp.Html5.H4("Cache Key")); formBody.add(cp.Html5.Div(cp.AdminUI.GetTextEditor("cacheKey", cacheKey, "cacheKey", false))); } { // // -- cache value formBody.add(cp.Html5.H4("Cache Value")); formBody.add(cp.Html5.Div(cp.AdminUI.GetTextEditor("cacheValue", cacheValue, "cacheValue", false))); } // // -- assemble form form.Body = formBody.text; form.AddFormButton(ButtonCancel); form.AddFormButton(ButtonCacheGet); form.AddFormButton(ButtonCacheStore); form.AddFormButton(ButtonCacheInvalidate); form.AddFormButton(ButtonCacheInvalidateAll); return(form.GetHtml(cp)); } catch (Exception ex) { LogController.logError(core, ex); throw; } }
// //==================================================================================================== /// <summary> /// Run manual query /// </summary> /// <param name="cp"></param> /// <returns></returns> public static string get(CPClass cp) { string returnHtml = ""; CoreController core = cp.core; try { StringBuilderLegacyController Stream = new StringBuilderLegacyController(); Stream.add(AdminUIController.getHeaderTitleDescription("Run Manual Query", "This tool runs an SQL statement on a selected datasource. If there is a result set, the set is printed in a table.")); // // Get the members SQL Queue // string SQLFilename = core.userProperty.getText("SQLArchive"); if (string.IsNullOrEmpty(SQLFilename)) { SQLFilename = "SQLArchive" + core.session.user.id.ToString("000000000") + ".txt"; core.userProperty.setProperty("SQLArchive", SQLFilename); } string SQLArchive = core.cdnFiles.readFileText(SQLFilename); // // Read in arguments if available // int Timeout = core.docProperties.getInteger("Timeout"); if (Timeout == 0) { Timeout = 30; } // int pageSize = core.docProperties.getInteger("PageSize"); if (pageSize == 0) { pageSize = 10; } // int pageNumber = core.docProperties.getInteger("PageNumber"); if (pageNumber == 0) { pageNumber = 1; } // string SQL = core.docProperties.getText("SQL"); if (string.IsNullOrEmpty(SQL)) { SQL = core.docProperties.getText("SQLList"); } DataSourceModel datasource = DataSourceModel.create(core.cpParent, core.docProperties.getInteger("dataSourceid")); // if ((core.docProperties.getText("button")) == ButtonRun) { // // Add this SQL to the members SQL list // if (!string.IsNullOrEmpty(SQL)) { string SQLArchiveOld = SQLArchive.Replace(SQL + Environment.NewLine, ""); SQLArchive = SQL.Replace(Environment.NewLine, " ") + Environment.NewLine; int LineCounter = 0; while ((LineCounter < 10) && (!string.IsNullOrEmpty(SQLArchiveOld))) { string line = getLine(ref SQLArchiveOld).Trim(); if (!string.IsNullOrWhiteSpace(line)) { SQLArchive += line + Environment.NewLine; } } core.cdnFiles.saveFile(SQLFilename, SQLArchive); } // // Run the SQL // string errBefore = ErrorController.getDocExceptionHtmlList(core); if (!string.IsNullOrWhiteSpace(errBefore)) { // -- error in interface, should be fixed before attempting query Stream.add("<br>" + core.dateTimeNowMockable + " SQL NOT executed. The following errors were detected before execution"); Stream.add(errBefore); } else { Stream.add("<p>" + core.dateTimeNowMockable + " Executing sql [" + SQL + "] on DataSource [" + datasource.name + "]"); DataTable dt = null; try { dt = core.db.executeQuery(SQL, DbController.getStartRecord(pageSize, pageNumber), pageSize); } catch (Exception ex) { // // ----- error Stream.add("<br>" + core.dateTimeNowMockable + " SQL execution returned the following error"); Stream.add("<br>" + ex.Message); } string errSql = ErrorController.getDocExceptionHtmlList(core); if (!string.IsNullOrWhiteSpace(errSql)) { Stream.add("<br>" + core.dateTimeNowMockable + " SQL execution returned the following error"); Stream.add("<br>" + errSql); core.doc.errorList.Clear(); } else { Stream.add("<br>" + core.dateTimeNowMockable + " SQL executed successfully"); if (dt == null) { Stream.add("<br>" + core.dateTimeNowMockable + " SQL returned invalid data."); } else if (dt.Rows == null) { Stream.add("<br>" + core.dateTimeNowMockable + " SQL returned invalid data rows."); } else if (dt.Rows.Count == 0) { Stream.add("<br>" + core.dateTimeNowMockable + " The SQL returned no data."); } else { // // ----- print results // Stream.add("<br>" + core.dateTimeNowMockable + " The following results were returned"); Stream.add("<br></p>"); // // --- Create the Fields for the new table // int FieldCount = dt.Columns.Count; Stream.add("<table class=\"table table-bordered table-hover table-sm table-striped\">"); Stream.add("<thead class=\"thead - inverse\"><tr>"); foreach (DataColumn dc in dt.Columns) { Stream.add("<th>" + dc.ColumnName + "</th>"); } Stream.add("</tr></thead>"); // string[,] resultArray = core.db.convertDataTabletoArray(dt); // int RowMax = resultArray.GetUpperBound(1); int ColumnMax = resultArray.GetUpperBound(0); string RowStart = "<tr>"; string RowEnd = "</tr>"; string ColumnStart = "<td>"; string ColumnEnd = "</td>"; int RowPointer = 0; for (RowPointer = 0; RowPointer <= RowMax; RowPointer++) { Stream.add(RowStart); int ColumnPointer = 0; for (ColumnPointer = 0; ColumnPointer <= ColumnMax; ColumnPointer++) { string CellData = resultArray[ColumnPointer, RowPointer]; if (isNull(CellData)) { Stream.add(ColumnStart + "[null]" + ColumnEnd); } else if (string.IsNullOrEmpty(CellData)) { Stream.add(ColumnStart + "[empty]" + ColumnEnd); } else { Stream.add(ColumnStart + HtmlController.encodeHtml(GenericController.encodeText(CellData)) + ColumnEnd); } } Stream.add(RowEnd); } Stream.add("</table>"); } } } Stream.add("<p>" + core.dateTimeNowMockable + " Done</p>"); } // // Display form { // // -- sql form int SQLRows = core.docProperties.getInteger("SQLRows"); if (SQLRows == 0) { SQLRows = core.userProperty.getInteger("ManualQueryInputRows", 5); } else { core.userProperty.setProperty("ManualQueryInputRows", SQLRows.ToString()); } Stream.add(AdminUIEditorController.getHtmlCodeEditor(core, "SQL", SQL, false, "SQL", false)); Stream.add(" <INPUT TYPE=\"Text\" TabIndex=-1 NAME=\"SQLRows\" SIZE=\"3\" VALUE=\"" + SQLRows + "\" ID=\"\" onchange=\"SQL.rows=SQLRows.value; return true\"> Rows"); } // // -- data source bool isEmptyList = false; Stream.add(AdminUIController.getToolFormInputRow(core, "Data Source", AdminUIEditorController.getLookupContentEditor(core, "DataSourceID", datasource.id, ContentMetadataModel.getContentId(core, "data sources"), ref isEmptyList, false, "", "", false, ""))); { // // -- sql list string js = "var e = document.getElementById('SQLList');SQL.value=e.options[e.selectedIndex].text;"; List <string> lookupList = SQLArchive.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList(); string inputSelect = AdminUIEditorController.getLookupListEditor(core, "SQLList", 0, lookupList, false, "SQLList", "", false); inputSelect = inputSelect.Replace("<select ", "<select onChange=\"" + js + "\" "); Stream.add(AdminUIController.getToolFormInputRow(core, "Previous Queries", inputSelect)); } // // -- page size if (isNull(pageSize)) { pageSize = 100; } Stream.add(AdminUIController.getToolFormInputRow(core, "Page Size", AdminUIEditorController.getTextEditor(core, "PageSize", pageSize.ToString()))); // // -- page number if (isNull(pageNumber)) { pageNumber = 1; } Stream.add(AdminUIController.getToolFormInputRow(core, "Page Number", AdminUIEditorController.getTextEditor(core, "PageNumber", pageNumber.ToString()))); // // -- timeout if (isNull(Timeout)) { Timeout = 30; } Stream.add(AdminUIController.getToolFormInputRow(core, "Timeout (sec)", AdminUIEditorController.getTextEditor(core, "Timeout", Timeout.ToString()))); // // -- assemble form returnHtml = AdminUIController.getToolForm(core, Stream.text, ButtonCancel + "," + ButtonRun); } catch (Exception ex) { LogController.logError(core, ex); throw; } return(returnHtml); }
// //============================================================================= // Print the manual query form //============================================================================= // public static string get(CoreController core) { string result = ""; try { bool StatusOK = false; int FieldCount = 0; object Retries = null; int RowMax = 0; int RowPointer = 0; int ColumnMax = 0; int ColumnPointer = 0; string ColumnStart = null; string ColumnEnd = null; string RowStart = null; string RowEnd = null; string[,] arrayOfSchema = null; string CellData = null; string TableName = ""; StringBuilderLegacyController Stream = new StringBuilderLegacyController(); string ButtonList = null; DataTable RSSchema = null; var tmpList = new List <string> { }; DataSourceModel datasource = DataSourceModel.create(core.cpParent, core.docProperties.getInteger("DataSourceID"), ref tmpList); // ButtonList = ButtonCancel + "," + ButtonRun; // Stream.add(AdminUIController.getHeaderTitleDescription("Query Database Schema", "This tool examines the database schema for all tables available.")); // StatusOK = true; if ((core.docProperties.getText("button")) != ButtonRun) { // // First pass, initialize // Retries = 0; } else { // // Read in arguments // TableName = core.docProperties.getText("TableName"); // // Run the SQL Stream.add(SpanClassAdminSmall + "<br><br>"); Stream.add(core.dateTimeNowMockable + " Opening Table Schema on DataSource [" + datasource.name + "]<br>"); // RSSchema = core.db.getTableSchemaData(TableName); Stream.add(core.dateTimeNowMockable + " GetSchema executed successfully<br>"); if (!DbController.isDataTableOk(RSSchema)) { // // ----- no result // Stream.add(core.dateTimeNowMockable + " A schema was returned, but it contains no records.<br>"); } else { // // ----- print results // Stream.add(core.dateTimeNowMockable + " The following results were returned<br>"); // // --- Create the Fields for the new table // FieldCount = RSSchema.Columns.Count; Stream.add("<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" width=\"100%\">"); Stream.add("<tr>"); foreach (DataColumn RecordField in RSSchema.Columns) { Stream.add("<TD><B>" + SpanClassAdminSmall + RecordField.ColumnName + "</b></SPAN></td>"); } Stream.add("</tr>"); // arrayOfSchema = core.db.convertDataTabletoArray(RSSchema); // RowMax = arrayOfSchema.GetUpperBound(1); ColumnMax = arrayOfSchema.GetUpperBound(0); RowStart = "<tr>"; RowEnd = "</tr>"; ColumnStart = "<td class=\"ccadminsmall\">"; ColumnEnd = "</td>"; for (RowPointer = 0; RowPointer <= RowMax; RowPointer++) { Stream.add(RowStart); for (ColumnPointer = 0; ColumnPointer <= ColumnMax; ColumnPointer++) { CellData = arrayOfSchema[ColumnPointer, RowPointer]; if (isNull(CellData)) { Stream.add(ColumnStart + "[null]" + ColumnEnd); } else if ((CellData == null)) { Stream.add(ColumnStart + "[empty]" + ColumnEnd); } else if (string.IsNullOrEmpty(CellData)) { Stream.add(ColumnStart + "[empty]" + ColumnEnd); } else { Stream.add(ColumnStart + CellData + ColumnEnd); } } Stream.add(RowEnd); } Stream.add("</TABLE>"); RSSchema.Dispose(); RSSchema = null; } // // Index Schema // // RSSchema = DataSourceConnectionObjs(DataSourcePointer).Conn.OpenSchema(SchemaEnum.adSchemaColumns, Array(Empty, Empty, TableName, Empty)) Stream.add(SpanClassAdminSmall + "<br><br>"); Stream.add(core.dateTimeNowMockable + " Opening Index Schema<br>"); // RSSchema = core.db.getIndexSchemaData(TableName); if (!DbController.isDataTableOk(RSSchema)) { // // ----- no result // Stream.add(core.dateTimeNowMockable + " A schema was returned, but it contains no records.<br>"); } else { // // ----- print results // Stream.add(core.dateTimeNowMockable + " The following results were returned<br>"); // // --- Create the Fields for the new table // FieldCount = RSSchema.Columns.Count; Stream.add("<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" width=\"100%\">"); Stream.add("<tr>"); foreach (DataColumn RecordField in RSSchema.Columns) { Stream.add("<TD><B>" + SpanClassAdminSmall + RecordField.ColumnName + "</b></SPAN></td>"); } Stream.add("</tr>"); // arrayOfSchema = core.db.convertDataTabletoArray(RSSchema); // RowMax = arrayOfSchema.GetUpperBound(1); ColumnMax = arrayOfSchema.GetUpperBound(0); RowStart = "<tr>"; RowEnd = "</tr>"; ColumnStart = "<td class=\"ccadminsmall\">"; ColumnEnd = "</td>"; for (RowPointer = 0; RowPointer <= RowMax; RowPointer++) { Stream.add(RowStart); for (ColumnPointer = 0; ColumnPointer <= ColumnMax; ColumnPointer++) { CellData = arrayOfSchema[ColumnPointer, RowPointer]; if (isNull(CellData)) { Stream.add(ColumnStart + "[null]" + ColumnEnd); } else if ((CellData == null)) { Stream.add(ColumnStart + "[empty]" + ColumnEnd); } else if (string.IsNullOrEmpty(CellData)) { Stream.add(ColumnStart + "[empty]" + ColumnEnd); } else { Stream.add(ColumnStart + CellData + ColumnEnd); } } Stream.add(RowEnd); } Stream.add("</TABLE>"); RSSchema.Dispose(); RSSchema = null; } // // Column Schema // Stream.add(SpanClassAdminSmall + "<br><br>"); Stream.add(core.dateTimeNowMockable + " Opening Column Schema<br>"); // RSSchema = core.db.getColumnSchemaData(TableName); Stream.add(core.dateTimeNowMockable + " GetSchema executed successfully<br>"); if (DbController.isDataTableOk(RSSchema)) { // // ----- no result // Stream.add(core.dateTimeNowMockable + " A schema was returned, but it contains no records.<br>"); } else { // // ----- print results // Stream.add(core.dateTimeNowMockable + " The following results were returned<br>"); // // --- Create the Fields for the new table // FieldCount = RSSchema.Columns.Count; Stream.add("<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" width=\"100%\">"); Stream.add("<tr>"); foreach (DataColumn RecordField in RSSchema.Columns) { Stream.add("<TD><B>" + SpanClassAdminSmall + RecordField.ColumnName + "</b></SPAN></td>"); } Stream.add("</tr>"); // arrayOfSchema = core.db.convertDataTabletoArray(RSSchema); // RowMax = arrayOfSchema.GetUpperBound(1); ColumnMax = arrayOfSchema.GetUpperBound(0); RowStart = "<tr>"; RowEnd = "</tr>"; ColumnStart = "<td class=\"ccadminsmall\">"; ColumnEnd = "</td>"; for (RowPointer = 0; RowPointer <= RowMax; RowPointer++) { Stream.add(RowStart); for (ColumnPointer = 0; ColumnPointer <= ColumnMax; ColumnPointer++) { CellData = arrayOfSchema[ColumnPointer, RowPointer]; if (isNull(CellData)) { Stream.add(ColumnStart + "[null]" + ColumnEnd); } else if ((CellData == null)) { Stream.add(ColumnStart + "[empty]" + ColumnEnd); } else if (string.IsNullOrEmpty(CellData)) { Stream.add(ColumnStart + "[empty]" + ColumnEnd); } else { Stream.add(ColumnStart + CellData + ColumnEnd); } } Stream.add(RowEnd); } Stream.add("</TABLE>"); RSSchema.Dispose(); RSSchema = null; } if (!StatusOK) { Stream.add("There was a problem executing this query that may have prevented the results from printing."); } Stream.add(core.dateTimeNowMockable + " Done</SPAN>"); } // // Display form // Stream.add(SpanClassAdminNormal); // Stream.add("<br>"); Stream.add("Table Name<br>"); Stream.add(HtmlController.inputText_Legacy(core, "Tablename", TableName)); // Stream.add("<br><br>"); Stream.add("Data Source<br>"); Stream.add(core.html.selectFromContent("DataSourceID", datasource.id, "Data Sources", "", "Default")); // Stream.add("</SPAN>"); // result = AdminUIController.getToolForm(core, Stream.text, ButtonList); } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //==================================================================================================== /// <summary> /// Get the Configure Edit /// </summary> /// <param name="cp"></param> /// <returns></returns> public static string get(CPClass cp) { CoreController core = cp.core; try { KeyPtrController Index = new KeyPtrController(); int ContentId = cp.Doc.GetInteger(RequestNameToolContentId); var contentMetadata = ContentMetadataModel.create(core, ContentId, true, true); int RecordCount = 0; int formFieldId = 0; string StatusMessage = ""; string ErrorMessage = ""; bool ReloadCDef = cp.Doc.GetBoolean("ReloadCDef"); if (contentMetadata != null) { string ToolButton = cp.Doc.GetText("Button"); // if (!string.IsNullOrEmpty(ToolButton)) { bool AllowContentAutoLoad = false; if (ToolButton != ButtonCancel) { // // Save the form changes // AllowContentAutoLoad = cp.Site.GetBoolean("AllowContentAutoLoad", true); cp.Site.SetProperty("AllowContentAutoLoad", "false"); // // ----- Save the input // RecordCount = GenericController.encodeInteger(cp.Doc.GetInteger("dtfaRecordCount")); if (RecordCount > 0) { int RecordPointer = 0; for (RecordPointer = 0; RecordPointer < RecordCount; RecordPointer++) { // string formFieldName = cp.Doc.GetText("dtfaName." + RecordPointer); CPContentBaseClass.FieldTypeIdEnum formFieldTypeId = (CPContentBaseClass.FieldTypeIdEnum)cp.Doc.GetInteger("dtfaType." + RecordPointer); formFieldId = GenericController.encodeInteger(cp.Doc.GetInteger("dtfaID." + RecordPointer)); bool formFieldInherited = cp.Doc.GetBoolean("dtfaInherited." + RecordPointer); // // problem - looking for the name in the Db using the form's name, but it could have changed. // have to look field up by id // foreach (KeyValuePair <string, Processor.Models.Domain.ContentFieldMetadataModel> cdefFieldKvp in contentMetadata.fields) { if (cdefFieldKvp.Value.id == formFieldId) { // // Field was found in CDef // if (cdefFieldKvp.Value.inherited && (!formFieldInherited)) { // // Was inherited, but make a copy of the field // using (var CSTarget = new CsModel(core)) { if (CSTarget.insert("Content Fields")) { using (var CSSource = new CsModel(core)) { if (CSSource.openRecord("Content Fields", formFieldId)) { CSSource.copyRecord(CSTarget); } } formFieldId = CSTarget.getInteger("ID"); CSTarget.set("ContentID", ContentId); } CSTarget.close(); } ReloadCDef = true; } else if ((!cdefFieldKvp.Value.inherited) && (formFieldInherited)) { // // Was a field, make it inherit from it's parent MetadataController.deleteContentRecord(core, "Content Fields", formFieldId); ReloadCDef = true; } else if ((!cdefFieldKvp.Value.inherited) && (!formFieldInherited)) { // // not inherited, save the field values and mark for a reload // { if (formFieldName.IndexOf(" ") != -1) { // // remoave spaces from new name // StatusMessage = StatusMessage + "<LI>Field [" + formFieldName + "] was renamed [" + GenericController.strReplace(formFieldName, " ", "") + "] because the field name can not include spaces.</LI>"; formFieldName = GenericController.strReplace(formFieldName, " ", ""); } // string SQL = null; // if ((!string.IsNullOrEmpty(formFieldName)) && ((int)formFieldTypeId != 0) && ((cdefFieldKvp.Value.nameLc == "") || (cdefFieldKvp.Value.fieldTypeId == 0))) { // // Create Db field, Field is good but was not before // core.db.createSQLTableField(contentMetadata.tableName, formFieldName, formFieldTypeId); StatusMessage = StatusMessage + "<LI>Field [" + formFieldName + "] was saved to this content definition and a database field was created in [" + contentMetadata.tableName + "].</LI>"; } else if ((string.IsNullOrEmpty(formFieldName)) || ((int)formFieldTypeId == 0)) { // // name blank or type=0 - do nothing but tell them // if (string.IsNullOrEmpty(formFieldName) && ((int)formFieldTypeId == 0)) { ErrorMessage += "<LI>Field number " + (RecordPointer + 1) + " was saved to this content definition but no database field was created because a name and field type are required.</LI>"; } else if (formFieldName == "unnamedfield" + formFieldId.ToString()) { ErrorMessage += "<LI>Field number " + (RecordPointer + 1) + " was saved to this content definition but no database field was created because a field name is required.</LI>"; } else { ErrorMessage += "<LI>Field [" + formFieldName + "] was saved to this content definition but no database field was created because a field type are required.</LI>"; } } else if ((formFieldName == cdefFieldKvp.Value.nameLc) && (formFieldTypeId != cdefFieldKvp.Value.fieldTypeId)) { // // Field Type changed, must be done manually // ErrorMessage += "<LI>Field [" + formFieldName + "] changed type from [" + DbBaseModel.getRecordName <ContentFieldTypeModel>(core.cpParent, (int)cdefFieldKvp.Value.fieldTypeId) + "] to [" + DbBaseModel.getRecordName <ContentFieldTypeModel>(core.cpParent, (int)formFieldTypeId) + "]. This may have caused a problem converting content.</LI>"; int DataSourceTypeId = core.db.getDataSourceType(); switch (DataSourceTypeId) { case DataSourceTypeODBCMySQL: SQL = "alter table " + contentMetadata.tableName + " change " + cdefFieldKvp.Value.nameLc + " " + cdefFieldKvp.Value.nameLc + " " + core.db.getSQLAlterColumnType(formFieldTypeId) + ";"; break; default: SQL = "alter table " + contentMetadata.tableName + " alter column " + cdefFieldKvp.Value.nameLc + " " + core.db.getSQLAlterColumnType(formFieldTypeId) + ";"; break; } core.db.executeNonQuery(SQL); } SQL = "Update ccFields" + " Set name=" + DbController.encodeSQLText(formFieldName) + ",type=" + (int)formFieldTypeId + ",caption=" + DbController.encodeSQLText(cp.Doc.GetText("dtfaCaption." + RecordPointer)) + ",DefaultValue=" + DbController.encodeSQLText(cp.Doc.GetText("dtfaDefaultValue." + RecordPointer)) + ",EditSortPriority=" + DbController.encodeSQLText(GenericController.encodeText(cp.Doc.GetInteger("dtfaEditSortPriority." + RecordPointer))) + ",Active=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaActive." + RecordPointer)) + ",ReadOnly=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaReadOnly." + RecordPointer)) + ",Authorable=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaAuthorable." + RecordPointer)) + ",Required=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaRequired." + RecordPointer)) + ",UniqueName=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaUniqueName." + RecordPointer)) + ",TextBuffered=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaTextBuffered." + RecordPointer)) + ",Password="******"dtfaPassword." + RecordPointer)) + ",HTMLContent=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaHTMLContent." + RecordPointer)) + ",EditTab=" + DbController.encodeSQLText(cp.Doc.GetText("dtfaEditTab." + RecordPointer)) + ",Scramble=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaScramble." + RecordPointer)) + ""; if (core.session.isAuthenticatedAdmin()) { SQL += ",adminonly=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaAdminOnly." + RecordPointer)); } if (core.session.isAuthenticatedDeveloper()) { SQL += ",DeveloperOnly=" + DbController.encodeSQLBoolean(cp.Doc.GetBoolean("dtfaDeveloperOnly." + RecordPointer)); } SQL += " where ID=" + formFieldId; core.db.executeNonQuery(SQL); ReloadCDef = true; } } break; } } } } core.cache.invalidateAll(); core.clearMetaData(); } if (ToolButton == ButtonAdd) { // // ----- Insert a blank Field var defaultValues = ContentMetadataModel.getDefaultValueDict(core, ContentFieldModel.tableMetadata.contentName); var field = ContentFieldModel.addDefault <ContentFieldModel>(core.cpParent, defaultValues); field.name = "unnamedField" + field.id.ToString(); field.contentId = ContentId; field.editSortPriority = 0; field.save(core.cpParent); ReloadCDef = true; } // // ----- Button Reload CDef if (ToolButton == ButtonSaveandInvalidateCache) { core.cache.invalidateAll(); core.clearMetaData(); } // // ----- Restore Content Autoload site property // if (AllowContentAutoLoad) { cp.Site.SetProperty("AllowContentAutoLoad", AllowContentAutoLoad.ToString()); } // // ----- Cancel or Save, reload CDef and go // if ((ToolButton == ButtonCancel) || (ToolButton == ButtonOK)) { // // ----- Exit back to menu // return(core.webServer.redirect(core.appConfig.adminRoute, "Tool-ConfigureContentEdit, ok or cancel button, go to root.")); } } } // // Print Output string description = "" + HtmlController.p("Use this tool to add or modify content definition fields and the underlying sql table fields.") + ((ContentId.Equals(0)) ? "" : "" + HtmlController.ul("" + HtmlController.li(HtmlController.a("Edit Content", "?aa=0&cid=3&id=" + ContentId + "&tx=&ad=0&asf=1&af=4", "nav-link btn btn-primary"), "nav-item mr-1") + HtmlController.li(HtmlController.a("Edit Records", "?cid=" + ContentId, "nav-link btn btn-primary"), "nav-item mr-1") + HtmlController.li(HtmlController.a("Select Different Fields", "?af=105", "nav-link btn btn-primary"), "nav-item mr-1") , "nav") ); StringBuilderLegacyController Stream = new StringBuilderLegacyController(); Stream.add(AdminUIController.getHeaderTitleDescription("Manage Admin Edit Fields", description)); // // -- status of last operation if (!string.IsNullOrEmpty(StatusMessage)) { Stream.add(AdminUIController.getToolFormRow(core, "<UL>" + StatusMessage + "</UL>")); } // // -- errors with last operations if (!string.IsNullOrEmpty(ErrorMessage)) { Stream.add(HtmlController.div("There was a problem saving these changes" + "<UL>" + ErrorMessage + "</UL>", "ccError")); } if (ReloadCDef) { contentMetadata = Processor.Models.Domain.ContentMetadataModel.create(core, ContentId, true, true); } string ButtonList = ButtonCancel + "," + ButtonSelect; if (ContentId == 0) { // // content tables that have edit forms to Configure bool isEmptyList = false; Stream.add(AdminUIController.getToolFormInputRow(core, "Select a Content Definition to Configure", AdminUIEditorController.getLookupContentEditor(core, RequestNameToolContentId, ContentId, ContentMetadataModel.getContentId(core, "Content"), ref isEmptyList, false, "", "", false, ""))); } else { // // Configure edit form Stream.add(HtmlController.inputHidden(RequestNameToolContentId, ContentId)); Stream.add(core.html.getPanelTop()); ButtonList = ButtonCancel + "," + ButtonSave + "," + ButtonOK + "," + ButtonAdd; // // Get a new copy of the content definition // Stream.add(SpanClassAdminNormal + "<P><B>" + contentMetadata.name + "</b></P>"); Stream.add("<table border=\"0\" cellpadding=\"1\" cellspacing=\"1\" width=\"100%\">"); // int ParentContentId = contentMetadata.parentId; bool AllowCDefInherit = false; Processor.Models.Domain.ContentMetadataModel ParentCDef = null; if (ParentContentId == -1) { AllowCDefInherit = false; } else { AllowCDefInherit = true; string ParentContentName = MetadataController.getContentNameByID(core, ParentContentId); ParentCDef = Processor.Models.Domain.ContentMetadataModel.create(core, ParentContentId, true, true); } bool NeedFootNote1 = false; bool NeedFootNote2 = false; if (contentMetadata.fields.Count > 0) { // // -- header row Stream.add("<tr>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\"></td>"); if (!AllowCDefInherit) { Stream.add("<td valign=\"bottom\" width=\"100\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b><br>Inherited*</b></span></td>"); NeedFootNote1 = true; } else { Stream.add("<td valign=\"bottom\" width=\"100\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b><br>Inherited</b></span></td>"); } Stream.add("<td valign=\"bottom\" width=\"100\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b><br>Field</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"100\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b><br>Caption</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"100\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b><br>Edit Tab</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"100\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b><br>Default</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b><br>Type</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b>Edit<br>Order</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b><br>Active</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b>Read<br>Only</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b><br>Auth</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b><br>Req</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b><br>Unique</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b>Text<br>Buffer</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b><br>Pass</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "<b>Text<br>Scrm</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b><br>HTML</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b>Admin<br>Only</b></span></td>"); Stream.add("<td valign=\"bottom\" width=\"50\" class=\"ccPanelInput\" align=\"left\">" + SpanClassAdminSmall + "<b>Dev<br>Only</b></span></td>"); Stream.add("</tr>"); RecordCount = 0; // // Build a select template for Type // string TypeSelectTemplate = core.html.selectFromContent("menuname", -1, "Content Field Types", "", "unknown"); // // Index the sort order // List <FieldSortClass> fieldList = new List <FieldSortClass>(); int FieldCount = contentMetadata.fields.Count; foreach (var keyValuePair in contentMetadata.fields) { FieldSortClass fieldSort = new FieldSortClass(); string sortOrder = ""; fieldSort.field = keyValuePair.Value; sortOrder = ""; if (fieldSort.field.active) { sortOrder += "0"; } else { sortOrder += "1"; } if (fieldSort.field.authorable) { sortOrder += "0"; } else { sortOrder += "1"; } sortOrder += fieldSort.field.editTabName + getIntegerString(fieldSort.field.editSortPriority, 10) + getIntegerString(fieldSort.field.id, 10); fieldSort.sort = sortOrder; fieldList.Add(fieldSort); } fieldList.Sort((p1, p2) => p1.sort.CompareTo(p2.sort)); StringBuilderLegacyController StreamValidRows = new StringBuilderLegacyController(); var contentFieldsCdef = Processor.Models.Domain.ContentMetadataModel.createByUniqueName(core, "content fields"); foreach (FieldSortClass fieldsort in fieldList) { StringBuilderLegacyController streamRow = new StringBuilderLegacyController(); bool rowValid = true; // // If Field has name and type, it is locked and can not be changed // bool FieldLocked = (fieldsort.field.nameLc != "") && (fieldsort.field.fieldTypeId != 0); // // put the menu into the current menu format // formFieldId = fieldsort.field.id; streamRow.add(HtmlController.inputHidden("dtfaID." + RecordCount, formFieldId)); streamRow.add("<tr>"); // // edit button // streamRow.add("<td class=\"ccPanelInput\" align=\"left\">" + AdminUIController.getRecordEditAnchorTag(core, contentFieldsCdef, formFieldId) + "</td>"); // // Inherited // if (!AllowCDefInherit) { // // no parent // streamRow.add("<td class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "False</span></td>"); } else if (fieldsort.field.inherited) { // // inherited property // streamRow.add("<td class=\"ccPanelInput\" align=\"center\">" + HtmlController.checkbox("dtfaInherited." + RecordCount, fieldsort.field.inherited) + "</td>"); } else { Processor.Models.Domain.ContentFieldMetadataModel parentField = null; // // CDef has a parent, but the field is non-inherited, test for a matching Parent Field // if (ParentCDef == null) { foreach (KeyValuePair <string, Processor.Models.Domain.ContentFieldMetadataModel> kvp in ParentCDef.fields) { if (kvp.Value.nameLc == fieldsort.field.nameLc) { parentField = kvp.Value; break; } } } if (parentField == null) { streamRow.add("<td class=\"ccPanelInput\" align=\"center\">" + SpanClassAdminSmall + "False**</span></td>"); NeedFootNote2 = true; } else { streamRow.add("<td class=\"ccPanelInput\" align=\"center\">" + HtmlController.checkbox("dtfaInherited." + RecordCount, fieldsort.field.inherited) + "</td>"); } } // // name // bool tmpValue = string.IsNullOrEmpty(fieldsort.field.nameLc); rowValid = rowValid && !tmpValue; streamRow.add("<td class=\"ccPanelInput\" align=\"left\"><nobr>"); if (fieldsort.field.inherited) { streamRow.add(SpanClassAdminSmall + fieldsort.field.nameLc + " </SPAN>"); } else if (FieldLocked) { streamRow.add(SpanClassAdminSmall + fieldsort.field.nameLc + " </SPAN><input type=hidden name=dtfaName." + RecordCount + " value=\"" + fieldsort.field.nameLc + "\">"); } else { streamRow.add(HtmlController.inputText_Legacy(core, "dtfaName." + RecordCount, fieldsort.field.nameLc, 1, 10)); } streamRow.add("</nobr></td>"); // // caption // streamRow.add("<td class=\"ccPanelInput\" align=\"left\"><nobr>"); if (fieldsort.field.inherited) { streamRow.add(SpanClassAdminSmall + fieldsort.field.caption + "</SPAN>"); } else { streamRow.add(HtmlController.inputText_Legacy(core, "dtfaCaption." + RecordCount, fieldsort.field.caption, 1, 10)); } streamRow.add("</nobr></td>"); // // Edit Tab // streamRow.add("<td class=\"ccPanelInput\" align=\"left\"><nobr>"); if (fieldsort.field.inherited) { streamRow.add(SpanClassAdminSmall + fieldsort.field.editTabName + "</SPAN>"); } else { streamRow.add(HtmlController.inputText_Legacy(core, "dtfaEditTab." + RecordCount, fieldsort.field.editTabName, 1, 10)); } streamRow.add("</nobr></td>"); // // default // streamRow.add("<td class=\"ccPanelInput\" align=\"left\"><nobr>"); if (fieldsort.field.inherited) { streamRow.add(SpanClassAdminSmall + GenericController.encodeText(fieldsort.field.defaultValue) + "</SPAN>"); } else { streamRow.add(HtmlController.inputText_Legacy(core, "dtfaDefaultValue." + RecordCount, GenericController.encodeText(fieldsort.field.defaultValue), 1, 10)); } streamRow.add("</nobr></td>"); // // type // rowValid = rowValid && (fieldsort.field.fieldTypeId > 0); streamRow.add("<td class=\"ccPanelInput\" align=\"left\"><nobr>"); if (fieldsort.field.inherited) { using (var csData = new CsModel(core)) { csData.openRecord("Content Field Types", (int)fieldsort.field.fieldTypeId); if (!csData.ok()) { streamRow.add(SpanClassAdminSmall + "Unknown[" + fieldsort.field.fieldTypeId + "]</SPAN>"); } else { streamRow.add(SpanClassAdminSmall + csData.getText("Name") + "</SPAN>"); } } } else if (FieldLocked) { streamRow.add(DbBaseModel.getRecordName <ContentFieldTypeModel>(core.cpParent, (int)fieldsort.field.fieldTypeId) + HtmlController.inputHidden("dtfaType." + RecordCount, (int)fieldsort.field.fieldTypeId)); } else { string TypeSelect = TypeSelectTemplate; TypeSelect = GenericController.strReplace(TypeSelect, "menuname", "dtfaType." + RecordCount, 1, 99, 1); TypeSelect = GenericController.strReplace(TypeSelect, "=\"" + fieldsort.field.fieldTypeId + "\"", "=\"" + fieldsort.field.fieldTypeId + "\" selected", 1, 99, 1); streamRow.add(TypeSelect); } streamRow.add("</nobr></td>"); // // sort priority // streamRow.add("<td class=\"ccPanelInput\" align=\"left\"><nobr>"); if (fieldsort.field.inherited) { streamRow.add(SpanClassAdminSmall + fieldsort.field.editSortPriority + "</SPAN>"); } else { streamRow.add(HtmlController.inputText_Legacy(core, "dtfaEditSortPriority." + RecordCount, fieldsort.field.editSortPriority.ToString(), 1, 10)); } streamRow.add("</nobr></td>"); // // active // streamRow.add(configureEdit_CheckBox("dtfaActive." + RecordCount, fieldsort.field.active, fieldsort.field.inherited)); // // read only // streamRow.add(configureEdit_CheckBox("dtfaReadOnly." + RecordCount, fieldsort.field.readOnly, fieldsort.field.inherited)); // // authorable // streamRow.add(configureEdit_CheckBox("dtfaAuthorable." + RecordCount, fieldsort.field.authorable, fieldsort.field.inherited)); // // required // streamRow.add(configureEdit_CheckBox("dtfaRequired." + RecordCount, fieldsort.field.required, fieldsort.field.inherited)); // // UniqueName // streamRow.add(configureEdit_CheckBox("dtfaUniqueName." + RecordCount, fieldsort.field.uniqueName, fieldsort.field.inherited)); // // text buffered // streamRow.add(configureEdit_CheckBox("dtfaTextBuffered." + RecordCount, fieldsort.field.textBuffered, fieldsort.field.inherited)); // // password // streamRow.add(configureEdit_CheckBox("dtfaPassword." + RecordCount, fieldsort.field.password, fieldsort.field.inherited)); // // scramble // streamRow.add(configureEdit_CheckBox("dtfaScramble." + RecordCount, fieldsort.field.scramble, fieldsort.field.inherited)); // // HTML Content // streamRow.add(configureEdit_CheckBox("dtfaHTMLContent." + RecordCount, fieldsort.field.htmlContent, fieldsort.field.inherited)); // // Admin Only // if (core.session.isAuthenticatedAdmin()) { streamRow.add(configureEdit_CheckBox("dtfaAdminOnly." + RecordCount, fieldsort.field.adminOnly, fieldsort.field.inherited)); } // // Developer Only // if (core.session.isAuthenticatedDeveloper()) { streamRow.add(configureEdit_CheckBox("dtfaDeveloperOnly." + RecordCount, fieldsort.field.developerOnly, fieldsort.field.inherited)); } // streamRow.add("</tr>"); RecordCount = RecordCount + 1; // // rows are built - put the blank rows at the top // if (!rowValid) { Stream.add(streamRow.text); } else { StreamValidRows.add(streamRow.text); } } Stream.add(StreamValidRows.text); Stream.add(HtmlController.inputHidden("dtfaRecordCount", RecordCount)); } Stream.add("</table>"); // Stream.add(core.html.getPanelBottom()); if (NeedFootNote1) { Stream.add("<br>*Field Inheritance is not allowed because this Content Definition has no parent."); } if (NeedFootNote2) { Stream.add("<br>**This field can not be inherited because the Parent Content Definition does not have a field with the same name."); } } Stream.add(HtmlController.inputHidden("ReloadCDef", ReloadCDef)); // // -- assemble form return(AdminUIController.getToolForm(core, Stream.text, ButtonList)); } catch (Exception ex) { LogController.logError(core, ex); return(toolExceptionMessage); } }
// //============================================================================= // Find and Replace launch tool //============================================================================= // public static string get(CoreController core) { string result = ""; try { StringBuilderLegacyController Stream = new StringBuilderLegacyController(); // Stream.add(AdminUIController.getHeaderTitleDescription("Find and Replace", "This tool runs a find and replace operation on content throughout the site.")); // // Process the form // string Button = core.docProperties.getText("button"); bool IsDeveloper = core.session.isAuthenticatedDeveloper(); int RowPtr = 0; string CDefList = ""; string FindText = ""; string ReplaceText = ""; string lcName = null; if (Button == ButtonFindAndReplace) { int RowCnt = core.docProperties.getInteger("CDefRowCnt"); if (RowCnt > 0) { for (RowPtr = 0; RowPtr < RowCnt; RowPtr++) { if (core.docProperties.getBoolean("Cdef" + RowPtr)) { lcName = GenericController.toLCase(core.docProperties.getText("CDefName" + RowPtr)); if (IsDeveloper || (lcName == "page content") || (lcName == "copy content") || (lcName == "page templates")) { CDefList = CDefList + "," + lcName; } } } if (!string.IsNullOrEmpty(CDefList)) { CDefList = CDefList.Substring(1); } FindText = core.docProperties.getText("FindText"); ReplaceText = core.docProperties.getText("ReplaceText"); //string QS = "app=" + encodeNvaArgument(core.appConfig.name) + "&FindText=" + encodeNvaArgument(FindText) + "&ReplaceText=" + encodeNvaArgument(ReplaceText) + "&CDefNameList=" + encodeNvaArgument(CDefList); var cmdDetail = new TaskModel.CmdDetailClass { addonId = 0, addonName = "GetForm_FindAndReplace", args = new System.Collections.Generic.Dictionary <string, string> { { "app", core.appConfig.name }, { "FindText", FindText }, { "ReplaceText", ReplaceText }, { "CDefNameList", CDefList } } }; TaskSchedulerController.addTaskToQueue(core, cmdDetail, false); Stream.add("Find and Replace has been requested for content definitions [" + CDefList + "], finding [" + FindText + "] and replacing with [" + ReplaceText + "]"); } } else { CDefList = "Page Content,Copy Content,Page Templates"; FindText = ""; ReplaceText = ""; } // // Display form // int FindRows = core.docProperties.getInteger("SQLRows"); if (FindRows == 0) { FindRows = core.userProperty.getInteger("FindAndReplaceFindRows", 1); } else { core.userProperty.setProperty("FindAndReplaceFindRows", FindRows.ToString()); } int ReplaceRows = core.docProperties.getInteger("ReplaceRows"); if (ReplaceRows == 0) { ReplaceRows = core.userProperty.getInteger("FindAndReplaceReplaceRows", 1); } else { core.userProperty.setProperty("FindAndReplaceReplaceRows", ReplaceRows.ToString()); } // Stream.add("<div>Find</div>"); Stream.add("<TEXTAREA NAME=\"FindText\" ROWS=\"" + FindRows + "\" ID=\"FindText\" STYLE=\"width: 800px;\">" + FindText + "</TEXTAREA>"); Stream.add(" <INPUT TYPE=\"Text\" TabIndex=-1 NAME=\"FindTextRows\" SIZE=\"3\" VALUE=\"" + FindRows + "\" ID=\"\" onchange=\"FindText.rows=FindTextRows.value; return true\"> Rows"); Stream.add("<br><br>"); // Stream.add("<div>Replace it with</div>"); Stream.add("<TEXTAREA NAME=\"ReplaceText\" ROWS=\"" + ReplaceRows + "\" ID=\"ReplaceText\" STYLE=\"width: 800px;\">" + ReplaceText + "</TEXTAREA>"); Stream.add(" <INPUT TYPE=\"Text\" TabIndex=-1 NAME=\"ReplaceTextRows\" SIZE=\"3\" VALUE=\"" + ReplaceRows + "\" ID=\"\" onchange=\"ReplaceText.rows=ReplaceTextRows.value; return true\"> Rows"); Stream.add("<br><br>"); string TopHalf = ""; string BottomHalf = ""; // using (var csData = new CsModel(core)) { csData.open("Content"); while (csData.ok()) { string RecordName = csData.getText("Name"); lcName = GenericController.toLCase(RecordName); if (IsDeveloper || (lcName == "page content") || (lcName == "copy content") || (lcName == "page templates")) { int RecordId = csData.getInteger("ID"); if (GenericController.strInstr(1, "," + CDefList + ",", "," + RecordName + ",") != 0) { TopHalf = TopHalf + "<div>" + HtmlController.checkbox("Cdef" + RowPtr, true) + HtmlController.inputHidden("CDefName" + RowPtr, RecordName) + " " + csData.getText("Name") + "</div>"; } else { BottomHalf = BottomHalf + "<div>" + HtmlController.checkbox("Cdef" + RowPtr, false) + HtmlController.inputHidden("CDefName" + RowPtr, RecordName) + " " + csData.getText("Name") + "</div>"; } } csData.goNext(); RowPtr += 1; } } Stream.add(TopHalf + BottomHalf + HtmlController.inputHidden("CDefRowCnt", RowPtr)); // result = AdminUIController.getToolForm(core, Stream.text, ButtonCancel + "," + ButtonFindAndReplace); } catch (Exception ex) { LogController.logError(core, ex); } return(result); }
// //======================================================================== // //======================================================================== // public static string get(CoreController core) { string tempGetForm_Downloads = null; try { // string Button = core.docProperties.getText(RequestNameButton); if (Button == ButtonCancel) { return(core.webServer.redirect("/" + core.appConfig.adminRoute, "Downloads, Cancel Button Pressed")); } string ButtonListLeft = ""; string ButtonListRight = ""; string Content = ""; // if (!core.session.isAuthenticatedAdmin()) { // // Must be a developer // ButtonListLeft = ButtonCancel; ButtonListRight = ""; Content = Content + AdminUIController.getFormBodyAdminOnly(); } else { int ContentId = core.docProperties.getInteger("ContentID"); string Format = core.docProperties.getText("Format"); // // Process Requests // if (!string.IsNullOrEmpty(Button)) { int RowCnt = 0; switch (Button) { case ButtonDelete: RowCnt = core.docProperties.getInteger("RowCnt"); if (RowCnt > 0) { int RowPtr = 0; for (RowPtr = 0; RowPtr < RowCnt; RowPtr++) { if (core.docProperties.getBoolean("Row" + RowPtr)) { DownloadModel.delete <DownloadModel>(core.cpParent, core.docProperties.getInteger("RowID" + RowPtr)); } } } break; } } // // Build Tab0 // string RQS = core.doc.refreshQueryString; int PageSize = core.docProperties.getInteger(RequestNamePageSize); if (PageSize == 0) { PageSize = 50; } int PageNumber = core.docProperties.getInteger(RequestNamePageNumber); if (PageNumber == 0) { PageNumber = 1; } string AdminURL = "/" + core.appConfig.adminRoute; int TopCount = PageNumber * PageSize; // const int ColumnCnt = 5; // // Setup Headings // string[] ColCaption = new string[ColumnCnt + 1]; string[] ColAlign = new string[ColumnCnt + 1]; string[] ColWidth = new string[ColumnCnt + 1]; string[,] Cells = new string[PageSize + 1, ColumnCnt + 1]; int ColumnPtr = 0; // ColCaption[ColumnPtr] = " "; ColAlign[ColumnPtr] = "center"; ColWidth[ColumnPtr] = "10px"; ColumnPtr = ColumnPtr + 1; // ColCaption[ColumnPtr] = "Name"; ColAlign[ColumnPtr] = "left"; ColWidth[ColumnPtr] = ""; ColumnPtr = ColumnPtr + 1; // ColCaption[ColumnPtr] = "For"; ColAlign[ColumnPtr] = "left"; ColWidth[ColumnPtr] = "200px"; ColumnPtr = ColumnPtr + 1; // ColCaption[ColumnPtr] = "Requested"; ColAlign[ColumnPtr] = "left"; ColWidth[ColumnPtr] = "200px"; ColumnPtr = ColumnPtr + 1; // ColCaption[ColumnPtr] = "File"; ColAlign[ColumnPtr] = "Left"; ColWidth[ColumnPtr] = "100px"; ColumnPtr = ColumnPtr + 1; // // Get Downloads available // int DataRowCount = 0; var downloadList = DbBaseModel.createList <DownloadModel>(core.cpParent, "", "id desc", PageSize, PageNumber); int RowPointer = 0; if (downloadList.Count == 0) { Cells[0, 1] = "There are no download requests"; RowPointer = 1; } else { RowPointer = 0; DataRowCount = DbBaseModel.getCount <DownloadModel>(core.cpParent); string LinkPrefix = "<a href=\"" + core.appConfig.cdnFileUrl; string LinkSuffix = "\" target=_blank>Download</a>"; foreach (var download in downloadList) { if (RowPointer >= PageSize) { break; } var requestedBy = DbBaseModel.create <PersonModel>(core.cpParent, download.requestedBy); Cells[RowPointer, 0] = HtmlController.checkbox("Row" + RowPointer) + HtmlController.inputHidden("RowID" + RowPointer, download.id); Cells[RowPointer, 1] = download.name; Cells[RowPointer, 2] = (requestedBy == null) ? "unknown" : requestedBy.name; Cells[RowPointer, 3] = download.dateRequested.ToString(); if (string.IsNullOrEmpty(download.resultMessage)) { Cells[RowPointer, 4] = "\r\n<div id=\"pending" + RowPointer + "\">Pending <img src=\"/ccLib/images/ajax-loader-small.gif\" width=16 height=16></div>"; } else if (!string.IsNullOrEmpty(download.filename.filename)) { Cells[RowPointer, 4] = "<div id=\"pending" + RowPointer + "\">" + LinkPrefix + download.filename.filename + LinkSuffix + "</div>"; } else { Cells[RowPointer, 4] = "<div id=\"pending" + RowPointer + "\">error</div>"; } RowPointer = RowPointer + 1; } } StringBuilderLegacyController Tab0 = new StringBuilderLegacyController(); Tab0.add(HtmlController.inputHidden("RowCnt", RowPointer)); string PreTableCopy = ""; string PostTableCopy = ""; string Cell = AdminUIController.getReport(core, RowPointer, ColCaption, ColAlign, ColWidth, Cells, PageSize, PageNumber, PreTableCopy, PostTableCopy, DataRowCount, "ccPanel"); Tab0.add(Cell); Content = Tab0.text; ButtonListLeft = ButtonCancel + "," + ButtonRefresh + "," + ButtonDelete; ButtonListRight = ""; Content = Content + HtmlController.inputHidden(rnAdminSourceForm, AdminFormDownloads); } // string Caption = "Download Manager"; string Description = "" + "<p>The Download Manager holds all downloads requested from anywhere on the website. It also provides tools to request downloads from any Content.</p>" + "<p>To add a new download of any content in Contensive, click Export on the filter tab of the content listing page. To add a new download from a SQL statement, use Custom Reports under Reports on the Navigator.</p>"; int ContentPadding = 0; string ContentSummary = ""; tempGetForm_Downloads = AdminUIController.getToolBody(core, Caption, ButtonListLeft, ButtonListRight, true, true, Description, ContentSummary, ContentPadding, Content); // core.html.addTitle(Caption); } catch (Exception ex) { LogController.logError(core, ex); } return(tempGetForm_Downloads); }
// //======================================================================== // Print the root form // public static string getForm_Root(CoreController core) { string returnHtml = ""; try { StringBuilderLegacyController Stream = new StringBuilderLegacyController(); int addonId = 0; string AddonIDText = null; // // This is really messy -- there must be a better way // addonId = 0; if (core.session.visit.id == core.docProperties.getInteger(RequestNameDashboardReset)) { //$$$$$ cache this using (var csData = new CsModel(core)) { csData.open(AddonModel.tableMetadata.contentName, "ccguid=" + DbController.encodeSQLText(addonGuidDashboard)); if (csData.ok()) { addonId = csData.getInteger("id"); core.siteProperties.setProperty("AdminRootAddonID", GenericController.encodeText(addonId)); } } } if (addonId == 0) { // // Get AdminRootAddon // AddonIDText = core.siteProperties.getText("AdminRootAddonID", ""); if (string.IsNullOrEmpty(AddonIDText)) { // // the desktop is likely unset, auto set it to dashboard // addonId = -1; } else if (AddonIDText == "0") { // // the desktop has been set to none - go with default desktop // addonId = 0; } else if (AddonIDText.isNumeric()) { // // it has been set to a non-zero number // addonId = GenericController.encodeInteger(AddonIDText); // // Verify it so there is no error when it runs if (DbBaseModel.create <AddonModel>(core.cpParent, addonId) == null) { addonId = -1; core.siteProperties.setProperty("AdminRootAddonID", ""); } } if (addonId == -1) { // // This has never been set, try to get the dashboard ID var addon = DbBaseModel.create <AddonModel>(core.cpParent, addonGuidDashboard); if (addon != null) { addonId = addon.id; core.siteProperties.setProperty("AdminRootAddonID", addonId); } } } if (addonId != 0) { // // Display the Addon // if (!core.doc.userErrorList.Count.Equals(0)) { returnHtml = returnHtml + "<div style=\"clear:both;margin-top:20px;\"> </div>" + "<div style=\"clear:both;margin-top:20px;\">" + Processor.Controllers.ErrorController.getUserError(core) + "</div>"; } returnHtml += core.addon.execute(DbBaseModel.create <AddonModel>(core.cpParent, addonId), new BaseClasses.CPUtilsBaseClass.addonExecuteContext { addonType = BaseClasses.CPUtilsBaseClass.addonContext.ContextAdmin, errorContextMessage = "executing addon id:" + addonId + " set as Admin Root addon" }); } if (string.IsNullOrEmpty(returnHtml)) { // // Nothing Displayed, show default root page // returnHtml = returnHtml + Environment.NewLine + "<div style=\"padding:20px;height:450px\">" + Environment.NewLine + "<div><a href=http://www.Contensive.com target=_blank><img style=\"border:1px solid #000;\" src=\"" + cdnPrefix + "images/ContensiveAdminLogo.GIF\" border=0 ></A></div>" + Environment.NewLine + "<div><strong>Contensive/" + CoreController.codeVersion() + "</strong></div>" + Environment.NewLine + "<div style=\"clear:both;height:18px;margin-top:10px\"><div style=\"float:left;width:200px;\">Domain Name</div><div style=\"float:left;\">" + core.webServer.requestDomain + "</div></div>" + Environment.NewLine + "<div style=\"clear:both;height:18px;\"><div style=\"float:left;width:200px;\">Login Member Name</div><div style=\"float:left;\">" + core.session.user.name + "</div></div>" + Environment.NewLine + "<div style=\"clear:both;height:18px;\"><div style=\"float:left;width:200px;\">Quick Reports</div><div style=\"float:left;\"><a Href=\"?" + rnAdminForm + "=" + AdminFormQuickStats + "\">Real-Time Activity</A></div></div>" + Environment.NewLine + "<div style=\"clear:both;height:18px;\"><div style=\"float:left;width:200px;\"><a Href=\"?" + RequestNameDashboardReset + "=" + core.session.visit.id + "\">Run Dashboard</A></div></div>" + Environment.NewLine + "<div style=\"clear:both;height:18px;\"><div style=\"float:left;width:200px;\"><a Href=\"?addonguid=" + addonGuidAddonManager + "\">Add-on Manager</A></div></div>"; // if (!core.doc.userErrorList.Count.Equals(0)) { returnHtml = returnHtml + "<div style=\"clear:both;margin-top:20px;\"> </div>" + "<div style=\"clear:both;margin-top:20px;\">" + Processor.Controllers.ErrorController.getUserError(core) + "</div>"; } // returnHtml = returnHtml + Environment.NewLine + "</div>" + ""; } } catch (Exception ex) { LogController.logError(core, ex); throw; } return(returnHtml); }